Jiajun Wang created HELIX-659:
---------------------------------

             Summary: Support Additional Associate States
                 Key: HELIX-659
                 URL: https://issues.apache.org/jira/browse/HELIX-659
             Project: Apache Helix
          Issue Type: New Feature
          Components: helix-core
    Affects Versions: 0.6.x
            Reporter: Jiajun Wang


Currently, Helix only supports management a single state for all 
resources/partitions. However, in the real world, cluster management 
requirements may be more complicated than that.
In Pinot, for example, each partition need to be assigned a version for 
ensuring data consistency.
When a new version comes, the system needs to replace the old partition with 
the new one. And the replacement is done one partition by one partition. So any 
reads during this period will get inconsistent data.
Pinot system cannot directly put the version information into the 
section(partition) state field because it is already occupied by the main state 
(offline-online for instance) used by Helix controller.
So Pinot team relies on some workarounds to implement their application logic: 
creating a new resource with the latest version and replace them after the 
resource is fully loaded. And for Helix controller, version is unknown.
Another option is Pinot team maintaining their own config item or property 
store item for recording versions.
Both ways require Pinot team implementing version control themselves.
Another requirement is from Ambry team. Where partition can be "ONLINE:READ" or 
"ONLINE:WRITE".
In both cases, single state mechanism is not sufficient for applications' 
requirement.
It would be very helpful to provide a framework level feature that supports 
more than one states for each partition.
Benefits: 
# The application doesn't need to write additional code for managing additional 
states.
# Avoid potential conflict when multiple states transition happens concurrently.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to