예제 #1
0
 private YarnProtos.PreemptionMessageProto ConvertToProtoFormat(PreemptionMessage
                                                                r)
 {
     lock (this)
     {
         return(((PreemptionMessagePBImpl)r).GetProto());
     }
 }
예제 #2
0
 public override void SetPreemptionMessage(PreemptionMessage preempt)
 {
     lock (this)
     {
         MaybeInitBuilder();
         if (null == preempt)
         {
             builder.ClearPreempt();
         }
         this.preempt = preempt;
     }
 }
        private PreemptionMessage GeneratePreemptionMessage(Allocation allocation)
        {
            PreemptionMessage pMsg = null;

            // assemble strict preemption request
            if (allocation.GetStrictContainerPreemptions() != null)
            {
                pMsg = recordFactory.NewRecordInstance <PreemptionMessage>();
                StrictPreemptionContract pStrict = recordFactory.NewRecordInstance <StrictPreemptionContract
                                                                                    >();
                ICollection <PreemptionContainer> pCont = new HashSet <PreemptionContainer>();
                foreach (ContainerId cId in allocation.GetStrictContainerPreemptions())
                {
                    PreemptionContainer pc = recordFactory.NewRecordInstance <PreemptionContainer>();
                    pc.SetId(cId);
                    pCont.AddItem(pc);
                }
                pStrict.SetContainers(pCont);
                pMsg.SetStrictContract(pStrict);
            }
            // assemble negotiable preemption request
            if (allocation.GetResourcePreemptions() != null && allocation.GetResourcePreemptions
                    ().Count > 0 && allocation.GetContainerPreemptions() != null && allocation.GetContainerPreemptions
                    ().Count > 0)
            {
                if (pMsg == null)
                {
                    pMsg = recordFactory.NewRecordInstance <PreemptionMessage>();
                }
                PreemptionContract contract = recordFactory.NewRecordInstance <PreemptionContract>
                                                  ();
                ICollection <PreemptionContainer> pCont = new HashSet <PreemptionContainer>();
                foreach (ContainerId cId in allocation.GetContainerPreemptions())
                {
                    PreemptionContainer pc = recordFactory.NewRecordInstance <PreemptionContainer>();
                    pc.SetId(cId);
                    pCont.AddItem(pc);
                }
                IList <PreemptionResourceRequest> pRes = new AList <PreemptionResourceRequest>();
                foreach (ResourceRequest crr in allocation.GetResourcePreemptions())
                {
                    PreemptionResourceRequest prr = recordFactory.NewRecordInstance <PreemptionResourceRequest
                                                                                     >();
                    prr.SetResourceRequest(crr);
                    pRes.AddItem(prr);
                }
                contract.SetContainers(pCont);
                contract.SetResourceRequest(pRes);
                pMsg.SetContract(contract);
            }
            return(pMsg);
        }
예제 #4
0
 public override PreemptionMessage GetPreemptionMessage()
 {
     lock (this)
     {
         YarnServiceProtos.AllocateResponseProtoOrBuilder p = viaProto ? proto : builder;
         if (this.preempt != null)
         {
             return(this.preempt);
         }
         if (!p.HasPreempt())
         {
             return(null);
         }
         this.preempt = ConvertFromProtoFormat(p.GetPreempt());
         return(this.preempt);
     }
 }
예제 #5
0
        public static AllocateResponse NewAllocateResponse(int responseId, IList <ContainerStatus
                                                                                  > completedContainers, IList <Container> allocatedContainers, IList <NodeReport> updatedNodes
                                                           , Resource availResources, AMCommand command, int numClusterNodes, PreemptionMessage
                                                           preempt)
        {
            AllocateResponse response = recordFactory.NewRecordInstance <AllocateResponse>();

            response.SetNumClusterNodes(numClusterNodes);
            response.SetResponseId(responseId);
            response.SetCompletedContainersStatuses(completedContainers);
            response.SetAllocatedContainers(allocatedContainers);
            response.SetUpdatedNodes(updatedNodes);
            response.SetAvailableResources(availResources);
            response.SetAMCommand(command);
            response.SetPreemptionMessage(preempt);
            return(response);
        }
예제 #6
0
        public static AllocateResponse NewInstance(int responseId, IList <ContainerStatus>
                                                   completedContainers, IList <Container> allocatedContainers, IList <NodeReport> updatedNodes
                                                   , Resource availResources, AMCommand command, int numClusterNodes, PreemptionMessage
                                                   preempt, IList <NMToken> nmTokens, Token amRMToken, IList <ContainerResourceIncrease
                                                                                                              > increasedContainers, IList <ContainerResourceDecrease> decreasedContainers)
        {
            AllocateResponse response = NewInstance(responseId, completedContainers, allocatedContainers
                                                    , updatedNodes, availResources, command, numClusterNodes, preempt, nmTokens, increasedContainers
                                                    , decreasedContainers);

            response.SetAMRMToken(amRMToken);
            return(response);
        }
예제 #7
0
        public static AllocateResponse NewInstance(int responseId, IList <ContainerStatus>
                                                   completedContainers, IList <Container> allocatedContainers, IList <NodeReport> updatedNodes
                                                   , Resource availResources, AMCommand command, int numClusterNodes, PreemptionMessage
                                                   preempt, IList <NMToken> nmTokens)
        {
            AllocateResponse response = Org.Apache.Hadoop.Yarn.Util.Records.NewRecord <AllocateResponse
                                                                                       >();

            response.SetNumClusterNodes(numClusterNodes);
            response.SetResponseId(responseId);
            response.SetCompletedContainersStatuses(completedContainers);
            response.SetAllocatedContainers(allocatedContainers);
            response.SetUpdatedNodes(updatedNodes);
            response.SetAvailableResources(availResources);
            response.SetAMCommand(command);
            response.SetPreemptionMessage(preempt);
            response.SetNMTokens(nmTokens);
            return(response);
        }
예제 #8
0
 public abstract void SetPreemptionMessage(PreemptionMessage request);