As opposed to what? Looking up the configset for the addressed
collection and pulling whatever information it needs from cached data.
I'm sure there are some nuances but I hardly think you need a node
role framework to deal with determine the unique key field to do
scatter gather on an empty node when you have easy access to
collection metadata.

Doesn't seem like a hard thing to overcome to me.

On Tue, Nov 2, 2021 at 5:49 PM Noble Paul <noble.p...@gmail.com> wrote:
>
>
>
> On Wed, Nov 3, 2021, 10:46 AM Timothy Potter <thelabd...@gmail.com> wrote:
>>
>> I'm not missing the point of the query coordinator, but I actually
>> didn't realize that an empty Solr node would forward the top-level
>> request onward instead of just being the query controller itself? That
>> actually seems like a bug vs. a feature, IMO any node that receives
>> the top-level query should just be the coordinator, what stops it?
>
>
> To process a request there should be a core that uses the same configset as 
> the requested collection.
>>
>>
>> Anyway, it sounds to me like you guys have your minds made up
>> regardless of feedback.
>>
>> Btw ~ I only mentioned the Zookeeper part b/c it's in your SIP as a
>> specific role, not sure why you took that as me wanting to discuss the
>> embedded ZK in your SIP?
>>
>> On Tue, Nov 2, 2021 at 5:13 PM Ishan Chattopadhyaya
>> <ichattopadhy...@gmail.com> wrote:
>> >
>> > Hi Tim,
>> > Here are my responses inline.
>> >
>> > On Wed, Nov 3, 2021 at 3:22 AM Timothy Potter <thelabd...@gmail.com> wrote:
>> >>
>> >> I'm just not convinced this feature is even needed and the SIP is not
>> >> convincing that "There is no proper alternative today."
>> >
>> >
>> > There are no proper alternatives today, just hacks. On 8x, we have two 
>> > different deprecated frameworks to stop nodes from being placed on a node 
>> > (1. rule based replica placement, 2. autoscaling framework). On 9x, we 
>> > have a new autoscaling framework, which I don't even think is fully 
>> > implemented. And, there's definitely no way to have a node act as a query 
>> > coordinator without having data on it.
>> >
>> >>
>> >>
>> >> 1) Just b/c Elastic and Vespa have a concept of node roles, doesn't
>> >> mean Solr needs this.
>> >
>> >
>> > Solr needs this. Elastic has such concepts is a coincidence, and also 
>> > means we have an opportunity to catch up with them; they have these 
>> > concepts for a reason.
>> >
>> >>
>> >> Also, some of Elastic's roles overlap with
>> >> concepts Solr already has in a different form, i.e data_hot sounds
>> >> like NRT and data_warm sounds a lot like our Pull Replica Type
>> >
>> >
>> > I think that is beyond the scope of this SIP.
>> >
>> >>
>> >>
>> >> 2) You can achieve the "coordinator" role with auto-scaling rules
>> >> pre-9.x and with the AffinityPlacementPlugin (heck, it even has a node
>> >> type built in: 
>> >> .requestNodeSystemProperty(AffinityPlacementConfig.NODE_TYPE_SYSPROP).
>> >> Simply build your replica placement rules such that no replicas land
>> >> on "coordinator" nodes. And you can route queries using node.sysprop
>> >> already using shards.preference.
>> >
>> >
>> > I think you missed the whole point of the query coordinator. Please refer 
>> > to this https://issues.apache.org/jira/browse/SOLR-15715.
>> > Let me summarize the main difference between what (I think) you refer to 
>> > and what is proposed in SOLR-15715.
>> >
>> > With your suggestion, we'll have a node that doesn't host any replicas. 
>> > And you suggest queries landing on such nodes be routed using 
>> > shards.preference? Well, in such a case, these queries will be 
>> > forwarded/proxied to a random node hosting a replica of the collection and 
>> > that node then acts as the coordinator. This situation is no better than 
>> > sending the query directly to that particular node.
>> >
>> > What is proposed in SOLR-15715 is a query aggregation functionality. There 
>> > will be pseudo replicas (aware of the configset) on this coordinator node 
>> > that handle the request themselves, sends shard requests to data hosting 
>> > replicas, collects responses and merges them, and sends back to the user. 
>> > This merge step is usually extremely memory intensive, and it would be 
>> > good to serve these off stateless nodes (that host no data).
>> >
>> >>
>> >>
>> >> 3) Dedicated overseer role? I thought we were removing the overseer?!?
>> >> Also, we already have the ability to run the overseer on specific
>> >> nodes w/o a new framework, so this doesn't really convince me we need
>> >> a new framework.
>> >
>> >
>> > There's absolutely no change proposed to the "overseer" role. What users 
>> > need on production clusters are nodes dedicated for overseer operations, 
>> > and for that the current "overseer" role suffices, together with some 
>> > functionality to not place replicas on such nodes.
>> >
>> >>
>> >>
>> >> 4) We will indeed need to decide which nodes host embedded Zookeeper's
>> >> but I'd argue that solution hasn't been designed entirely and we
>> >> probably don't need a formal node role framework to determine which
>> >> nodes host embedded ZKs. Moreover, embedded ZK seems more like a small
>> >> cluster thing and anyone running a large cluster will probably have a
>> >> dedicated ZK ensemble as they do today. The node role thing seems like
>> >> it's intended for large clusters and my gut says few will use embedded
>> >> ZK for large clusters.
>> >
>> >
>> > This SIP is not the right place for this discussion. There's a separate 
>> > SIP for this.
>> >
>> >>
>> >>
>> >> 5) You can also achieve a lot of "node role" functionality in query
>> >> routing using the shards.preference parameter.
>> >>
>> >
>> > That doesn't solve the purpose behind 
>> > https://issues.apache.org/jira/browse/SOLR-15715.
>> >
>> >>
>> >> At the very least, the SIP needs to list specific use cases that
>> >> require this feature that are not achievable with the current features
>> >> before getting bogged down in the impl. details.
>> >
>> >
>> > The coordinator role is the biggest motivation for introducing the concept 
>> > of roles. However, in addition to what is proposed in SOLR-15715, a 
>> > coordinator node can later on also be used as a node for users to run 
>> > streaming expressions on, do bulk indexing on (impl details for this to 
>> > come later, don't want distraction here).
>> >
>> >>
>> >>
>> >> Tim
>> >>
>> >> On Tue, Nov 2, 2021 at 3:20 PM Gus Heck <gus.h...@gmail.com> wrote:
>> >> >
>> >> > I think there are things not yet accounted for. Time I spent yesterday 
>> >> > is biting me today. Pls give a couple days.
>> >> >
>> >> > On Tue, Nov 2, 2021 at 11:28 AM Jason Gerlowski <gerlowsk...@gmail.com> 
>> >> > wrote:
>> >> >>
>> >> >> Hey Ishan,
>> >> >>
>> >> >> I appreciate you writing up the SIP!  Here's some notes/questions I
>> >> >> had as I was reading through your writeup and this mail thread.
>> >> >> ("----" separators between thoughts, hopefully that helps.)
>> >> >>
>> >> >> ----
>> >> >>
>> >> >> I'll add my vote to what Jan, Gus, Ilan, and Houston already
>> >> >> suggested: roles should default to "all-on".  I see the downsides
>> >> >> you're worried about with that approach (esp. around 'overseer'), but
>> >> >> they may be mitigatable, at least in part.
>> >> >>
>> >> >> > [mail thread] User wants this node Solr101 to be a dedicated 
>> >> >> > overseer, but for that to happen, he/she would need to restart all 
>> >> >> > the data nodes with -Dnode.roles=data
>> >> >>
>> >> >> Sure, if roles can only be specified at startup.  But that may be a
>> >> >> self-imposed constraint.
>> >> >>
>> >> >> An API to change a node's roles would remove the need for a restart
>> >> >> and make it easy for users to affect the semantics they want.  You
>> >> >> decided you want a dedicated overseer N nodes into your cluster
>> >> >> deployment?  Deploy node 'N' with the 'overseer', and toggle the
>> >> >> overseer role off on the remainder.
>> >> >>
>> >> >> Now, I understand that you don't want roles to change at runtime, but
>> >> >> I haven't seen you get much into "why", beyond saying "it is very
>> >> >> risky to have nodes change roles while they are up and running."  Can
>> >> >> you expand a bit on the risks you're worried about?  If you're
>> >> >> explicit about them here maybe someone can think of a clever way to
>> >> >> address them?
>> >> >>
>> >> >> > Hence, if those nodes are "assumed to have all roles", then just by 
>> >> >> > virtue of upgrading to this new version, new capabilities will be 
>> >> >> > turned on for the entire cluster, whether or not the user opted for 
>> >> >> > such a capability. This is totally undesirable.
>> >> >>
>> >> >> Obviously "roles" refer to much bigger chunks of functionality than
>> >> >> usual, so in a sense defaulting roles on is scarier.  But in a sense
>> >> >> you're describing something that's an inherent part of software
>> >> >> releases.  Releases expose new features that are typically on by
>> >> >> default.  A new default-on role in 9.1 might hurt a user, but there's
>> >> >> no fundamental difference between that and a change to backups or
>> >> >> replication or whatever in the same release.
>> >> >>
>> >> >> I don't mean to belittle the difference in scope - I get your concern.
>> >> >> But IMO this is something to address with good release notes and
>> >> >> documentation.  Designing for admins who don't do even cursory
>> >> >> research before an upgrade ties both our hands behind our back as a
>> >> >> project.
>> >> >>
>> >> >> ----
>> >> >>
>> >> >> > [SIP] Internal representation in ZK ... Implementation details like 
>> >> >> > these can be fleshed out in the PR
>> >> >>
>> >> >> IMO this is important enough to flush out as part of the SIP, at least
>> >> >> in broad strokes.  It affects backcompat, SolrJ client design, etc.
>> >> >>
>> >> >> ----
>> >> >>
>> >> >> > [SIP] GET /api/cluster/roles?node=node1
>> >> >>
>> >> >> Woohoo - way to include a v2 API definition!
>> >> >>
>> >> >> AFAIR, the v2 API has a /nodes path defined - I wonder whether "GET
>> >> >> /nodes/someNode/roles" wouldn't be a more intuitive endpoint for the
>> >> >> "get the roles this node has" functionality.  Though I leave that for
>> >> >> your consideration.
>> >> >>
>> >> >> ----
>> >> >>
>> >> >> Looking forward to your responses and seeing the SIP progress!  It's a
>> >> >> really cool, promising idea IMO.
>> >> >>
>> >> >> Best,
>> >> >>
>> >> >> Jason
>> >> >>
>> >> >> On Tue, Nov 2, 2021 at 11:21 AM Ishan Chattopadhyaya
>> >> >> <ichattopadhy...@gmail.com> wrote:
>> >> >> >
>> >> >> > Are there any unaddressed outstanding concerns that we should hold 
>> >> >> > up the SIP for?
>> >> >> >
>> >> >> > On Mon, 1 Nov, 2021, 10:31 pm Ishan Chattopadhyaya, 
>> >> >> > <ichattopadhy...@gmail.com> wrote:
>> >> >> >>>
>> >> >> >>> >> Agree. However, I disagree with ideas where "query analysis" 
>> >> >> >>> >> has a role of its own. Where would that lead us to? Separate 
>> >> >> >>> >> roles for
>> >> >> >>>
>> >> >> >>> >> nodes that do "faceting" or "spell correction" etc.? But 
>> >> >> >>> >> anyway, that is for discussion when we add future roles. This 
>> >> >> >>> >> is beyond this SIP.
>> >> >> >>
>> >> >> >>
>> >> >> >> > I am not asking you to implement every possible role of course 
>> >> >> >> > :). As a note I know a company that is running an entire separate
>> >> >> >> > cluster to offload and better serve highlighting on a subset of 
>> >> >> >> > large docs, so YES I think there are people who may want such 
>> >> >> >> > fine grained control.
>> >> >> >>
>> >> >> >> Cool, I think we can discuss adding any additional roles (for 
>> >> >> >> highlighting?) on a case by case basis at a later point.
>> >> >> >>
>> >> >> >>
>> >> >> >> On Mon, Nov 1, 2021 at 10:25 PM Ishan Chattopadhyaya 
>> >> >> >> <ichattopadhy...@gmail.com> wrote:
>> >> >> >>>
>> >> >> >>> > Boiling it down the idea I'm proposing is that roles required 
>> >> >> >>> > for back compatibility get explicitly added on startup, if not 
>> >> >> >>> > by the user then by the code. This is more flexible than 
>> >> >> >>> > assuming that no role means every role, because then every new 
>> >> >> >>> > feature that has a role will end up on legacy clusters which are 
>> >> >> >>> > also not back compatible.
>> >> >> >>>
>> >> >> >>> +1, I totally agree. I even said so, when I said: "This is why I 
>> >> >> >>> was advocating that 1) we assume the "data" as a default, 2) not 
>> >> >> >>> assume overseer to be implicitly defined (because of the way 
>> >> >> >>> overseer role is written today), 3) not assume any future roles to 
>> >> >> >>> be true by default."
>> >> >> >>>
>> >> >> >>> So, basically, I'm proposing that the "roles required for back 
>> >> >> >>> compatibility" (that should be explicitly added on startup) be 
>> >> >> >>> just the ["data"] role, and not the "overseer" role (due to the 
>> >> >> >>> way overseer role is currently defined, i.e. it is "preferred 
>> >> >> >>> overseer").
>> >> >> >>>
>> >> >> >>> On Mon, Nov 1, 2021 at 10:19 PM Gus Heck <gus.h...@gmail.com> 
>> >> >> >>> wrote:
>> >> >> >>>>
>> >> >> >>>> Very sorry don't mean to sound offended, Frustrated yes offended 
>> >> >> >>>> no :)... the most difficult thing about communication is the 
>> >> >> >>>> illusion it has occurred :)
>> >> >> >>>>
>> >> >> >>>> If you read back just a few emails you'll see where I talk about 
>> >> >> >>>> roles being applied on startup. Boiling it down the idea I'm 
>> >> >> >>>> proposing is that roles required for back compatibility get 
>> >> >> >>>> explicitly added on startup, if not by the user then by the code. 
>> >> >> >>>> This is more flexible than assuming that no role means every 
>> >> >> >>>> role, because then every new feature that has a role will end up 
>> >> >> >>>> on legacy clusters which are also not back compatible.
>> >> >> >>>>
>> >> >> >>>> There are points where I said all roles rather than back 
>> >> >> >>>> compatibility roles because I was thinking about back 
>> >> >> >>>> compatibility specifically, but you can't know that if I don't 
>> >> >> >>>> say that can you :).
>> >> >> >>>>
>> >> >> >>>> On Mon, Nov 1, 2021 at 12:39 PM Ishan Chattopadhyaya 
>> >> >> >>>> <ichattopadhy...@gmail.com> wrote:
>> >> >> >>>>>
>> >> >> >>>>> > If you read more closely, my way can provide full back 
>> >> >> >>>>> > compatibility. To say or imply it doesn't isn't helping. 
>> >> >> >>>>> > Perhaps you need to re-read?
>> >> >> >>>>>
>> >> >> >>>>> I understand e-mails are frustrating, and I'm trying my best. 
>> >> >> >>>>> Please don't be offended, and kindly point me to the exact part 
>> >> >> >>>>> you want me to re-read.
>> >> >> >>>>>
>> >> >> >>>>> On Mon, Nov 1, 2021 at 10:05 PM Gus Heck <gus.h...@gmail.com> 
>> >> >> >>>>> wrote:
>> >> >> >>>>>>
>> >> >> >>>>>>
>> >> >> >>>>>>
>> >> >> >>>>>> On Mon, Nov 1, 2021 at 12:22 PM Ishan Chattopadhyaya 
>> >> >> >>>>>> <ichattopadhy...@gmail.com> wrote:
>> >> >> >>>>>>>
>> >> >> >>>>>>> >    Positive - They denote the existence of a capability
>> >> >> >>>>>>>
>> >> >> >>>>>>> Agree, the SIP already reflects this.
>> >> >> >>>>>>>
>> >> >> >>>>>>> >   Absolute - Absence/Presence binary identification of a 
>> >> >> >>>>>>> > capability; no implications, no assumptions
>> >> >> >>>>>>>
>> >> >> >>>>>>> Disagree, we need backcompat handling on nodes running without 
>> >> >> >>>>>>> any roles. There has to be an implicit assumption as to what 
>> >> >> >>>>>>> roles are those nodes assumed to have. My proposal is that 
>> >> >> >>>>>>> only the "data" role be assumed, but not the "overseer" role. 
>> >> >> >>>>>>> For any future roles ("coordinator", "zookeeper" etc.), this 
>> >> >> >>>>>>> decision as to what absence of any role implies should be left 
>> >> >> >>>>>>> to the implementation of that future role. Documentation 
>> >> >> >>>>>>> should reflect clearly about these implicit assumptions.
>> >> >> >>>>>>>
>> >> >> >>>>>>
>> >> >> >>>>>> If you read more closely, my way can provide full back 
>> >> >> >>>>>> compatibility. To say or imply it doesn't isn't helping. 
>> >> >> >>>>>> Perhaps you need to re-read?
>> >> >> >>>>>>
>> >> >> >>>>>>>
>> >> >> >>>>>>> >    Focused - Do one thing per role
>> >> >> >>>>>>>
>> >> >> >>>>>>> Agree. However, I disagree with ideas where "query analysis" 
>> >> >> >>>>>>> has a role of its own. Where would that lead us to? Separate 
>> >> >> >>>>>>> roles for nodes that do "faceting" or "spell correction" etc.? 
>> >> >> >>>>>>> But anyway, that is for discussion when we add future roles. 
>> >> >> >>>>>>> This is beyond this SIP.
>> >> >> >>>>>>>
>> >> >> >>>>>>
>> >> >> >>>>>> I am not asking you to implement every possible role of course 
>> >> >> >>>>>> :). As a note I know a company that is running an entire 
>> >> >> >>>>>> separate cluster to offload and better serve highlighting on a 
>> >> >> >>>>>> subset of large docs, so YES I think there are people who may 
>> >> >> >>>>>> want such fine grained control.
>> >> >> >>>>>>
>> >> >> >>>>>>>
>> >> >> >>>>>>> >    Accessible - It should be dead simple to determine the 
>> >> >> >>>>>>> > members of a role, avoid parsing blobs of json, avoid 
>> >> >> >>>>>>> > calculating implications, avoid consulting other resources 
>> >> >> >>>>>>> > after listing nodes with the role
>> >> >> >>>>>>>
>> >> >> >>>>>>> Agree. I'm open to any implementation details that make it 
>> >> >> >>>>>>> easy. There should be a reasonable API to return these node 
>> >> >> >>>>>>> roles, with ability to filter by role or filter by node.
>> >> >> >>>>>>>
>> >> >> >>>>>>> >    Independent - One role should not require other roles to 
>> >> >> >>>>>>> > be present
>> >> >> >>>>>>>
>> >> >> >>>>>>> Do we need to have this hard and fast requirement upfront? 
>> >> >> >>>>>>> There might be situations where this is desirable. I feel we 
>> >> >> >>>>>>> can discuss on a case by case basis whenever a future role is 
>> >> >> >>>>>>> added.
>> >> >> >>>>>>>
>> >> >> >>>>>>> >    Persistent - roles should not be lost across reboot
>> >> >> >>>>>>>
>> >> >> >>>>>>> Agree.
>> >> >> >>>>>>>
>> >> >> >>>>>>> >    Immutable - roles should not change while the node is 
>> >> >> >>>>>>> > running
>> >> >> >>>>>>>
>> >> >> >>>>>>> Agree
>> >> >> >>>>>>>
>> >> >> >>>>>>> >    Lively - A node with a capability may not be presently 
>> >> >> >>>>>>> > providing that capability.
>> >> >> >>>>>>>
>> >> >> >>>>>>> I don't understand, can you please elaborate?
>> >> >> >>>>>>
>> >> >> >>>>>>
>> >> >> >>>>>>
>> >> >> >>>>>> Specifically imagine the case where there are 100 nodes:
>> >> >> >>>>>> 1-100 ==> DATA
>> >> >> >>>>>> 101-103 ==> OVERSEER
>> >> >> >>>>>> 104-106 ==> ZOOKEEPER
>> >> >> >>>>>>
>> >> >> >>>>>> But you won't have 3 overseers... you'll want only one of those 
>> >> >> >>>>>> to be providing overseer functionality and the other two to be 
>> >> >> >>>>>> capable, but not providing (so that if the current overseer 
>> >> >> >>>>>> goes down a new one can be assigned).
>> >> >> >>>>>>
>> >> >> >>>>>> Then you decide you'd ike 5 Zookeepers. You start nodes 107-108 
>> >> >> >>>>>> with that role, but you probably want to ensure that zookeepers 
>> >> >> >>>>>> require some sort of command for them to actually join the 
>> >> >> >>>>>> zookeeper cluster (i.e. 
>> >> >> >>>>>> /admin?action=ZKADD&nodes=node107,node18) ... to do that the 
>> >> >> >>>>>> nodes need to be up. But oh look I typoed 108... we want that 
>> >> >> >>>>>> to fail... how? because 18 does not have the capability to 
>> >> >> >>>>>> become a zookeeper.
>> >> >> >>>>>>
>> >> >> >>>>>>>
>> >> >> >>>>>>>
>> >> >> >>>>>>> On Mon, Nov 1, 2021 at 9:30 PM Ishan Chattopadhyaya 
>> >> >> >>>>>>> <ichattopadhy...@gmail.com> wrote:
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> > Ilan: A node not having node.roles defined should be 
>> >> >> >>>>>>>> > assumed to have all roles. Not only data. I don't see a 
>> >> >> >>>>>>>> > reason to special case this one or any role.
>> >> >> >>>>>>>> > Gus: There should be no "assumptions" Nothing to figure 
>> >> >> >>>>>>>> > out. A node has a role or not. For back compatibility 
>> >> >> >>>>>>>> > reasons, all roles would be assumed on startup if none 
>> >> >> >>>>>>>> > specified.
>> >> >> >>>>>>>> > Jan: No role == all roles. Explicit list of roles = exactly 
>> >> >> >>>>>>>> > those roles.
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> Problem with this approach is mainly to do with backcompat.
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> 1. Overseer backcompat:
>> >> >> >>>>>>>> If we don't make any modifications to how overseer works and 
>> >> >> >>>>>>>> adopt this approach (as quoted), then imagine this situation:
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> Solr1-100: No roles param (assumed to be "data,overseer").
>> >> >> >>>>>>>> Solr101: -Dnode.roles=overseer (intention: dedicated overseer)
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> User wants this node Solr101 to be a dedicated overseer, but 
>> >> >> >>>>>>>> for that to happen, he/she would need to restart all the data 
>> >> >> >>>>>>>> nodes with -Dnode.roles=data. This will cause unnecessary 
>> >> >> >>>>>>>> disruption to running clusters where a dedicated overseer is 
>> >> >> >>>>>>>> needed. Keep in mind, if a user needs a dedicated overseer, 
>> >> >> >>>>>>>> he's likely in an emergency situation and restarting the 
>> >> >> >>>>>>>> whole cluster might not be viable for him/her.
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> 2. Future roles might not be compatible with this "assumed to 
>> >> >> >>>>>>>> have all roles" idea:
>> >> >> >>>>>>>> Take the proposed "zookeeper" role for example. Today, 
>> >> >> >>>>>>>> regular nodes are not supposed to have embedded ZK running on 
>> >> >> >>>>>>>> them. By introducing this artificial limitation ("assumed to 
>> >> >> >>>>>>>> have all roles"), we constrain adoption of all future roles 
>> >> >> >>>>>>>> to necessarily require a full cluster restart.
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> Keep in mind newer Solr versions can introduce new 
>> >> >> >>>>>>>> capabilities and roles. Imagine we have a role that is 
>> >> >> >>>>>>>> defined in a new Solr version (and there's functionality to 
>> >> >> >>>>>>>> go with that role), and user upgrades to that version. 
>> >> >> >>>>>>>> However, his/her nodes all were started with no node.roles 
>> >> >> >>>>>>>> param. Hence, if those nodes are "assumed to have all roles", 
>> >> >> >>>>>>>> then just by virtue of upgrading to this new version, new 
>> >> >> >>>>>>>> capabilities will be turned on for the entire cluster, 
>> >> >> >>>>>>>> whether or not the user opted for such a capability. This is 
>> >> >> >>>>>>>> totally undesirable.
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> > Gus: I actually don't want a coordinator to do more work, I 
>> >> >> >>>>>>>> > would prefer small focused roles with names that accurately 
>> >> >> >>>>>>>> > describe their function. In that light, COORDINATOR might 
>> >> >> >>>>>>>> > be too nebulous. How about AGREGATOR role? (what I was 
>> >> >> >>>>>>>> > thinking of would better be called a QUERY_ANALYSIS role)
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> If you want to do specific things like query analysis or 
>> >> >> >>>>>>>> query aggregation or bulk indexing etc, all of those can be 
>> >> >> >>>>>>>> done on COORDINATOR nodes (as is the case in ElasticSearch). 
>> >> >> >>>>>>>> Having tens of of " small focused roles" defined as first 
>> >> >> >>>>>>>> class concepts would be confusing to the user. As a remedy to 
>> >> >> >>>>>>>> your situation where you want the coordinator role to also do 
>> >> >> >>>>>>>> query-analysis for shards, one possible solution is to send 
>> >> >> >>>>>>>> such a query to a coordinator node with a parameter like 
>> >> >> >>>>>>>> "coordinator.query_analysis=true", and then the coordinator, 
>> >> >> >>>>>>>> instead of blindly hitting remote shards, also does some 
>> >> >> >>>>>>>> extra work on behalf of the shards.
>> >> >> >>>>>>>>
>> >> >> >>>>>>>>
>> >> >> >>>>>>>> On Mon, Nov 1, 2021 at 9:01 PM Ishan Chattopadhyaya 
>> >> >> >>>>>>>> <ichattopadhy...@gmail.com> wrote:
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>> > If we make collections role-aware for example (replicas of 
>> >> >> >>>>>>>>> > that collection can only be
>> >> >> >>>>>>>>> > placed on nodes with a specific role, in addition to the 
>> >> >> >>>>>>>>> > other role based constraints),
>> >> >> >>>>>>>>> > the set of roles should be user extensible and not fixed.
>> >> >> >>>>>>>>> > If collections are not role aware, the constraints 
>> >> >> >>>>>>>>> > introduced by roles apply to all collections
>> >> >> >>>>>>>>> > equally which might be insufficient if a user needs for 
>> >> >> >>>>>>>>> > example a heavily used collection to
>> >> >> >>>>>>>>> > only be placed on more powerful nodes.
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>> I feel node roles and role-aware collections are orthogonal 
>> >> >> >>>>>>>>> topics. What you describe above can be achieved by the 
>> >> >> >>>>>>>>> autoscaling+replica placement framework where the placement 
>> >> >> >>>>>>>>> plugins take the node roles as one of the inputs.
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>> > It does impact the design from early on: the set of roles 
>> >> >> >>>>>>>>> > need to be expandable by a user
>> >> >> >>>>>>>>> > by creating a collection with new roles for example 
>> >> >> >>>>>>>>> > (consumed by placement plugins) and be
>> >> >> >>>>>>>>> > able to start nodes with new (arbitrary) roles. Should 
>> >> >> >>>>>>>>> > such roles follow some naming syntax to
>> >> >> >>>>>>>>> > differentiate them from built in roles? To be able to fail 
>> >> >> >>>>>>>>> > on typos on roles - that otherwise can be
>> >> >> >>>>>>>>> > crippling and hard to debug. This implies in any case that 
>> >> >> >>>>>>>>> > the current design can't assume all
>> >> >> >>>>>>>>> > roles are known at compile time or define them in a Java 
>> >> >> >>>>>>>>> > enum.
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>> I think this should be achieved by something different from 
>> >> >> >>>>>>>>> roles. Something like node labels (user defined) which can 
>> >> >> >>>>>>>>> then be used in a replica placement plugin to assign 
>> >> >> >>>>>>>>> replicas. I see roles as more closely associated with kinds 
>> >> >> >>>>>>>>> of functionality a node is designated for. Therefore, I feel 
>> >> >> >>>>>>>>> that replica placements and user defined node labels is out 
>> >> >> >>>>>>>>> of scope for this SIP. It can be added later in a separate 
>> >> >> >>>>>>>>> SIP, without being at odds with this proposal.
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>>
>> >> >> >>>>>>>>> On Mon, Nov 1, 2021 at 8:42 PM Jan Høydahl 
>> >> >> >>>>>>>>> <jan....@cominvent.com> wrote:
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>>>>> > 1. nov. 2021 kl. 14:46 skrev Ilan Ginzburg 
>> >> >> >>>>>>>>>> > <ilans...@gmail.com>:
>> >> >> >>>>>>>>>> > A node not having node.roles defined should be assumed to 
>> >> >> >>>>>>>>>> > have all roles. Not only data. I don't see a reason to 
>> >> >> >>>>>>>>>> > special case this one or any role.
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>>>>> +1, make it simple and transparent. No role == all roles. 
>> >> >> >>>>>>>>>> Explicit list of roles = exactly those roles.
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>>>>> > (Gus) See my comment above, but maybe preference is 
>> >> >> >>>>>>>>>> > something handled as a feature of the role rather than 
>> >> >> >>>>>>>>>> > via role designation?
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>>>>> Yea, we always need an overseer, so that feature can decide 
>> >> >> >>>>>>>>>> to use its list of nodes as a preference if it so chooses.
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>>>>> Aside: I think it makes it easier if we always prefix Solr 
>> >> >> >>>>>>>>>> env.vars and sys.props with "SOLR_" or "solr.", i.e. 
>> >> >> >>>>>>>>>> -Dsolr.node.roles=foo. That way we can get away from having 
>> >> >> >>>>>>>>>> to have explicit code in bin/solr, bin/solr.cmd and SolrCLI 
>> >> >> >>>>>>>>>> to manage every single property. Instead we can parse all 
>> >> >> >>>>>>>>>> ENVs and Props with the solr prefix in our bootstrap code. 
>> >> >> >>>>>>>>>> And we can by convention allow e.g. docker run -e 
>> >> >> >>>>>>>>>> SOLR_NODE_ROLES=foo solr:9 and it would be the same ting...
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>>>>> Jan
>> >> >> >>>>>>>>>> ---------------------------------------------------------------------
>> >> >> >>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
>> >> >> >>>>>>>>>> For additional commands, e-mail: dev-h...@solr.apache.org
>> >> >> >>>>>>>>>>
>> >> >> >>>>>>
>> >> >> >>>>>>
>> >> >> >>>>>> --
>> >> >> >>>>>> http://www.needhamsoftware.com (work)
>> >> >> >>>>>> http://www.the111shift.com (play)
>> >> >> >>>>
>> >> >> >>>>
>> >> >> >>>>
>> >> >> >>>> --
>> >> >> >>>> http://www.needhamsoftware.com (work)
>> >> >> >>>> http://www.the111shift.com (play)
>> >> >>
>> >> >> ---------------------------------------------------------------------
>> >> >> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
>> >> >> For additional commands, e-mail: dev-h...@solr.apache.org
>> >> >>
>> >> >
>> >> >
>> >> > --
>> >> > http://www.needhamsoftware.com (work)
>> >> > http://www.the111shift.com (play)
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
>> >> For additional commands, e-mail: dev-h...@solr.apache.org
>> >>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
>> For additional commands, e-mail: dev-h...@solr.apache.org
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
For additional commands, e-mail: dev-h...@solr.apache.org

Reply via email to