During upgrades from 7.x to 8.x if a node was holding a frozen cache file, the system considers that as an unknown file and prevents starting the node:
```
java.lang.IllegalStateException: unexpected file/folder encountered during data folder upgrade: /app/data/nodes/0/shared_snapshot_cache
	at org.elasticsearch.env.NodeEnvironment.upgradeLegacyNodeFolders(NodeEnvironment.java:443) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:290) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.node.Node.<init>(Node.java:388) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.node.Node.<init>(Node.java:277) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:234) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:234) ~[elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:358) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:166) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:157) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112) [elasticsearch-cli-8.0.1.jar:8.0.1]
	at org.elasticsearch.cli.Command.main(Command.java:77) [elasticsearch-cli-8.0.1.jar:8.0.1]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:122) [elasticsearch-8.0.1.jar:8.0.1]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) [elasticsearch-8.0.1.jar:8.0.1]
```
These files are expected files and should be ignored/accepted during the data folder upgrade.
server/src/internalClusterTest/java/org/elasticsearch/env/NodeEnvironmentIT.java
public void testFailsToStartOnDataPathsFromMultipleNodes() throws IOException {
        final List<String> nodes = internalCluster().startNodes(2);
        ensureStableCluster(2);
        final List<String> node0DataPaths = Environment.PATH_DATA_SETTING.get(internalCluster().dataPathSettings(nodes.get(0)));
        final List<String> node1DataPaths = Environment.PATH_DATA_SETTING.get(internalCluster().dataPathSettings(nodes.get(1)));
        final List<String> allDataPaths = new ArrayList<>(node0DataPaths);
        allDataPaths.addAll(node1DataPaths);
        internalCluster().stopRandomNode(InternalTestCluster.nameFilter(nodes.get(1)));
        internalCluster().stopRandomNode(InternalTestCluster.nameFilter(nodes.get(0)));
        CorruptStateException corruptStateException = expectThrows(
            CorruptStateException.class,
            () -> PersistedClusterStateService.nodeMetadata(allDataPaths.stream().map(PathUtils::get).toArray(Path[]::new))
        );
        assertThat(corruptStateException.getMessage(), containsString("unexpected node ID in metadata"));
        corruptStateException = expectThrows(
            ElasticsearchException.class,
            CorruptStateException.class,
            () -> internalCluster().startNode(Settings.builder().putList(Environment.PATH_DATA_SETTING.getKey(), allDataPaths))
        );
        assertThat(corruptStateException.getMessage(), containsString("unexpected node ID in metadata"));
        final List<String> node0DataPathsPlusOne = new ArrayList<>(node0DataPaths);
        node0DataPathsPlusOne.add(createTempDir().toString());
        internalCluster().startNode(Settings.builder().putList(Environment.PATH_DATA_SETTING.getKey(), node0DataPathsPlusOne));
        final List<String> node1DataPathsPlusOne = new ArrayList<>(node1DataPaths);
        node1DataPathsPlusOne.add(createTempDir().toString());
        internalCluster().startNode(Settings.builder().putList(Environment.PATH_DATA_SETTING.getKey(), node1DataPathsPlusOne));
        ensureStableCluster(2);
    }
}