Class StageBuilder


  • public class StageBuilder
    extends Object
    Constructs a set of commands to stage content during a proposal.
    • Constructor Detail

      • StageBuilder

        public StageBuilder​(String txnStageNamespace,
                            ObjectId txnId)
        Construct a stage builder for a transaction.
        Parameters:
        txnStageNamespace - namespace for transaction references to build "txnStageNamespace/txnId.n" style names.
        txnId - identifier used to name temporary staging refs.
    • Method Detail

      • makeStageList

        public List<ReceiveCommand> makeStageList​(Repository git,
                                                  ObjectId oldTree,
                                                  ObjectId newTree)
                                           throws IOException
        Compare two RefTrees and return commands to stage new objects.

        This method ignores the lineage between the two RefTrees and does a straight diff on the two trees. New objects will be staged. The diff strategy is useful to catch-up a lagging replica, without sending every intermediate step. This may mean the replica does not have the same object set as other replicas if there are rewinds or branch deletes.

        Parameters:
        git - source repository to read oldTree and newTree from.
        oldTree - accepted RefTree on the replica (refs/txn/accepted). Use ObjectId.zeroId() if the remote does not have any ref tree, e.g. a new replica catching up.
        newTree - RefTree being sent to the replica. The trees will be compared.
        Returns:
        list of commands to create "refs/txn/stage/..." references on replicas anchoring new objects into the repository while a transaction gains consensus.
        Throws:
        IOException - git cannot be accessed to compare oldTree and newTree to build the object set.
      • makeStageList

        public List<ReceiveCommand> makeStageList​(Set<ObjectId> newObjs,
                                                  @Nullable
                                                  Repository git,
                                                  @Nullable
                                                  ObjectInserter inserter)
                                           throws IOException
        Construct a set of commands to stage objects on a replica.
        Parameters:
        newObjs - objects to send to a replica.
        git - local repository to read source objects from. Required to perform minification of newObjs.
        inserter - inserter to write temporary commit objects during minification if many new branches are created by newObjs.
        Returns:
        list of commands to create "refs/txn/stage/..." references on replicas anchoring newObjs into the repository while a transaction gains consensus.
        Throws:
        IOException - git cannot be accessed to perform minification of newObjs.