Hi all, Kishore, Jason and I met today to discuss the Helix APIs. The following tasks are identified
- Commands will remain limited to the model entities i.e. Cluster, Resource, Member and Partition. All other commands will be collapsed in the ones for model. - We need to figure a way to have a generic command built so command writers can simply update the generic command and we can execute that command. - Finders introduced in the HelixClient will leverage HelixQuery except for cases where its a simple find e.g. findById or findAll where having the user write a query makes little sense and too much overhead. - A package for pipeline stage processors needs to be introduced with interfaces for Rebalancers, Provisioners and Target Providers. Name of the package needs to be determined. - A separate package will be added by the name "org.apache.helix.api.discovery" to carry ExternalView which will be renamed to ClusterView in the API - All model entities will be interfaces (or abstract classes) in API, all implementations will be in CORE and will implement the specific interfaces/abstract classes. This will allow backward compatibility. - In a subsequent release we will deprecate the old CORE apis and point to the appropriate API interfaces so that users can migrate out of CORE into API. - Provider API or SPI will have two separate interface sets (a) to store configuration and (b) for message bus - Resources will have specializations called PartitionedResource or ReplicatedResource. The configuration and runtime-state of these resource types will be different based on the types. - ReWrite recipes with the new APIs Other items to work on - Documentation to explain the helix actors, how they interact and play with each other. - Documentation on some of the core principles of the new API Kishore and Jason please add if I missed something. I will keep you guys posted as and when I progress through these items. Thanks, Sandeep
