@Override public List<String> getStateModelDefs(String clusterName) { return _zkClient.getChildren(PropertyPathBuilder.stateModelDef(clusterName)); }
@Override public List<String> getStateModelDefs(String clusterName) { return _zkClient.getChildren(PropertyPathBuilder.stateModelDef(clusterName)); }
requiredPaths.add(PropertyPathBuilder.externalView(clusterName)); requiredPaths.add(PropertyPathBuilder.controller(clusterName)); requiredPaths.add(PropertyPathBuilder.stateModelDef(clusterName)); requiredPaths.add(PropertyPathBuilder.controllerMessage(clusterName)); requiredPaths.add(PropertyPathBuilder.controllerError(clusterName));
requiredPaths.add(PropertyPathBuilder.externalView(clusterName)); requiredPaths.add(PropertyPathBuilder.controller(clusterName)); requiredPaths.add(PropertyPathBuilder.stateModelDef(clusterName)); requiredPaths.add(PropertyPathBuilder.controllerMessage(clusterName)); requiredPaths.add(PropertyPathBuilder.controllerError(clusterName));
@Override public void addStateModelDef(String clusterName, String stateModelDef, StateModelDefinition stateModel, boolean recreateIfExists) { logger .info("Add StateModelDef {} in cluster {} with StateModel {}.", stateModelDef, clusterName, stateModel == null ? "NULL" : stateModel.toString()); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } String stateModelDefPath = PropertyPathBuilder.stateModelDef(clusterName); String stateModelPath = stateModelDefPath + "/" + stateModelDef; if (_zkClient.exists(stateModelPath)) { if (recreateIfExists) { logger.info( "Operation.State Model directory exists:" + stateModelPath + ", remove and recreate."); _zkClient.deleteRecursively(stateModelPath); } else { logger.info("Skip the operation. State Model directory exists:" + stateModelPath); return; } } HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); accessor.setProperty(keyBuilder.stateModelDef(stateModelDef), stateModel); }
@Override public void addResource(String clusterName, String resourceName, IdealState idealstate) { logger.info("Add resource {} in cluster {}.", resourceName, clusterName); String stateModelRef = idealstate.getStateModelDefRef(); String stateModelDefPath = PropertyPathBuilder.stateModelDef(clusterName, stateModelRef); if (!_zkClient.exists(stateModelDefPath)) { throw new HelixException( "State model " + stateModelRef + " not found in the cluster STATEMODELDEFS path"); } String idealStatePath = PropertyPathBuilder.idealState(clusterName); String resourceIdealStatePath = idealStatePath + "/" + resourceName; if (_zkClient.exists(resourceIdealStatePath)) { throw new HelixException("Skip the operation. Resource ideal state directory already exists:" + resourceIdealStatePath); } ZKUtil.createChildren(_zkClient, idealStatePath, idealstate.getRecord()); }
@Override public void addResource(String clusterName, String resourceName, IdealState idealstate) { logger.info("Add resource {} in cluster {}.", resourceName, clusterName); String stateModelRef = idealstate.getStateModelDefRef(); String stateModelDefPath = PropertyPathBuilder.stateModelDef(clusterName, stateModelRef); if (!_zkClient.exists(stateModelDefPath)) { throw new HelixException( "State model " + stateModelRef + " not found in the cluster STATEMODELDEFS path"); } String idealStatePath = PropertyPathBuilder.idealState(clusterName); String resourceIdealStatePath = idealStatePath + "/" + resourceName; if (_zkClient.exists(resourceIdealStatePath)) { throw new HelixException("Skip the operation. Resource ideal state directory already exists:" + resourceIdealStatePath); } ZKUtil.createChildren(_zkClient, idealStatePath, idealstate.getRecord()); }
@Override public void addStateModelDef(String clusterName, String stateModelDef, StateModelDefinition stateModel, boolean recreateIfExists) { logger .info("Add StateModelDef {} in cluster {} with StateModel {}.", stateModelDef, clusterName, stateModel == null ? "NULL" : stateModel.toString()); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } String stateModelDefPath = PropertyPathBuilder.stateModelDef(clusterName); String stateModelPath = stateModelDefPath + "/" + stateModelDef; if (_zkClient.exists(stateModelPath)) { if (recreateIfExists) { logger.info( "Operation.State Model directory exists:" + stateModelPath + ", remove and recreate."); _zkClient.deleteRecursively(stateModelPath); } else { logger.info("Skip the operation. State Model directory exists:" + stateModelPath); return; } } HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); accessor.setProperty(keyBuilder.stateModelDef(stateModelDef), stateModel); }
@Override public boolean createStateModelDef(StateModelDefinition stateModelDef) { String path = PropertyPathBuilder.stateModelDef(_clusterName, stateModelDef.getId()); HelixProperty property = getProperty(new PropertyKey.Builder(_clusterName).stateModelDef(stateModelDef.getId())); // Set new StateModelDefinition if it is different from old one. if (property != null) { // StateModelDefinition need to be updated if (!new StateModelDefinition(property.getRecord()).equals(stateModelDef)) { return stateModelDef.isValid() && _baseDataAccessor .set(path, stateModelDef.getRecord(), AccessOption.PERSISTENT); } } else { // StateModeDefinition does not exist return stateModelDef.isValid() && _baseDataAccessor .create(path, stateModelDef.getRecord(), AccessOption.PERSISTENT); } // StateModelDefinition exists but not need to be updated return true; }
@Override public boolean createStateModelDef(StateModelDefinition stateModelDef) { String path = PropertyPathBuilder.stateModelDef(_clusterName, stateModelDef.getId()); HelixProperty property = getProperty(new PropertyKey.Builder(_clusterName).stateModelDef(stateModelDef.getId())); // Set new StateModelDefinition if it is different from old one. if (property != null) { // StateModelDefinition need to be updated if (!new StateModelDefinition(property.getRecord()).equals(stateModelDef)) { return stateModelDef.isValid() && _baseDataAccessor .set(path, stateModelDef.getRecord(), AccessOption.PERSISTENT); } } else { // StateModeDefinition does not exist return stateModelDef.isValid() && _baseDataAccessor .create(path, stateModelDef.getRecord(), AccessOption.PERSISTENT); } // StateModelDefinition exists but not need to be updated return true; }
try { tool.addStateModelDef(clusterName, "id1", new StateModelDefinition(stateModelRecord)); path = PropertyPathBuilder.stateModelDef(clusterName, "id1"); AssertJUnit.assertTrue(_gZkClient.exists(path)); Assert.fail("should fail");
String stateModelPath = PropertyPathBuilder.stateModelDef(CLUSTER_NAME); _gZkClient.deleteRecursively(stateModelPath);
_zkClient.createPersistent(PropertyPathBuilder.stateModelDef(clusterName));
_zkClient.createPersistent(PropertyPathBuilder.stateModelDef(clusterName));
.create(PropertyPathBuilder.stateModelDef(clusterName), new ZNRecord(clusterName), 0);