addons/promote/common/src/main/java/org/commonjava/indy/promote/data/PromotionManager.java
public PathsPromoteResult resumePathsPromote( final PathsPromoteResult result, final String baseUrl )
            throws PromotionException, IndyWorkflowException
    {
        final PathsPromoteRequest request = result.getRequest();

        Future<PathsPromoteResult> future = submitResumePathsPromote( result, baseUrl );
        if ( request.isAsync() )
        {
            return new PathsPromoteResult( request ).accepted();
        }
        else
        {
            try
            {
                return future.get();
            }
            catch ( InterruptedException | ExecutionException e )
            {
                logger.error( "Path promotion resume failed: " + request.getSource() + " -> " + request.getTargetKey(), e );
                throw new PromotionException( "Execution of path promotion resume failed.", e );
            }
        }
    }
public PathsPromoteResult resumePathsPromote( final PathsPromoteResult result, final String baseUrl )
            throws PromotionException, IndyWorkflowException
    {
        final PathsPromoteRequest request = result.getRequest();

        Future<PathsPromoteResult> future = submitResumePathsPromote( result, baseUrl );
        if ( request.isAsync() )
        {
            return new PathsPromoteResult( request ).accepted();
        }
        else
        {
            try
            {
                return future.get();
            }
            catch ( InterruptedException | ExecutionException e )
            {
                logger.error( "Path promotion resume failed: " + request.getSource() + " -> " + request.getTargetKey(), e );
                throw new PromotionException( "Execution of path promotion resume failed.", e );
            }
        }
    }
Attempt to resumePathsPromote from a previously failing {@link PathsPromoteResult}. This is meant to handle cases where a transient (or correctable) error
occurs on the server side, and promotion can proceed afterward. It works much like the {@link #promotePaths(PathsPromoteRequest, String)} call, using the pending
paths list from the input result as the list of paths to process. The output {@link PathsPromoteResult} contains all previous completed paths PLUS
any additional completed transfers when it is returned, thus providing a cumulative result to the user.

@param result The result to resumePathsPromote

@return The same result, with any successful path promotions moved from the pending to completed paths list, and the error cleared (or set to a
new error)

@throws PromotionException
@throws IndyWorkflowException