Either of them works for me. If you want to get your hands dirty, please go ahead. I can review/provide feedback if you need anything there. I'll just create a JIRA to begin with.
On Tue, Mar 24, 2015 at 9:15 AM, Shai Erera <ser...@gmail.com> wrote: > I use vanilla 5.0. I intended to fix it myself, but if you want to go > ahead, I'd be happy to review the patch. > > Shai > > On Tue, Mar 24, 2015 at 6:11 PM, Anshum Gupta <ans...@anshumgupta.net> > wrote: > > > It's certainly looks like a bug and the name shouldn't be added to the > > request automatically. > > Can you confirm what version of Solr are you using? > > > > If it turns out to be a bug in 5x/trunk I'll create a JIRA and fix it to > > both #1 and #2. > > > > On Mon, Mar 23, 2015 at 9:48 AM, Shai Erera <ser...@gmail.com> wrote: > > > > > Shawn, that was a great tip! > > > > > > When I tried the URL, the core was named as expected > > > (mycollection_shard1_replica2). I then compared the URLs as reported in > > the > > > logs, and I believe I found the bug: > > > > > > SolrJ: [admin] webapp=null path=/admin/collections > params={shard=shard1& > > > *name=mycollection*&action=ADDREPLICA&*collection=mycollection* > > > &wt=javabin&version=2} > > > > > > The 'name' param isn't set when I send the URL request (and it's also > not > > > specified in the reference guide), but only when I add the replica > using > > > SolrJ. I then tweaked my code to do the following: > > > > > > final CollectionAdminRequest.AddReplica addReplicaRequest = new > > > CollectionAdminRequest.AddReplica() { > > > @Override > > > public SolrParams getParams() { > > > final ModifiableSolrParams params = (ModifiableSolrParams) > > > super.getParams(); > > > params.remove(CoreAdminParams.NAME); > > > return params; > > > } > > > }; > > > > > > And voila, the core is now also named mycollection_shard1_replica2, and > > I'm > > > even able to add as many replicas as I want on this node (where before > it > > > failed since 'mycollection' already existed). > > > > > > The 'name' parameter is added by > > > CollectionSpecificAdminRequest.getParams(). So how would you suggest to > > fix > > > it: > > > > > > 1. Remove it in AddReplica.getParams() -- replicas will always be > > > auto-named. It makes sense as users didn't have control over it > > before, > > > and > > > maybe they shouldn't. > > > 2. Add a setCoreName to AddReplica request -- this would be nice if > > > someone wanted to control the name of the added replica, but > otherwise > > > should not be included in the request > > > > > > Or maybe we fix the bug by doing #1 and consider #2 as a new feature > > "allow > > > naming replicas"? > > > > > > Shai > > > > > > > > > On Mon, Mar 23, 2015 at 6:14 PM, Shawn Heisey <apa...@elyograg.org> > > wrote: > > > > > > > On 3/23/2015 9:27 AM, Shai Erera wrote: > > > > > I have a Solr cluster started (all programmatically) with one Solr > > > node, > > > > > one collection and one shard. I set the replicationFactor to 1. The > > > name > > > > of > > > > > the result core was set to mycollection_shard1_replica1. > > > > > > > > > > I then start a second Solr node and issue an ADDREPLICA command as > > > > > described in the reference guide, using following code: > > > > > > > > > > final CollectionAdminRequest.AddReplica addReplicaRequest = new > > > > > CollectionAdminRequest.AddReplica(); > > > > > addReplicaRequest.setCollectionName("mycollection"); > > > > > addReplicaRequest.setShardName("shard1"); > > > > > final CollectionAdminResponse response = > > > > > addReplicaRequest.process(solrClient); > > > > > > > > > > The replica is added under a core named "mycollection" and not e.g. > > > > > mycollection_shard1_replica2. > > > > > > > > I'd call that a bug. > > > > > > > > > BTW, the example in the reference guide shows that issuing the > > request: > > > > > > > > > > > > > > > > > > > > http://localhost:8983/solr/admin/collections?action=ADDREPLICA&collection=test2&shard=shard2&node=192.167.1.2:8983_solr > > > > > > > > > > Results in > > > > > > > > > > <response> > > > > > <lst name="responseHeader"> > > > > > <int name="status">0</int> > > > > > <int name="QTime">3764</int> > > > > > </lst> > > > > > <lst name="success"> > > > > > <lst> > > > > > <lst name="responseHeader"> > > > > > <int name="status">0</int> > > > > > <int name="QTime">3450</int> > > > > > </lst> > > > > > * <str name="core">test2_shard2_replica4</str>* > > > > > > > > Did you try out a URL like that to see whether it also results in the > > > > misnamed core, or if it behaves correctly as the reference guide > > > indicates? > > > > > > > > If the URL behaves correctly, I'd be curious what Solr logs for the > URL > > > > request and the SolrJ request. > > > > > > > > Thanks, > > > > Shawn > > > > > > > > > > > > > > > > > > > -- > > Anshum Gupta > > > -- Anshum Gupta