Status

Current state: Under discussion

Discussion thread: SOLR-14041

JIRA: https://issues.apache.org/jira/browse/SOLR-14041

Released: TBD

Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast). Confluence supports inline comments that can also be used.

Motivation

To introduce api endpoints to modify configsets using rest apis. The configests in this case need not be assoiciated with a collection. 
Valid scenarios -
1. Cases where a configset creation automation is to be done based on a set of rules before we go ahead and create a collection 
on it this would be very helpful
2. Cases where there multiple collections (A and B) associated with one configset (_config) these endpoints make more sense cause the current 
endpoints have 2 ways of editing them via A and B which internally modifies _config only

Public Interfaces

Two new endpoints shall be added for schema and solrconfig changes. - /api/cluster/configset/{name}/schema - /ap/cluster/configset/{name}/config Above api endpoints are to make configsets first class citizen just like collection. No changes to be done for older collection specific endpoints.

Proposed Changes

1. Refactor current implementation of ManagedSchema and SolrConfig classes to be independent of SolrCore. 
2. Adding new constructors that can create ManagedSchema and SolrConfig without a collection dependency i.e in such cases zk connection will be used to get resources
3. Add tests to validate them
These new endpoints shall be experimental and for power users only. No impact on existing users
Phasing out older behaviour is still to be debated
Note : SolrConfig implementation doesn't implement a watch on zookeeper resources rightnow like ManagedSchema, because of which if a configset A is changed using these apis collections associated with it, however that is not the case with managed schema. This can be implemented if required

Compatibility, Deprecation, and Migration Plan

N/A

Test Plan

Test cases to check behavior have been added, since this is just a refactor of existing implementation, this is fairly easy.


Rejected Alternatives

N/A

  • No labels