/// <exception cref="System.Exception"/> private void StopContainer(YarnRPC rpc, Token nmToken, IList <ContainerId> containerId , ApplicationAttemptId appAttemptId, NodeId nodeId) { StopContainersRequest request = StopContainersRequest.NewInstance(containerId); ContainerManagementProtocol proxy = null; try { proxy = GetContainerManagementProtocolProxy(rpc, nmToken, nodeId, appAttemptId.ToString ()); StopContainersResponse response = proxy.StopContainers(request); if (response.GetFailedRequests() != null && response.GetFailedRequests().Contains (containerId)) { ParseAndThrowException(response.GetFailedRequests()[containerId].DeSerialize()); } } catch (Exception) { if (proxy != null) { rpc.StopProxy(proxy, conf); } } }
/// <exception cref="System.IO.IOException"/> /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/> private void Cleanup() { Connect(); ContainerId containerId = masterContainer.GetId(); IList <ContainerId> containerIds = new AList <ContainerId>(); containerIds.AddItem(containerId); StopContainersRequest stopRequest = StopContainersRequest.NewInstance(containerIds ); StopContainersResponse response = containerMgrProxy.StopContainers(stopRequest); if (response.GetFailedRequests() != null && response.GetFailedRequests().Contains (containerId)) { Exception t = response.GetFailedRequests()[containerId].DeSerialize(); ParseAndThrowException(t); } }
/// <exception cref="Com.Google.Protobuf.ServiceException"/> public virtual YarnServiceProtos.StopContainersResponseProto StopContainers(RpcController arg0, YarnServiceProtos.StopContainersRequestProto proto) { StopContainersRequestPBImpl request = new StopContainersRequestPBImpl(proto); try { StopContainersResponse response = real.StopContainers(request); return(((StopContainersResponsePBImpl)response).GetProto()); } catch (YarnException e) { throw new ServiceException(e); } catch (IOException e) { throw new ServiceException(e); } }
/// <exception cref="System.Exception"/> public virtual void TestNMProxyRetry() { containerManager.Start(); containerManager.SetBlockNewContainerRequests(false); StartContainersRequest allRequests = Records.NewRecord <StartContainersRequest>(); ApplicationId appId = ApplicationId.NewInstance(1, 1); ApplicationAttemptId attemptId = ApplicationAttemptId.NewInstance(appId, 1); Token nmToken = context.GetNMTokenSecretManager().CreateNMToken(attemptId, context .GetNodeId(), user); IPEndPoint address = conf.GetSocketAddr(YarnConfiguration.NmBindHost, YarnConfiguration .NmAddress, YarnConfiguration.DefaultNmAddress, YarnConfiguration.DefaultNmPort); Org.Apache.Hadoop.Security.Token.Token <NMTokenIdentifier> token = ConverterUtils. ConvertFromYarn(nmToken, SecurityUtil.BuildTokenService(address)); UserGroupInformation ugi = UserGroupInformation.CreateRemoteUser(user); ugi.AddToken(token); ContainerManagementProtocol proxy = NMProxy.CreateNMProxy <ContainerManagementProtocol >(conf, ugi, YarnRPC.Create(conf), address); retryCount = 0; shouldThrowNMNotYetReadyException = false; proxy.StartContainers(allRequests); NUnit.Framework.Assert.AreEqual(5, retryCount); retryCount = 0; shouldThrowNMNotYetReadyException = false; proxy.StopContainers(Org.Apache.Hadoop.Yarn.Util.Records.NewRecord <StopContainersRequest >()); NUnit.Framework.Assert.AreEqual(5, retryCount); retryCount = 0; shouldThrowNMNotYetReadyException = false; proxy.GetContainerStatuses(Org.Apache.Hadoop.Yarn.Util.Records.NewRecord <GetContainerStatusesRequest >()); NUnit.Framework.Assert.AreEqual(5, retryCount); retryCount = 0; shouldThrowNMNotYetReadyException = true; proxy.StartContainers(allRequests); NUnit.Framework.Assert.AreEqual(5, retryCount); }
/// <exception cref="System.Exception"/> private void Test(string rpcClass) { Configuration conf = new Configuration(); conf.Set(YarnConfiguration.IpcRpcImpl, rpcClass); YarnRPC rpc = YarnRPC.Create(conf); string bindAddr = "localhost:0"; IPEndPoint addr = NetUtils.CreateSocketAddr(bindAddr); Server server = rpc.GetServer(typeof(ContainerManagementProtocol), new TestRPC.DummyContainerManager (this), addr, conf, null, 1); server.Start(); RPC.SetProtocolEngine(conf, typeof(ContainerManagementProtocolPB), typeof(ProtobufRpcEngine )); ContainerManagementProtocol proxy = (ContainerManagementProtocol)rpc.GetProxy(typeof( ContainerManagementProtocol), NetUtils.GetConnectAddress(server), conf); ContainerLaunchContext containerLaunchContext = recordFactory.NewRecordInstance <ContainerLaunchContext >(); ApplicationId applicationId = ApplicationId.NewInstance(0, 0); ApplicationAttemptId applicationAttemptId = ApplicationAttemptId.NewInstance(applicationId , 0); ContainerId containerId = ContainerId.NewContainerId(applicationAttemptId, 100); NodeId nodeId = NodeId.NewInstance("localhost", 1234); Resource resource = Resource.NewInstance(1234, 2); ContainerTokenIdentifier containerTokenIdentifier = new ContainerTokenIdentifier( containerId, "localhost", "user", resource, Runtime.CurrentTimeMillis() + 10000, 42, 42, Priority.NewInstance(0), 0); Token containerToken = NewContainerToken(nodeId, Sharpen.Runtime.GetBytesForString ("password"), containerTokenIdentifier); StartContainerRequest scRequest = StartContainerRequest.NewInstance(containerLaunchContext , containerToken); IList <StartContainerRequest> list = new AList <StartContainerRequest>(); list.AddItem(scRequest); StartContainersRequest allRequests = StartContainersRequest.NewInstance(list); proxy.StartContainers(allRequests); IList <ContainerId> containerIds = new AList <ContainerId>(); containerIds.AddItem(containerId); GetContainerStatusesRequest gcsRequest = GetContainerStatusesRequest.NewInstance( containerIds); GetContainerStatusesResponse response = proxy.GetContainerStatuses(gcsRequest); IList <ContainerStatus> statuses = response.GetContainerStatuses(); //test remote exception bool exception = false; try { StopContainersRequest stopRequest = recordFactory.NewRecordInstance <StopContainersRequest >(); stopRequest.SetContainerIds(containerIds); proxy.StopContainers(stopRequest); } catch (YarnException e) { exception = true; NUnit.Framework.Assert.IsTrue(e.Message.Contains(ExceptionMsg)); NUnit.Framework.Assert.IsTrue(e.Message.Contains(ExceptionCause)); System.Console.Out.WriteLine("Test Exception is " + e.Message); } catch (Exception ex) { Sharpen.Runtime.PrintStackTrace(ex); } NUnit.Framework.Assert.IsTrue(exception); server.Stop(); NUnit.Framework.Assert.IsNotNull(statuses[0]); NUnit.Framework.Assert.AreEqual(ContainerState.Running, statuses[0].GetState()); }