[ https://issues.apache.org/jira/browse/SOLR-6512?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14149832#comment-14149832 ]
Yonik Seeley commented on SOLR-6512: ------------------------------------ bq. This particular patch allows arbitrary roles to be assigned to a replica. +1 to the functionality in general, I think there will be many uses for this. As far as naming though... perhaps this is more about arbitrary metadata/properties, and not specifically roles? Roles could just be a semantic interpretation of specific properties. If we had a setProperty API (or setReplicaProperty), it could be used for both setting roles as well as other things. bq. multiplePerSlice=true (defaults to false). For a generic API, it feels like the default should be the reverse. sliceUnique=true/false (with the default being false) > Add a collections API call to add/delete arbitrary roles to a specific replica > ------------------------------------------------------------------------------ > > Key: SOLR-6512 > URL: https://issues.apache.org/jira/browse/SOLR-6512 > Project: Solr > Issue Type: Improvement > Reporter: Erick Erickson > Assignee: Erick Erickson > Attachments: SOLR-6512.patch, SOLR-6512.patch > > > This is a sub-task for SOLR-6491, but seems generally useful. > Since this is in support of the "preferredLeader" functionality, I've run > into some considerations that I wanted some feedback on how to handle. > "preferredLeader" has the restriction that there should only be one per > slice, so setting this for a particular node means removing the property for > all the other replicas on the slice. Not a problem to do, my question is more > whether this is something reasonable to enforce on an arbitrary property > based on what that property is? Perfectly do-able, but "semantically > challenged". Currently, this is never a node with "preferedLeader" set to > "false", it is forcibly removed from other nodes in the slice when this > property is assigned. > The problem here is that there's nothing about assigning an arbitrary > property to a node that would reasonably imply this kind of behavior. One > could always control this with secondary flags on the command, e.g. > "shardExclusive=true|false" for instance, perhaps with safety checks in for > known one-per-shard properties like "preferredLeader". > "preferredLeader" seems to fit more naturally into a "role", but currently > ADDROLE and DELTEROLE have nothing to do with the notion of setting a role > for a particular node relative to a collection/shard. Easy enough to add, but > enforcing the "only one node per slice may have this role" rule there is > similarly arbitrary and overloads the ADDROLE/DELETEROLE in a way that seems > equally confusing. Plus, checking whether the required collection/shard/node > params are present becomes based on the value of the property being set, > which is all equally arbitrary. > The other interesting thing is that setting an arbitrary property on a node > would allow one to mess things up royally by, say, changing properties like > "core", or "base_url" or node_name at will. Actually this is potentially > useful, but very, very dangerous and I'm not particularly interested in > supporting it ;). I suppose we could require a prefix, say the only settable > properties are "property.whatever". > We could also add something specific to nodes, something like > ADDREPLICAROLE/DELETEREPLICAROLE, perhaps with sub-params like > "onlyOneAllowedPerShard", but this gets messy and relies on the users "doing > the right thing". I prefer enforcing rules like this based on the role I > think. Or at least enforcing these kinds of requirements on the > "preferredLeader" role if we go that way. > What are people's thoughts here? I think I'm tending towards the > ADDREPLICAROLE/DELETEREPLICAROLE way of doing this, but it's not set in > stone. I have code locally for arbitrary properties that I can modify for the > role bits. > So, if I'm going to summarize the points I'd like feedback on: > 1> Is setting arbitrary properties on a node desirable? If so, should we > require a prefix like "property" to prevent resetting values SolrCloud > depends on? > 2> Is it better to piggyback on ADDROLE/DELETEROLE? Personally I'm not in > favor of this one. Too messy with requiring additional parameters to work > right in this case > 3> Is the best option to create new collections API calls for > ADDREPLICAROLE/DELETEREPLICAROLE that > 3.1> require collection/slice/node parameters > 3.2> enforces the "onlyOnePerShard" rule for certain known roles > 3.3 v1> allows users to specify arbitrary roles something like > "onlyOnePerShard" as an optional T|F parameter, otherwise is totally open. > -or- > 3.3 v2> No support other than "preferredLeader", only roles that are > pre-defined are allowed, in which case the "onlyOnePerShard" is implicit in > the role. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org