use of org.apache.asterix.app.nc.task.BindMetadataNodeTask in project asterixdb by apache.
the class MetadataNodeFaultToleranceStrategy method buildParticipantStartupSequence.
private List<INCLifecycleTask> buildParticipantStartupSequence(String nodeId, SystemState state) {
final List<INCLifecycleTask> tasks = new ArrayList<>();
switch(state) {
case PERMANENT_DATA_LOSS:
// If the metadata node (or replica) failed and lost its data
// => Metadata Remote Recovery from standby replica
tasks.add(getMetadataPartitionRecoveryPlan());
// Checkpoint after remote recovery to move node to HEALTHY state
tasks.add(new CheckpointTask());
break;
case CORRUPTED:
// If the metadata node (or replica) failed and started again without losing data => Local Recovery
LocalRecoveryTask rt = new LocalRecoveryTask(Arrays.asList(clusterManager.getNodePartitions(nodeId)).stream().map(ClusterPartition::getPartitionId).collect(Collectors.toSet()));
tasks.add(rt);
break;
case BOOTSTRAPPING:
case HEALTHY:
case RECOVERING:
break;
default:
break;
}
tasks.add(new StartReplicationServiceTask());
final boolean isMetadataNode = nodeId.equals(metadataNodeId);
if (isMetadataNode) {
tasks.add(new MetadataBootstrapTask());
}
tasks.add(new ExternalLibrarySetupTask(isMetadataNode));
tasks.add(new ReportMaxResourceIdTask());
tasks.add(new CheckpointTask());
tasks.add(new StartLifecycleComponentsTask());
if (isMetadataNode) {
tasks.add(new BindMetadataNodeTask(true));
}
return tasks;
}
use of org.apache.asterix.app.nc.task.BindMetadataNodeTask in project asterixdb by apache.
the class NoFaultToleranceStrategy method buildNCStartupSequence.
private List<INCLifecycleTask> buildNCStartupSequence(String nodeId, SystemState state) {
final List<INCLifecycleTask> tasks = new ArrayList<>();
if (state == SystemState.CORRUPTED) {
//need to perform local recovery for node partitions
LocalRecoveryTask rt = new LocalRecoveryTask(Arrays.asList(clusterManager.getNodePartitions(nodeId)).stream().map(ClusterPartition::getPartitionId).collect(Collectors.toSet()));
tasks.add(rt);
}
final boolean isMetadataNode = nodeId.equals(metadataNodeId);
if (isMetadataNode) {
tasks.add(new MetadataBootstrapTask());
}
tasks.add(new ExternalLibrarySetupTask(isMetadataNode));
tasks.add(new ReportMaxResourceIdTask());
tasks.add(new CheckpointTask());
tasks.add(new StartLifecycleComponentsTask());
if (isMetadataNode) {
tasks.add(new BindMetadataNodeTask(true));
}
return tasks;
}
use of org.apache.asterix.app.nc.task.BindMetadataNodeTask in project asterixdb by apache.
the class AutoFaultToleranceStrategy method buildStartupSequence.
private List<INCLifecycleTask> buildStartupSequence(String nodeId) {
final List<INCLifecycleTask> tasks = new ArrayList<>();
tasks.add(new StartReplicationServiceTask());
final boolean isMetadataNode = nodeId.equals(currentMetadataNode);
if (isMetadataNode) {
tasks.add(new MetadataBootstrapTask());
}
tasks.add(new ExternalLibrarySetupTask(isMetadataNode));
tasks.add(new ReportMaxResourceIdTask());
tasks.add(new CheckpointTask());
tasks.add(new StartLifecycleComponentsTask());
if (isMetadataNode) {
tasks.add(new BindMetadataNodeTask(true));
}
return tasks;
}
Aggregations