Stephen O'Donnell created HDDS-8919:
---------------------------------------

             Summary: Allow a pipeline to be created and then added to pipeline 
manager in two steps
                 Key: HDDS-8919
                 URL: https://issues.apache.org/jira/browse/HDDS-8919
             Project: Apache Ozone
          Issue Type: Improvement
            Reporter: Stephen O'Donnell
            Assignee: Stephen O'Donnell


As it stands, the method:

{code}
 PipelineManager.createPipeline(ReplicationConfig replicationConfig,
      List<DatanodeDetails> excludedNodes, List<DatanodeDetails> favoredNodes)
{code}

Is used to create a new pipeline and add it to the Pipeline manager. This 
creation and adding is all performed under a single lock The somewhat expensive 
node selection process from the placement policy is performed under the lock.

For Ratis pipelines, this could be important, as pipelines are created and 
limited based on the number of existing pipelines on the nodes.

EC pipelines do not have such a limitation, and they also need to be created 
much more frequently due to their short lived nature.

This PR changes the pipeline manager to have a buildPipeline Method, which 
calls the placement policy and creates the new pipeline object without any 
locks.

Then there is an addPipeline method to add the created pipeline to the 
pipelineManager under the lock.

This will allow for the WritableECPipelineProvider to build pipelines without 
blocking other threads and then add them to the manager under a lock, reducing 
the amount of work performed under a lock. This change would need to be made in 
another PR.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to