use of org.apache.helix.HelixDataAccessor in project helix by apache.
the class ZKHelixAdmin method setInstanceZoneId.
@Override
public void setInstanceZoneId(String clusterName, String instanceName, String zoneId) {
if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
throw new HelixException("cluster " + clusterName + " is not setup yet");
}
if (!ZKUtil.isInstanceSetup(_zkClient, clusterName, instanceName, InstanceType.PARTICIPANT)) {
throw new HelixException("cluster " + clusterName + " instance " + instanceName + " is not setup yet");
}
HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient));
Builder keyBuilder = accessor.keyBuilder();
InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName));
config.setZoneId(zoneId);
accessor.setProperty(keyBuilder.instanceConfig(instanceName), config);
}
use of org.apache.helix.HelixDataAccessor in project helix by apache.
the class ZKHelixAdmin method resetResource.
@Override
public void resetResource(String clusterName, List<String> resourceNames) {
// TODO: not mp-safe
HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient));
Builder keyBuilder = accessor.keyBuilder();
List<ExternalView> extViews = accessor.getChildValues(keyBuilder.externalViews());
Set<String> resetResourceNames = new HashSet<String>(resourceNames);
for (ExternalView extView : extViews) {
if (!resetResourceNames.contains(extView.getResourceName())) {
continue;
}
// instanceName -> list of resetPartitionNames
Map<String, List<String>> resetPartitionNames = new HashMap<String, List<String>>();
Map<String, Map<String, String>> stateMap = extView.getRecord().getMapFields();
for (String partitionName : stateMap.keySet()) {
Map<String, String> instanceStateMap = stateMap.get(partitionName);
for (String instanceName : instanceStateMap.keySet()) {
if (instanceStateMap.get(instanceName).equals(HelixDefinedState.ERROR.toString())) {
if (!resetPartitionNames.containsKey(instanceName)) {
resetPartitionNames.put(instanceName, new ArrayList<String>());
}
resetPartitionNames.get(instanceName).add(partitionName);
}
}
}
for (String instanceName : resetPartitionNames.keySet()) {
resetPartition(clusterName, instanceName, extView.getResourceName(), resetPartitionNames.get(instanceName));
}
}
}
use of org.apache.helix.HelixDataAccessor in project helix by apache.
the class ZKHelixAdmin method resetInstance.
@Override
public void resetInstance(String clusterName, List<String> instanceNames) {
// TODO: not mp-safe
HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient));
Builder keyBuilder = accessor.keyBuilder();
List<ExternalView> extViews = accessor.getChildValues(keyBuilder.externalViews());
Set<String> resetInstanceNames = new HashSet<String>(instanceNames);
for (String instanceName : resetInstanceNames) {
List<String> resetPartitionNames = new ArrayList<String>();
for (ExternalView extView : extViews) {
Map<String, Map<String, String>> stateMap = extView.getRecord().getMapFields();
for (String partitionName : stateMap.keySet()) {
Map<String, String> instanceStateMap = stateMap.get(partitionName);
if (instanceStateMap.containsKey(instanceName) && instanceStateMap.get(instanceName).equals(HelixDefinedState.ERROR.toString())) {
resetPartitionNames.add(partitionName);
}
}
resetPartition(clusterName, instanceName, extView.getResourceName(), resetPartitionNames);
}
}
}
use of org.apache.helix.HelixDataAccessor in project helix by apache.
the class ZKHelixAdmin method getConstraints.
@Override
public ClusterConstraints getConstraints(String clusterName, ConstraintType constraintType) {
HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient));
Builder keyBuilder = new Builder(clusterName);
return accessor.getProperty(keyBuilder.constraint(constraintType.toString()));
}
use of org.apache.helix.HelixDataAccessor in project helix by apache.
the class ZKHelixAdmin method enableMaintenanceMode.
@Override
public void enableMaintenanceMode(String clusterName, boolean enabled, String reason) {
HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient));
Builder keyBuilder = accessor.keyBuilder();
if (!enabled) {
accessor.removeProperty(keyBuilder.maintenance());
} else {
MaintenanceSignal maintenanceSignal = new MaintenanceSignal("maintenance");
if (reason != null) {
maintenanceSignal.setReason(reason);
}
if (!accessor.createMaintenance(maintenanceSignal)) {
throw new HelixException("Failed to create maintenance signal");
}
}
}
Aggregations