in helix-core/src/main/java/org/apache/helix/controller/dataproviders/BaseControllerDataProvider.java [167:277]
public BaseControllerDataProvider(String clusterName, String pipelineName) {
_clusterName = clusterName;
_pipelineName = pipelineName;
_propertyDataChangedMap = new ConcurrentHashMap<>();
for (HelixConstants.ChangeType type : HelixConstants.ChangeType.values()) {
// refresh every type when it is initialized
_propertyDataChangedMap.put(type, new AtomicBoolean(true));
}
// initialize caches
_resourceConfigCache = new PropertyCache<>(this, "ResourceConfig", new PropertyCache.PropertyCacheKeyFuncs<ResourceConfig>() {
@Override
public PropertyKey getRootKey(HelixDataAccessor accessor) {
return accessor.keyBuilder().resourceConfigs();
}
@Override
public PropertyKey getObjPropertyKey(HelixDataAccessor accessor, String objName) {
return accessor.keyBuilder().resourceConfig(objName);
}
@Override
public String getObjName(ResourceConfig obj) {
return obj.getResourceName();
}
}, true);
_allLiveInstanceCache = new PropertyCache<>(this, "LiveInstance", new PropertyCache.PropertyCacheKeyFuncs<LiveInstance>() {
@Override
public PropertyKey getRootKey(HelixDataAccessor accessor) {
return accessor.keyBuilder().liveInstances();
}
@Override
public PropertyKey getObjPropertyKey(HelixDataAccessor accessor, String objName) {
return accessor.keyBuilder().liveInstance(objName);
}
@Override
public String getObjName(LiveInstance obj) {
return obj.getInstanceName();
}
}, true);
_allInstanceConfigCache = new PropertyCache<>(this, "InstanceConfig", new PropertyCache.PropertyCacheKeyFuncs<InstanceConfig>() {
@Override
public PropertyKey getRootKey(HelixDataAccessor accessor) {
return accessor.keyBuilder().instanceConfigs();
}
@Override
public PropertyKey getObjPropertyKey(HelixDataAccessor accessor, String objName) {
return accessor.keyBuilder().instanceConfig(objName);
}
@Override
public String getObjName(InstanceConfig obj) {
return obj.getInstanceName();
}
}, true);
_idealStateCache = new PropertyCache<>(this, "IdealState", new PropertyCache.PropertyCacheKeyFuncs<IdealState>() {
@Override
public PropertyKey getRootKey(HelixDataAccessor accessor) {
return accessor.keyBuilder().idealStates();
}
@Override
public PropertyKey getObjPropertyKey(HelixDataAccessor accessor, String objName) {
return accessor.keyBuilder().idealStates(objName);
}
@Override
public String getObjName(IdealState obj) {
return obj.getResourceName();
}
}, true);
_clusterConstraintsCache = new PropertyCache<>(this, "ClusterConstraint", new PropertyCache.PropertyCacheKeyFuncs<ClusterConstraints>() {
@Override
public PropertyKey getRootKey(HelixDataAccessor accessor) {
return accessor.keyBuilder().constraints();
}
@Override
public PropertyKey getObjPropertyKey(HelixDataAccessor accessor, String objName) {
return accessor.keyBuilder().constraint(objName);
}
@Override
public String getObjName(ClusterConstraints obj) {
// We set constraint type to the HelixProperty id
return obj.getId();
}
}, false);
_stateModelDefinitionCache = new PropertyCache<>(this, "StateModelDefinition", new PropertyCache.PropertyCacheKeyFuncs<StateModelDefinition>() {
@Override
public PropertyKey getRootKey(HelixDataAccessor accessor) {
return accessor.keyBuilder().stateModelDefs();
}
@Override
public PropertyKey getObjPropertyKey(HelixDataAccessor accessor, String objName) {
return accessor.keyBuilder().stateModelDef(objName);
}
@Override
public String getObjName(StateModelDefinition obj) {
return obj.getId();
}
}, false);
_currentStateCache = new CurrentStateCache(this);
_taskCurrentStateCache = new TaskCurrentStateCache(this);
_instanceMessagesCache = new InstanceMessagesCache(_clusterName);
}