Hi all, I think we've captured all recent feedback in the updated proposal. Thanks to Mike and others for helping us streamline the proposal to better suit the current overseer role. Thanks to Ilan and others for the concept of defaultIfAbsent concept. I think the proposal is not only complete, but also provides the simplicity for users to opt into roles, while also allowing room for developers to introduce new roles with ease. If there are no further objections, we'd like to proceed with the implementation. Thanks, Ishan
On Mon, Dec 6, 2021 at 9:28 PM Ishan Chattopadhyaya < [email protected]> wrote: > > > On Mon, Dec 6, 2021 at 9:18 PM Ishan Chattopadhyaya < > [email protected]> wrote: > >> I've updated the SIP document with the recent changes. Also, added a new >> section to provide guidance for adding new roles. >> >> On Mon, Dec 6, 2021 at 8:37 PM Ilan Ginzburg <[email protected]> wrote: >> >>> Ishan, >>> >>> > > Using a string separate from the role definitions (Ishan) makes it >>> too easy to have roles for which the default configuration is unknown. >>> > >>> > Ilan, can you please elaborate (perhaps with an example) as to what >>> you mean here? >>> >>> If the default string for all roles for nodes with no roles configured >>> got customized in a specific cluster (say it got changed to "data:on, >>> overseer:disallowed"), when a new version of Solr with a new role gets >>> deployed, that new role will not have a default defined in the string, >>> which might not be the intent (if the new role for example is "ui" and >>> the default expected to be "on", "ui" not being defined in the string >>> makes the default likely be "off" - more about that default below). >>> >> >> That new version (which introduces "ui" role) will modify the assumed >> default value for solr.node.roles from "data:on,overseer:allowed" to " >> data:on,overseer:allowed,ui:on". That means after upgrade, the nodes >> will have it turned on since the user is not using any role defined. If the >> user is already using roles on his/her nodes, then he/she would need to >> append "ui:on" to those nodes where he/she wants this new functionality to >> run. I've added a new section to the SIP document (guidance for adding new >> role to clarify this). >> >> >>> >>> > As per my proposal, a node that was started with explicit roles, but >>> without a particular role defined for it will have no functionality >>> associated with that role running on it at any point in its lifetime. For >>> example if a node was started with "-Dnodes.roles=data:on" will never have >>> anything to do with overseer functionality. There is no concept of defaults >>> in that case. >>> >>> That's the point. The code dealing with the overseer role will have to >>> make different decisions based on the role being "on" or "off", or if >>> we go with parameters, the role being "allowed", "disallowed", >>> "preferred". >>> >>> When you say "will never have anything to do with overseer >>> functionality" what does that mean when roles are defined but not the >>> overseer role? I assume that should mean that for this node, overseer >>> is "disallowed" (or pick any other value of the 3 possible ones). >>> Therefore, there is a default when the role is not defined (and other >>> roles are defined). If "will never have anything to do with overseer >>> functionality" is an option different from the 3 other ones, then we >>> end up with 4 different overseer related configuration options (but I >>> think it's better to be able to explicitly specify all configuration >>> options). >>> >>> So that's my point. A per role default for when a role is not defined. >>> >> >> Ah, I now see. Yes, there will be such a default for all roles that is >> assumed when no role is applied on that node. For "data" role, it is "off". >> For "overseer", it is "disallowed". >> Does that make sense? >> > > Ilan, > I've updated the SIP document to reflect this with a concept called > "defaultIfAbsent". Please review the SIP and let me know if it accurately > reflects your intention. > > >> >> >> >>> And if we have this for all roles, this is the node default roles >>> config when no roles are defined at all. When introducing role "ui" >>> with a role default of "on", then all existing nodes that do not >>> specify a configuration for this role (regardless of if they specify a >>> configuration for other roles) get the sound default. >>> >>> Ilan >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>>
