[ 
https://issues.apache.org/jira/browse/CASSANDRA-17044?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17431259#comment-17431259
 ] 

Alex Petrov edited comment on CASSANDRA-17044 at 10/21/21, 9:04 AM:
--------------------------------------------------------------------

[~jlewandowski] could you give some background on how you're planning to use / 
plug in etcd? Some changes are just not fully obvious without this information. 
I really like strides towards encapsulation, just want to understand where some 
of the things coming from. 

The main entrypoints seem to be {{SchemaUpdateHandler}}, am still curious about 
your design, since we already abstract {{SchemaProvider}}, which could 
theoretically give quite a lot of flexibility, especially given 
{{SchemaChangeNotifier}} and {{SchemaUpdateHandler}} are initialised within the 
schema itself.

I think all these questions arise because I'm trying to imagine an 
implementation of strongly consistent schema from these interfaces, so it could 
help if you could give more information about your etcd idea/implementation, 
since we definitely want to have an in-tree implementation using internal Paxos 
(see [CASSANDRA-10699]), and should consider how this patch would allow for 
both implementations to coexist peacefully, since as I would imagine majority 
of users would prefer a consistent schema implementation that does not have 
external dependencies, but until this happens, this patch could be a step in 
that direction.

I think the interface we should support may completely hide Schema storage 
behind the Provider interface, and updates can be propagated through the 
methods available on this interface. Local updates can/shall be applied right 
away, while global ones shall go through the consistent log impl. 

[~paulo] just to make sure, there's no explicit entity that is called 
{{Schema}} unlike all other examples. There's no {{HintsManager}}, but it's 
likely that you mean {{HintsStore}}, but there are also {{Hint}} s. Similarly, 
there are {{CompactionStrateg}} ies and there is their manager. I do not see 
how this makes the codebase more consistent (if only because we use the word 
{{Manager}} more), or more meaningful. I'm sure there never was any confusion 
about what {{Schema}} class represents. I agree with what Benedict has 
mentioned above with regard the fact that {{XManager}} is well used with 
countable nouns, where it makes it clear that it manager multiple instances of 
{{X}}.


was (Author: ifesdjeen):
[~jlewandowski] could you give some background on how you're planning to use / 
plug in etcd? Some changes are just not fully obvious without this information. 
I really like strides towards encapsulation, just want to understand where some 
of the things coming from. [UPD] I realise that the main entrypoint is 
{{SchemaUpdateHandler}}, but am still curious about your design.

[~paulo] just to make sure, there's no explicit entity that is called 
{{Schema}} unlike all other examples. There's no {{HintsManager}}, but it's 
likely that you mean {{HintsStore}}, but there are also {{Hint}} s. Similarly, 
there are {{CompactionStrateg}} ies and there is their manager. I do not see 
how this makes the codebase more consistent (if only because we use the word 
{{Manager}} more), or more meaningful. I'm sure there never was any confusion 
about what {{Schema}} class represents. I agree with what Benedict has 
mentioned above with regard the fact that {{XManager}} is well used with 
countable nouns, where it makes it clear that it manager multiple instances of 
{{X}}.

> Refactor schema management to allow for schema source pluggability
> ------------------------------------------------------------------
>
>                 Key: CASSANDRA-17044
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17044
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Cluster/Schema
>            Reporter: Jacek Lewandowski
>            Assignee: Jacek Lewandowski
>            Priority: Normal
>
> The idea is decompose `Schema` into separate entities responsible for 
> different things. In particular extract what is related to schema storage and 
> synchronization into a separate class so that it is possible to create an 
> extension point there and store schema in a different way than 
> `system_schema` keyspace, for example in etcd. 
> This would also simplify the logic and reduce the number of special cases, 
> make all the things more testable and the logic of internal classes 
> encapsulated.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to