Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Duplicate
-
6.1
-
None
-
None
Description
Reading cluster state information using /collections?action=CLUSTERSTATUS can fail if there's a concurrent deletion of a collection with its configset.
The code in ClusterStatus.getClusterStatus
- gets collection names
- for every collection reads its "config name" from Zk
The problem is that if there's a concurrent delete operation for a collection and its configset in between then ClusterState.getCollection can fail thus causing the whole operation to fail. It seems that it would be better to catch Zk's NoNodeException for this particular case and handle it somehow (can we ignore this collection right away or should we re-check?)
Error loading config name for collection test (500) Trace: org.apache.solr.common.SolrException: Error loading config name for collection test at org.apache.solr.common.cloud.ZkStateReader.readConfigName(ZkStateReader.java:196) at org.apache.solr.handler.admin.ClusterStatus.getClusterStatus(ClusterStatus.java:141) at org.apache.solr.handler.admin.CollectionsHandler$CollectionOperation$21.call(CollectionsHandler.java:695) ... Caused by: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /collections/test at org.apache.zookeeper.KeeperException.create(KeeperException.java:111) at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155) at org.apache.solr.common.cloud.SolrZkClient$7.execute(SolrZkClient.java:348) at org.apache.solr.common.cloud.SolrZkClient$7.execute(SolrZkClient.java:345) at org.apache.solr.common.cloud.ZkCmdExecutor.retryOperation(ZkCmdExecutor.java:60) at org.apache.solr.common.cloud.SolrZkClient.getData(SolrZkClient.java:345) at org.apache.solr.common.cloud.ZkStateReader.readConfigName(ZkStateReader.java:178) ... 32 more
Attachments
Issue Links
- duplicates
-
SOLR-10720 Aggressive removal of a collection breaks cluster state
- Closed
- relates to
-
SOLR-8804 Race condition in ClusterStatus.getClusterStatus
- Closed