|  | @@ -33,7 +33,7 @@ import static org.hamcrest.Matchers.equalTo;
 | 
	
		
			
				|  |  |  public class OverrideNodeVersionCommandTests extends ESTestCase {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private Environment environment;
 | 
	
		
			
				|  |  | -    private Path[] nodePaths;
 | 
	
		
			
				|  |  | +    private Path nodePath;
 | 
	
		
			
				|  |  |      private String nodeId;
 | 
	
		
			
				|  |  |      private final OptionSet noOptions = new OptionParser().parse();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -42,10 +42,10 @@ public class OverrideNodeVersionCommandTests extends ESTestCase {
 | 
	
		
			
				|  |  |          final Settings settings = buildEnvSettings(Settings.EMPTY);
 | 
	
		
			
				|  |  |          environment = TestEnvironment.newEnvironment(settings);
 | 
	
		
			
				|  |  |          try (NodeEnvironment nodeEnvironment = new NodeEnvironment(settings, environment)) {
 | 
	
		
			
				|  |  | -            nodePaths = new Path[] { nodeEnvironment.nodeDataPath() };
 | 
	
		
			
				|  |  | +            nodePath = nodeEnvironment.nodeDataPath();
 | 
	
		
			
				|  |  |              nodeId = nodeEnvironment.nodeId();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            try (PersistedClusterStateService.Writer writer = new PersistedClusterStateService(nodePaths, nodeId,
 | 
	
		
			
				|  |  | +            try (PersistedClusterStateService.Writer writer = new PersistedClusterStateService(new Path[] { nodePath }, nodeId,
 | 
	
		
			
				|  |  |                  xContentRegistry(), BigArrays.NON_RECYCLING_INSTANCE,
 | 
	
		
			
				|  |  |                  new ClusterSettings(settings, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS), () -> 0L).createWriter()) {
 | 
	
		
			
				|  |  |                  writer.writeFullStateAndCommit(1L, ClusterState.builder(ClusterName.DEFAULT).metadata(Metadata.builder()
 | 
	
	
		
			
				|  | @@ -57,7 +57,7 @@ public class OverrideNodeVersionCommandTests extends ESTestCase {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @After
 | 
	
		
			
				|  |  |      public void checkClusterStateIntact() throws IOException {
 | 
	
		
			
				|  |  | -        assertTrue(Metadata.SETTING_READ_ONLY_SETTING.get(new PersistedClusterStateService(nodePaths, nodeId,
 | 
	
		
			
				|  |  | +        assertTrue(Metadata.SETTING_READ_ONLY_SETTING.get(new PersistedClusterStateService(new Path[] { nodePath }, nodeId,
 | 
	
		
			
				|  |  |              xContentRegistry(), BigArrays.NON_RECYCLING_INSTANCE,
 | 
	
		
			
				|  |  |              new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS), () -> 0L)
 | 
	
		
			
				|  |  |              .loadBestOnDiskState().metadata.persistentSettings()));
 | 
	
	
		
			
				|  | @@ -67,17 +67,17 @@ public class OverrideNodeVersionCommandTests extends ESTestCase {
 | 
	
		
			
				|  |  |          final Path emptyPath = createTempDir();
 | 
	
		
			
				|  |  |          final MockTerminal mockTerminal = new MockTerminal();
 | 
	
		
			
				|  |  |          final ElasticsearchException elasticsearchException = expectThrows(ElasticsearchException.class, () ->
 | 
	
		
			
				|  |  | -            new OverrideNodeVersionCommand().processNodePaths(mockTerminal, new Path[]{emptyPath}, noOptions, environment));
 | 
	
		
			
				|  |  | +            new OverrideNodeVersionCommand().processNodePaths(mockTerminal, emptyPath, noOptions, environment));
 | 
	
		
			
				|  |  |          assertThat(elasticsearchException.getMessage(), equalTo(OverrideNodeVersionCommand.NO_METADATA_MESSAGE));
 | 
	
		
			
				|  |  |          expectThrows(IllegalStateException.class, () -> mockTerminal.readText(""));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testFailsIfUnnecessary() throws IOException {
 | 
	
		
			
				|  |  |          final Version nodeVersion = Version.fromId(between(Version.CURRENT.minimumIndexCompatibilityVersion().id, Version.CURRENT.id));
 | 
	
		
			
				|  |  | -        PersistedClusterStateService.overrideVersion(nodeVersion, nodePaths);
 | 
	
		
			
				|  |  | +        PersistedClusterStateService.overrideVersion(nodeVersion, nodePath);
 | 
	
		
			
				|  |  |          final MockTerminal mockTerminal = new MockTerminal();
 | 
	
		
			
				|  |  |          final ElasticsearchException elasticsearchException = expectThrows(ElasticsearchException.class, () ->
 | 
	
		
			
				|  |  | -            new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePaths, noOptions, environment));
 | 
	
		
			
				|  |  | +            new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePath, noOptions, environment));
 | 
	
		
			
				|  |  |          assertThat(elasticsearchException.getMessage(), allOf(
 | 
	
		
			
				|  |  |              containsString("compatible with current version"),
 | 
	
		
			
				|  |  |              containsString(Version.CURRENT.toString()),
 | 
	
	
		
			
				|  | @@ -87,11 +87,11 @@ public class OverrideNodeVersionCommandTests extends ESTestCase {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testWarnsIfTooOld() throws Exception {
 | 
	
		
			
				|  |  |          final Version nodeVersion = NodeMetadataTests.tooOldVersion();
 | 
	
		
			
				|  |  | -        PersistedClusterStateService.overrideVersion(nodeVersion, nodePaths);
 | 
	
		
			
				|  |  | +        PersistedClusterStateService.overrideVersion(nodeVersion, nodePath);
 | 
	
		
			
				|  |  |          final MockTerminal mockTerminal = new MockTerminal();
 | 
	
		
			
				|  |  |          mockTerminal.addTextInput("n\n");
 | 
	
		
			
				|  |  |          final ElasticsearchException elasticsearchException = expectThrows(ElasticsearchException.class, () ->
 | 
	
		
			
				|  |  | -            new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePaths, noOptions, environment));
 | 
	
		
			
				|  |  | +            new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePath, noOptions, environment));
 | 
	
		
			
				|  |  |          assertThat(elasticsearchException.getMessage(), equalTo("aborted by user"));
 | 
	
		
			
				|  |  |          assertThat(mockTerminal.getOutput(), allOf(
 | 
	
		
			
				|  |  |              containsString("too old"),
 | 
	
	
		
			
				|  | @@ -101,17 +101,17 @@ public class OverrideNodeVersionCommandTests extends ESTestCase {
 | 
	
		
			
				|  |  |              containsString(nodeVersion.toString())));
 | 
	
		
			
				|  |  |          expectThrows(IllegalStateException.class, () -> mockTerminal.readText(""));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        final NodeMetadata nodeMetadata = PersistedClusterStateService.nodeMetadata(nodePaths);
 | 
	
		
			
				|  |  | +        final NodeMetadata nodeMetadata = PersistedClusterStateService.nodeMetadata(nodePath);
 | 
	
		
			
				|  |  |          assertThat(nodeMetadata.nodeVersion(), equalTo(nodeVersion));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testWarnsIfTooNew() throws Exception {
 | 
	
		
			
				|  |  |          final Version nodeVersion = NodeMetadataTests.tooNewVersion();
 | 
	
		
			
				|  |  | -        PersistedClusterStateService.overrideVersion(nodeVersion, nodePaths);
 | 
	
		
			
				|  |  | +        PersistedClusterStateService.overrideVersion(nodeVersion, nodePath);
 | 
	
		
			
				|  |  |          final MockTerminal mockTerminal = new MockTerminal();
 | 
	
		
			
				|  |  |          mockTerminal.addTextInput(randomFrom("yy", "Yy", "n", "yes", "true", "N", "no"));
 | 
	
		
			
				|  |  |          final ElasticsearchException elasticsearchException = expectThrows(ElasticsearchException.class, () ->
 | 
	
		
			
				|  |  | -            new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePaths, noOptions, environment));
 | 
	
		
			
				|  |  | +            new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePath, noOptions, environment));
 | 
	
		
			
				|  |  |          assertThat(elasticsearchException.getMessage(), equalTo("aborted by user"));
 | 
	
		
			
				|  |  |          assertThat(mockTerminal.getOutput(), allOf(
 | 
	
		
			
				|  |  |              containsString("data loss"),
 | 
	
	
		
			
				|  | @@ -120,16 +120,16 @@ public class OverrideNodeVersionCommandTests extends ESTestCase {
 | 
	
		
			
				|  |  |              containsString(nodeVersion.toString())));
 | 
	
		
			
				|  |  |          expectThrows(IllegalStateException.class, () -> mockTerminal.readText(""));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        final NodeMetadata nodeMetadata = PersistedClusterStateService.nodeMetadata(nodePaths);
 | 
	
		
			
				|  |  | +        final NodeMetadata nodeMetadata = PersistedClusterStateService.nodeMetadata(nodePath);
 | 
	
		
			
				|  |  |          assertThat(nodeMetadata.nodeVersion(), equalTo(nodeVersion));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testOverwritesIfTooOld() throws Exception {
 | 
	
		
			
				|  |  |          final Version nodeVersion = NodeMetadataTests.tooOldVersion();
 | 
	
		
			
				|  |  | -        PersistedClusterStateService.overrideVersion(nodeVersion, nodePaths);
 | 
	
		
			
				|  |  | +        PersistedClusterStateService.overrideVersion(nodeVersion, nodePath);
 | 
	
		
			
				|  |  |          final MockTerminal mockTerminal = new MockTerminal();
 | 
	
		
			
				|  |  |          mockTerminal.addTextInput(randomFrom("y", "Y"));
 | 
	
		
			
				|  |  | -        new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePaths, noOptions, environment);
 | 
	
		
			
				|  |  | +        new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePath, noOptions, environment);
 | 
	
		
			
				|  |  |          assertThat(mockTerminal.getOutput(), allOf(
 | 
	
		
			
				|  |  |              containsString("too old"),
 | 
	
		
			
				|  |  |              containsString("data loss"),
 | 
	
	
		
			
				|  | @@ -139,16 +139,16 @@ public class OverrideNodeVersionCommandTests extends ESTestCase {
 | 
	
		
			
				|  |  |              containsString(OverrideNodeVersionCommand.SUCCESS_MESSAGE)));
 | 
	
		
			
				|  |  |          expectThrows(IllegalStateException.class, () -> mockTerminal.readText(""));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        final NodeMetadata nodeMetadata = PersistedClusterStateService.nodeMetadata(nodePaths);
 | 
	
		
			
				|  |  | +        final NodeMetadata nodeMetadata = PersistedClusterStateService.nodeMetadata(nodePath);
 | 
	
		
			
				|  |  |          assertThat(nodeMetadata.nodeVersion(), equalTo(Version.CURRENT));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testOverwritesIfTooNew() throws Exception {
 | 
	
		
			
				|  |  |          final Version nodeVersion = NodeMetadataTests.tooNewVersion();
 | 
	
		
			
				|  |  | -        PersistedClusterStateService.overrideVersion(nodeVersion, nodePaths);
 | 
	
		
			
				|  |  | +        PersistedClusterStateService.overrideVersion(nodeVersion, nodePath);
 | 
	
		
			
				|  |  |          final MockTerminal mockTerminal = new MockTerminal();
 | 
	
		
			
				|  |  |          mockTerminal.addTextInput(randomFrom("y", "Y"));
 | 
	
		
			
				|  |  | -        new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePaths, noOptions, environment);
 | 
	
		
			
				|  |  | +        new OverrideNodeVersionCommand().processNodePaths(mockTerminal, nodePath, noOptions, environment);
 | 
	
		
			
				|  |  |          assertThat(mockTerminal.getOutput(), allOf(
 | 
	
		
			
				|  |  |              containsString("data loss"),
 | 
	
		
			
				|  |  |              containsString("You should not use this tool"),
 | 
	
	
		
			
				|  | @@ -157,7 +157,7 @@ public class OverrideNodeVersionCommandTests extends ESTestCase {
 | 
	
		
			
				|  |  |              containsString(OverrideNodeVersionCommand.SUCCESS_MESSAGE)));
 | 
	
		
			
				|  |  |          expectThrows(IllegalStateException.class, () -> mockTerminal.readText(""));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        final NodeMetadata nodeMetadata = PersistedClusterStateService.nodeMetadata(nodePaths);
 | 
	
		
			
				|  |  | +        final NodeMetadata nodeMetadata = PersistedClusterStateService.nodeMetadata(nodePath);
 | 
	
		
			
				|  |  |          assertThat(nodeMetadata.nodeVersion(), equalTo(Version.CURRENT));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |