janhoy commented on a change in pull request #1528: URL: https://github.com/apache/lucene-solr/pull/1528#discussion_r429829357
########## File path: solr/core/src/java/org/apache/solr/cloud/ZkController.java ########## @@ -491,6 +494,41 @@ public boolean isClosed() { assert ObjectReleaseTracker.track(this); } + /** + * <p>Verifies if /clusterstate.json exists in Zookeepeer, and if it does and is not empty, refuses to start and outputs + * a helpful message regarding collection migration.</p> + * + * <p>If /clusterstate.json exists and is empty, it is removed.</p> + */ + private void checkNoOldClusterstate(final SolrZkClient zkClient) throws InterruptedException { + try { + if (!zkClient.exists(ZkStateReader.UNSUPPORTED_CLUSTER_STATE, true)) { + return; + } + + final byte[] data = zkClient.getData(ZkStateReader.UNSUPPORTED_CLUSTER_STATE, null, null, true); + + if (Arrays.equals("{}".getBytes(StandardCharsets.UTF_8), data)) { + // Empty json. This log will only occur once. + log.warn("{} no longer supported starting with Solr 9. Found empty file on Zookeeper, deleting it.", ZkStateReader.UNSUPPORTED_CLUSTER_STATE); + zkClient.delete(ZkStateReader.UNSUPPORTED_CLUSTER_STATE, -1, true); Review comment: Running 8.x nodes might get a callback since they have a watch. Have not checked the callback handling code, but if the code don't handle DELETE operation then either nothing happens or an exception is thrown... ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org