@@ -57,22 +57,29 @@ public static void getIndexMetadata(Client client, Index index, long mappingVers
57
57
}
58
58
client .admin ().cluster ().state (request , ActionListener .wrap (
59
59
response -> {
60
- if (response .getState () == null ) {
60
+ if (response .getState () == null ) { // timeout on wait_for_metadata_version
61
61
assert metadataVersion > 0 : metadataVersion ;
62
- throw new IllegalStateException ("timeout to get cluster state with" +
63
- " metadata version [" + metadataVersion + "], mapping version [" + mappingVersion + "]" );
62
+ if (timeoutSupplier .get ().nanos () < 0 ) {
63
+ listener .onFailure (new IllegalStateException ("timeout to get cluster state with" +
64
+ " metadata version [" + metadataVersion + "], mapping version [" + mappingVersion + "]" ));
65
+ } else {
66
+ getIndexMetadata (client , index , mappingVersion , metadataVersion , timeoutSupplier , listener );
67
+ }
68
+ } else {
69
+ final MetaData metaData = response .getState ().metaData ();
70
+ final IndexMetaData indexMetaData = metaData .getIndexSafe (index );
71
+ if (indexMetaData .getMappingVersion () >= mappingVersion ) {
72
+ listener .onResponse (indexMetaData );
73
+ return ;
74
+ }
75
+ if (timeoutSupplier .get ().nanos () < 0 ) {
76
+ listener .onFailure (new IllegalStateException (
77
+ "timeout to get cluster state with mapping version [" + mappingVersion + "]" ));
78
+ } else {
79
+ // ask for the next version.
80
+ getIndexMetadata (client , index , mappingVersion , metaData .version () + 1 , timeoutSupplier , listener );
81
+ }
64
82
}
65
- final MetaData metaData = response .getState ().metaData ();
66
- final IndexMetaData indexMetaData = metaData .getIndexSafe (index );
67
- if (indexMetaData .getMappingVersion () >= mappingVersion ) {
68
- listener .onResponse (indexMetaData );
69
- return ;
70
- }
71
- if (timeoutSupplier .get ().nanos () < 0 ) {
72
- throw new IllegalStateException ("timeout to get cluster state with mapping version [" + mappingVersion + "]" );
73
- }
74
- // ask for the next version.
75
- getIndexMetadata (client , index , mappingVersion , metaData .version () + 1 , timeoutSupplier , listener );
76
83
},
77
84
listener ::onFailure
78
85
));
0 commit comments