Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
6.0
-
None
-
None
Description
Solr currently has "recommendations" about what constitutes a valid identifier, but doesn't enforce these "recommendations" uniformly. Core (SOLR-8308) and collection (SOLR-8642) names are currently checked, but shards aren't.
$ bin/solr -e cloud -noprompt .... $ curl -i -l -k -X GET "http://localhost:8983/solr/admin/collections?action=CREATE&name=coll1&router.name=implicit&numShards=1&shards=bad+shard+name" HTTP/1.1 200 OK Content-Type: application/xml; charset=UTF-8 Transfer-Encoding: chunked <?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"><int name="status">0</int><int name="QTime">204</int></lst><lst name="failure"><str>org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:Error from server at http://127.0.1.1:8983/solr: Error CREATEing SolrCore 'coll1_bad shard name_replica1': Unable to create core [coll1_bad shard name_replica1] Caused by: Invalid name: 'coll1_bad shard name_replica1' Identifiers must consist entirely of periods, underscores and alphanumerics</str></lst> </response>
(Note that the CREATE command above returned 200-OK, and the failure was only apparent when viewing the message.)
A CLUSTERSTATUS shows that the shard was actually created, but has no underlying cores.
$ curl -i -l -k -X GET "http://localhost:8983/solr/admin/collections?action=CLUSTERSTATUS&wt=json&indent=true" ... "collections":{ "coll1":{ "replicationFactor":"1", "shards":{"bad shard name":{ "range":null, "state":"active", "replicas":{}}}, "router":{"name":"implicit"}, "maxShardsPerNode":"1", "autoAddReplicas":"false", "znodeVersion":1, "configName":"gettingstarted"}, ...
This JIRA proposes adding a check to ensure that shard names meet SOLR's identifier "recommendations". This should prevent users from accidentally putting themselves in a bad state.