Skip to content

Commit b139f14

Browse files
committed
Fail if any other file/dir in nodes dir
1 parent 74d6bdb commit b139f14

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

server/src/main/java/org/elasticsearch/env/NodeEnvironment.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,9 @@ private static boolean upgradeLegacyNodeFolders(Logger logger, Settings settings
329329
if (Files.isDirectory(nodeLockIdPath) && fileName.chars().allMatch(Character::isDigit)) {
330330
int nodeLockId = Integer.parseInt(fileName);
331331
nodeLockIds.add(nodeLockId);
332+
} else if (FileSystemUtils.isDesktopServicesStore(nodeLockIdPath) == false) {
333+
throw new IllegalStateException("unexpected file/folder encountered during data folder upgrade: " +
334+
nodeLockIdPath);
332335
}
333336
}
334337
}

server/src/test/java/org/elasticsearch/env/NodeEnvironmentIT.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,6 @@ public void testUpgradeDataFolder() throws IOException, InterruptedException {
162162
}
163163
}
164164
}
165-
IOUtils.fsync(targetPath, true);
166-
IOUtils.fsync(path, true);
167165
} catch (IOException e) {
168166
throw new UncheckedIOException(e);
169167
}
@@ -173,14 +171,24 @@ public void testUpgradeDataFolder() throws IOException, InterruptedException {
173171

174172
// create extra file/folder, and check that upgrade fails
175173
if (dataPaths.isEmpty() == false) {
176-
final Path badFile = Files.createTempFile(randomFrom(dataPaths).resolve("nodes").resolve("0"), "bad", "file");
174+
final Path badFileInNodesDir = Files.createTempFile(randomFrom(dataPaths).resolve("nodes"), "bad", "file");
177175
IllegalStateException ise = expectThrows(IllegalStateException.class, () -> internalCluster().startNode(dataPathSettings));
178176
assertThat(ise.getMessage(), containsString("unexpected file/folder encountered during data folder upgrade"));
177+
Files.delete(badFileInNodesDir);
178+
179+
final Path badFolderInNodesDir = Files.createDirectories(randomFrom(dataPaths).resolve("nodes").resolve("bad-folder"));
180+
ise = expectThrows(IllegalStateException.class, () -> internalCluster().startNode(dataPathSettings));
181+
assertThat(ise.getMessage(), containsString("unexpected file/folder encountered during data folder upgrade"));
182+
Files.delete(badFolderInNodesDir);
183+
184+
final Path badFile = Files.createTempFile(randomFrom(dataPaths).resolve("nodes").resolve("0"), "bad", "file");
185+
ise = expectThrows(IllegalStateException.class, () -> internalCluster().startNode(dataPathSettings));
186+
assertThat(ise.getMessage(), containsString("unexpected file/folder encountered during data folder upgrade"));
179187
Files.delete(badFile);
180188

181189
final Path badFolder = Files.createDirectories(randomFrom(dataPaths).resolve("nodes").resolve("0").resolve("bad-folder"));
182190
ise = expectThrows(IllegalStateException.class, () -> internalCluster().startNode(dataPathSettings));
183-
assertThat(ise.getMessage(), containsString("unexpected folder encountered during data folder upgrad"));
191+
assertThat(ise.getMessage(), containsString("unexpected folder encountered during data folder upgrade"));
184192
Files.delete(badFolder);
185193

186194
final Path conflictingFolder = randomFrom(dataPaths).resolve("indices");

0 commit comments

Comments
 (0)