SolrCloud Configset API 上传返回 500 "KeeperErrorCode = NoNode"



情况

首先,我必须提到,我正在使用Solr 8.1.1,并且正在运行默认的";solr-e云";做一些测试。这是在Windows Azure虚拟机上运行的。我正在尝试创建一个PowerShell脚本,该脚本将在SolrCloud上进行一些设置。第一步是上传自定义配置集。我在用https://lucene.apache.org/solr/guide/8_1/configsets-api.html作为指南和PowerShell命令,如果您去掉所有参数,则可以归结为以下内容:

Invoke-WebRequest -Uri "http://localhost:8983/solr/admin/configs?action=UPLOAD&name=MyConfig" -Method Post -ContentType "application/octet-stream" -InFile "config.zip"

编辑:为了清晰起见,ZIP的内容如下:https://i.stack.imgur.com/49huS.jpg

问题

然而,当我运行上述命令时,我会遇到以下错误:

Invoke-WebRequest : { "responseHeader":{ "status":500, "QTime":11}, "error":{ "msg":"KeeperErrorCode = NoNode for /configs/MyConfig/lang/contractions_ca.txt", "trace":"org.apache.zookeeper.KeeperException$NoNodeException: 
KeeperErrorCode = NoNode for /configs/MyConfig/lang/contractions_ca.txtrntat org.apache.zookeeper.KeeperException.create(KeeperException.java:114)rntat 
org.apache.zookeeper.KeeperException.create(KeeperException.java:54)rntat org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:792)rntat 
org.apache.solr.common.cloud.SolrZkClient.lambda$create$7(SolrZkClient.java:415)rntat org.apache.solr.common.cloud.ZkCmdExecutor.retryOperation(ZkCmdExecutor.java:71)rntat 
org.apache.solr.common.cloud.SolrZkClient.create(SolrZkClient.java:415)rntat org.apache.solr.handler.admin.ConfigSetsHandler.createZkNodeIfNotExistsAndSetData(ConfigSetsHandler.java:201)rntat 
org.apache.solr.handler.admin.ConfigSetsHandler.handleConfigUploadRequest(ConfigSetsHandler.java:181)rntat org.apache.solr.handler.admin.ConfigSetsHandler.handleRequestBody(ConfigSetsHandler.java:111)rntat 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)rntat org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:796)rntat 
org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:762)rntat org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:522)rntat 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)rntat org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)rntat 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)rntat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)rntat 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)rntat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)rntat 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)rntat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)rntat 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)rntat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)rntat 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)rntat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)rntat 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)rntat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)rntat 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)rntat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)rntat 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)rntat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)rntat 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)rntat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)rntat 
org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)rntat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)rntat 
org.eclipse.jetty.server.Server.handle(Server.java:502)rntat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)rntat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)rntat 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)rntat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)rntat 
org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)rntat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)rntat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)rntat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)rntat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)rntat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)rntat 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)rntat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)rntat java.lang.Thread.run(Thread.java:748)rn", 
"code":500}}
At line:1 char:1

观察

当我第一次";失败";我从我的配置创建了一个zip文件,其中包含一个额外的顶级文件夹(ea而不是MyConfig/solrconfig.xml等,我的zip是MyConfig/MyConfig/solrcconfig.xml(,当我使用它时,命令运行成功,但第二个命令(创建集合(将失败,因为它找不到solrconfig.xml看起来确实能够处理它,但一旦我将其更正为实际的配置集,它就会大量失败?

编辑:有人问我这件事,以及是否使用";conf";放在拉链里就行了。正如我在这里提到的,这会导致成功上传(https://i.stack.imgur.com/YNrkE.jpg)但是,正如您所看到的,它与其他配置集不匹配,当您尝试使用该集创建集合时,您将获得Error CREATEing SolrCore 'Test_shard1_replica_n1': Unable to create core [Test_shard1_replica_n1] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/configs/Sitecore', cwd=C:solr-8.1.1server

问题

我做错了什么?这是个虫子吗?

回顾我不久前在SolrCloud上所做的一些工作,我想起了我遇到的一个烦人的问题:

如果我使用";发送到压缩文件夹";在Windows UI中,或通过PowerShell中的Compress-Archive。然而,我发现用7Zip压缩数据确实有效。

我怀疑Windows邮政编码(我认为它很旧,而且是他们很久以前授权的?(和Solr/ZooKeeper如何再次提取文件之间存在不兼容的地方?

我刚刚在没有使用Windows邮政编码的情况下遇到了同样的问题。我试图从一个conf目录上传一个配置集到Solr 7.7.3;郎;包含一堆文件的子目录。我得到了/configs/_myconfigsetname_/lang/stopwords_eu.txt的NoNode错误。配置集通过Java中的递归目录遍历被快速压缩,使用Java的ZipOutputStream将每个文件名发送到Zip文件。然后将得到的压缩字节发送给Solr/Zookeeper。

这段代码适用于没有子目录的conf目录。事实证明,当存在子目录时,在将文件(如lang/stopwords_eu.txt(添加到Zip流之前,有必要为目录(例如lang/(创建ZipEntry。

最新更新