@@ -38,7 +38,7 @@ public void testRepurpose() throws Exception {
3838 final String indexName = "test-repurpose" ;
3939
4040 logger .info ("--> starting two nodes" );
41- List <String > nodes = internalCluster ().startNodes (2 );
41+ final List <String > nodes = internalCluster ().startNodes (2 );
4242
4343 logger .info ("--> creating index" );
4444 prepareCreate (indexName , Settings .builder ()
@@ -52,8 +52,9 @@ public void testRepurpose() throws Exception {
5252
5353 ensureGreen ();
5454
55+ assertTrue (client ().prepareGet (indexName , "type1" , "1" ).get ().isExists ());
56+
5557 final Settings noMasterNoDataSettings = Settings .builder ()
56- .put (internalCluster ().getDefaultSettings ())
5758 .put (Node .NODE_DATA_SETTING .getKey (), false )
5859 .put (Node .NODE_MASTER_SETTING .getKey (), false )
5960 .build ();
@@ -80,15 +81,36 @@ public void testRepurpose() throws Exception {
8081 assertThat (lockedException .getMessage (), containsString (NodeRepurposeCommand .FAILED_TO_OBTAIN_NODE_LOCK_MSG ));
8182
8283 logger .info ("--> Starting node after repurpose" );
83- internalCluster ().startNode (noMasterNoDataSettings );
84+ nodes .set (stoppedOrdinal , internalCluster ().startNode (noMasterNoDataSettings ));
85+
86+ ensureYellow ();
87+
88+ assertTrue (client ().prepareGet (indexName , "type1" , "1" ).get ().isExists ());
89+ assertTrue (indexExists (indexName ));
90+
91+ logger .info ("--> Restarting and repurposing other node" );
92+
93+ internalCluster ().stopRandomNode (s -> true );
94+ internalCluster ().stopRandomNode (s -> true );
95+
96+ executeRepurposeCommandForOrdinal (noMasterNoDataSettings , indexUUID , runningOrdinal );
97+
98+ internalCluster ().startNodes (2 );
99+ ensureGreen ();
100+
101+ // indexes and docs gone.
102+ assertFalse (indexExists (indexName ));
84103 }
85104
86105 private void executeRepurposeCommandForOrdinal (Settings settings , String indexUUID , int ordinal ) throws Exception {
87106 boolean verbose = randomBoolean ();
107+ Settings settingsWithPath = Settings .builder ().put (internalCluster ().getDefaultSettings ()).put (settings ).build ();
108+ int expectedIndexCount = TestEnvironment .newEnvironment (settingsWithPath ).dataFiles ().length ;
88109 Matcher <String > matcher = allOf (
89- containsString (NodeRepurposeCommand .noMasterMessage (1 , 1 , TestEnvironment . newEnvironment ( settings ). dataFiles (). length )),
110+ containsString (NodeRepurposeCommand .noMasterMessage (1 , 1 , expectedIndexCount )),
90111 not (contains (NodeRepurposeCommand .PRE_V7_MESSAGE )),
91112 NodeRepurposeCommandTests .conditionalNot (containsString (indexUUID ), verbose == false ));
92- NodeRepurposeCommandTests .verifySuccess (settings , matcher , verbose , ordinal );
113+ NodeRepurposeCommandTests .verifySuccess (settingsWithPath , matcher ,
114+ verbose , ordinal );
93115 }
94116}
0 commit comments