Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
When a node goes stale the pipelines in that node have to be closed and removed from PipelineManager. Currently, the pipeline is only closed and left in PipelineManager.
Root Cause Analysis
Since the Scheduler in SCMPipelineManager that used to destroyPipeline is removed,
scheduler.schedule(() -> destroyPipeline(pipeline), pipelineDestroyTimeoutInMillis, TimeUnit.MILLISECONDS, LOG, String.format("Destroy pipeline failed for pipeline:%s", pipeline));
meanwhile the PipelineManagerV2Impl::scrubPipeline only handles and remove RATIS THREE pipeline,
public void scrubPipeline(ReplicationType type, ReplicationFactor factor) throws IOException { checkLeader(); if (type != ReplicationType.RATIS || factor != ReplicationFactor.THREE) { // Only srub pipeline for RATIS THREE pipeline return; }
RATIS ONE Pipeline is closed but not removed when a datanode goes stale. The solution is let scrubPipeline handle all kinds of pipelines.
Attachments
Issue Links
- links to