Here's the request we are sending over the wire to Solr 9

"class":"org.apache.solr.client.solrj.request.CollectionAdminRequest$Create",
  "method":"GET",
  "params.action":"CREATE",
  "params.name":"ftest-collection_1.2",
  "params.collection.configName":"test-collection",
  "params.createNodeSet":"EMPTY",
  "params.numShards":"2",
  "params.router.name":"compositeId",
  "params.nrtReplicas":"1",
  "params.autoAddReplicas":"false"}


On Tue, Oct 15, 2024 at 7:20 PM Patrick Lok <patrick....@salesforce.com>
wrote:

> Hi,
>
> I'm new to Solr and I'm tasked to upgrade our Solr 8.11.3 installation to
> Solr 9.6.1.
>
> I'm running into some trouble with the create collection command when it's
> sent to a Solr 9.6.1 node with Solr 8.11.3 running as overseers.
>
> The command in Java is
>   CollectionAdminRequest.createCollection(collectionName, configName,
> numShards, 0)
>     .setAutoAddReplicas(false)
>     .setRouterName("compositeId")
>     .setCreateNodeSet("EMPTY")
>     .setReplicationFactor(1);
>
> And the error that I see on the overseer can be either of the one below. I
> guess it depends on if the collection has been created (but deleted) before
> or not.
>
> If the collection has been created before but deleted. I'll see in the
> overseer (Solr 8) log
>
> 01:42:43.927 ERROR (OverseerThreadFactory-25-t...:8983_solr) [   ]
> o.a.s.c.a.c.OverseerCollectionMessageHandler      Collection:
> test-collection_1.2 operation: create failed
> org.apache.solr.common.SolrException: Could not fully create collection:
> test-collection_1.2
>         at
> org.apache.solr.cloud.api.collections.CreateCollectionCmd.call(CreateCollectionCmd.java:218)
> ~[?:?]
>         at
> org.apache.solr.cloud.api.collections.OverseerCollectionMessageHandler.processMessage(OverseerCollectionMessageHandler.java:271)
> ~[?:?]
>         at
> org.apache.solr.cloud.OverseerTaskProcessor$Runner.run(OverseerTaskProcessor.java:524)
> ~[?:?]
>         at
> org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:218)
> ~[?:?]
>         at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> ~[?:?]
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> ~[?:?]
>         at java.lang.Thread.run(Thread.java:829) ~[?:?]
>
>
>
>
> But if the collection has never been created before, then I see in the
> overseer log
>
> 01:42:14.439 INFO  (OverseerThreadFactory-25-thread-..._solr) [   ]
> o.a.s.c.a.c.CreateCollectionCmd      Create collection test1-collection_1.2
> 01:42:14.442 INFO  (OverseerCollectionConfigSetProcessor-...) [   ]
> o.a.s.c.OverseerTaskQueue      Response ZK path:
> /overseer/collection-queue-work/qnr-0000707821 doesn't exist. Requestor may
> have disconnected from ZooKeeper
> 01:42:14.469 ERROR (OverseerStateUpdate-3026498...) [   ] o.a.s.c.Overseer
>      Exception in Overseer main queue loop
> org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
> NoNode for /clusterstate.json
>         at
> org.apache.zookeeper.KeeperException.create(KeeperException.java:118) ~[?:?]
>         at
> org.apache.zookeeper.KeeperException.create(KeeperException.java:54) ~[?:?]
>         at org.apache.zookeeper.ZooKeeper.setData(ZooKeeper.java:2561)
> ~[?:?]
>         at
> org.apache.solr.common.cloud.SolrZkClient.lambda$setData$7(SolrZkClient.java:361)
> ~[?:?]
>         at
> org.apache.solr.common.cloud.ZkCmdExecutor.retryOperation(ZkCmdExecutor.java:79)
> ~[?:?]
>         at
> org.apache.solr.common.cloud.SolrZkClient.setData(SolrZkClient.java:361)
> ~[?:?]
>         at
> org.apache.solr.cloud.overseer.ZkStateWriter.writePendingUpdates(ZkStateWriter.java:291)
> ~[?:?]
>         at
> org.apache.solr.cloud.overseer.ZkStateWriter.writePendingUpdates(ZkStateWriter.java:217)
> ~[?:?]
>         at
> org.apache.solr.cloud.overseer.ZkStateWriter.enqueueUpdate(ZkStateWriter.java:173)
> ~[?:?]
>         at
> org.apache.solr.cloud.Overseer$ClusterStateUpdater.processQueueItem(Overseer.java:341)
> ~[?:?]
>         at
> org.apache.solr.cloud.Overseer$ClusterStateUpdater.run(Overseer.java:271)
> ~[?:?]
>         at java.lang.Thread.run(Thread.java:829) ~[?:?]
> 01:42:14.490 WARN  (OverseerStateUpdate-3026498...) [   ] o.a.s.c.Overseer
>      Exception when process message = {
>   "replicationFactor":1,
>   "fromApi":"true",
>   "collection.configName":"test1-collection",
>   "router.name":"compositeId",
>   "createNodeSet":"EMPTY",
>   "waitForFinalState":null,
>   "pullReplicas":null,
>   "async":"70e3b8e7-9ee1-468d-96f6-470900c4edbb",
>   "router.field":null,
>   "name":"test1-collection_1.2",
>   "nrtReplicas":1,
>   "numShards":2,
>   "tlogReplicas":null,
>   "alias":null,
>   "operation":"create",
>   "perReplicaState":null}, consider as bad message and poll out from the
> queue
>
>
> Is there a known incompatibility issue between Solr 9 (data node) and Solr
> 8 (overseer node) with CollectionAdminRequest.createCollection? This is
> what we have been doing for a long time and works with both data and
> overseer nodes are running Solr 8. Is there a way to get around this issue?
>
> Thanks,
> Patrick
>
>

Reply via email to