/// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/> /// <exception cref="System.IO.IOException"/> public virtual ReleaseSharedCacheResourceResponse Release(ReleaseSharedCacheResourceRequest request) { ReleaseSharedCacheResourceResponse response = recordFactory.NewRecordInstance <ReleaseSharedCacheResourceResponse >(); UserGroupInformation callerUGI; try { callerUGI = UserGroupInformation.GetCurrentUser(); } catch (IOException ie) { Log.Info("Error getting UGI ", ie); throw RPCUtil.GetRemoteException(ie); } bool removed = this.store.RemoveResourceReference(request.GetResourceKey(), new SharedCacheResourceReference (request.GetAppId(), callerUGI.GetShortUserName()), true); if (removed) { this.metrics.IncCacheRelease(); } return(response); }
public virtual void TestRelease_MissingEntry() { long releases = ClientSCMMetrics.GetInstance().GetCacheReleases(); ReleaseSharedCacheResourceRequest request = recordFactory.NewRecordInstance <ReleaseSharedCacheResourceRequest >(); request.SetResourceKey("key2"); request.SetAppId(CreateAppId(2, 2L)); clientSCMProxy.Release(request); NUnit.Framework.Assert.IsNotNull(store.GetResourceReferences("key2")); NUnit.Framework.Assert.AreEqual(0, store.GetResourceReferences("key2").Count); NUnit.Framework.Assert.AreEqual("Client SCM metrics were updated when a release did not happen." , 0, ClientSCMMetrics.GetInstance().GetCacheReleases() - releases); }
/// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/> /// <exception cref="System.IO.IOException"/> public virtual ReleaseSharedCacheResourceResponse Release(ReleaseSharedCacheResourceRequest request) { YarnServiceProtos.ReleaseSharedCacheResourceRequestProto requestProto = ((ReleaseSharedCacheResourceRequestPBImpl )request).GetProto(); try { return new ReleaseSharedCacheResourceResponsePBImpl(proxy.Release(null, requestProto )); } catch (ServiceException e) { RPCUtil.UnwrapAndThrowException(e); return null; } }
public virtual void TestRelease_ExistingEntry_NonExistantAppId() { // Pre-populate the SCM with one cache entry store.AddResource("key1", "foo.jar"); store.AddResourceReference("key1", new SharedCacheResourceReference(CreateAppId(1 , 1L), "user")); NUnit.Framework.Assert.AreEqual(1, store.GetResourceReferences("key1").Count); long releases = ClientSCMMetrics.GetInstance().GetCacheReleases(); ReleaseSharedCacheResourceRequest request = recordFactory.NewRecordInstance <ReleaseSharedCacheResourceRequest >(); request.SetResourceKey("key1"); request.SetAppId(CreateAppId(2, 2L)); clientSCMProxy.Release(request); NUnit.Framework.Assert.AreEqual(1, store.GetResourceReferences("key1").Count); NUnit.Framework.Assert.AreEqual("Client SCM metrics were updated when a release did not happen" , 0, ClientSCMMetrics.GetInstance().GetCacheReleases() - releases); }
/// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/> public override void Release(ApplicationId applicationId, string resourceKey) { ReleaseSharedCacheResourceRequest request = Org.Apache.Hadoop.Yarn.Util.Records.NewRecord <ReleaseSharedCacheResourceRequest>(); request.SetAppId(applicationId); request.SetResourceKey(resourceKey); try { // We do not care about the response because it is empty. this.scmClient.Release(request); } catch (Exception e) { // Just catching IOException isn't enough. // RPC call can throw ConnectionException. throw new YarnException(e); } }
public virtual void TestRelease_ExistingEntry_WithAppId() { // Pre-populate the SCM with one cache entry store.AddResource("key1", "foo.jar"); UserGroupInformation testUGI = UserGroupInformation.GetCurrentUser(); store.AddResourceReference("key1", new SharedCacheResourceReference(CreateAppId(1 , 1L), testUGI.GetShortUserName())); NUnit.Framework.Assert.AreEqual(1, store.GetResourceReferences("key1").Count); long releases = ClientSCMMetrics.GetInstance().GetCacheReleases(); ReleaseSharedCacheResourceRequest request = recordFactory.NewRecordInstance <ReleaseSharedCacheResourceRequest >(); request.SetResourceKey("key1"); request.SetAppId(CreateAppId(1, 1L)); clientSCMProxy.Release(request); NUnit.Framework.Assert.AreEqual(0, store.GetResourceReferences("key1").Count); NUnit.Framework.Assert.AreEqual("Client SCM metrics aren't updated.", 1, ClientSCMMetrics .GetInstance().GetCacheReleases() - releases); }