/// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/>
        /// <exception cref="System.IO.IOException"/>
        public virtual UseSharedCacheResourceResponse Use(UseSharedCacheResourceRequest request
                                                          )
        {
            UseSharedCacheResourceResponse response = recordFactory.NewRecordInstance <UseSharedCacheResourceResponse
                                                                                       >();
            UserGroupInformation callerUGI;

            try
            {
                callerUGI = UserGroupInformation.GetCurrentUser();
            }
            catch (IOException ie)
            {
                Log.Info("Error getting UGI ", ie);
                throw RPCUtil.GetRemoteException(ie);
            }
            string fileName = this.store.AddResourceReference(request.GetResourceKey(), new SharedCacheResourceReference
                                                                  (request.GetAppId(), callerUGI.GetShortUserName()));

            if (fileName != null)
            {
                response.SetPath(GetCacheEntryFilePath(request.GetResourceKey(), fileName));
                this.metrics.IncCacheHitCount();
            }
            else
            {
                this.metrics.IncCacheMissCount();
            }
            return(response);
        }
Esempio n. 2
0
        /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/>
        public override Path Use(ApplicationId applicationId, string resourceKey)
        {
            Path resourcePath = null;
            UseSharedCacheResourceRequest request = Org.Apache.Hadoop.Yarn.Util.Records.NewRecord
                                                    <UseSharedCacheResourceRequest>();

            request.SetAppId(applicationId);
            request.SetResourceKey(resourceKey);
            try
            {
                UseSharedCacheResourceResponse response = this.scmClient.Use(request);
                if (response != null && response.GetPath() != null)
                {
                    resourcePath = new Path(response.GetPath());
                }
            }
            catch (Exception e)
            {
                // Just catching IOException isn't enough.
                // RPC call can throw ConnectionException.
                // We don't handle different exceptions separately at this point.
                throw new YarnException(e);
            }
            return(resourcePath);
        }
        /// <exception cref="Com.Google.Protobuf.ServiceException"/>
        public virtual YarnServiceProtos.UseSharedCacheResourceResponseProto Use(RpcController
                                                                                 controller, YarnServiceProtos.UseSharedCacheResourceRequestProto proto)
        {
            UseSharedCacheResourceRequestPBImpl request = new UseSharedCacheResourceRequestPBImpl
                                                              (proto);

            try
            {
                UseSharedCacheResourceResponse response = real.Use(request);
                return(((UseSharedCacheResourceResponsePBImpl)response).GetProto());
            }
            catch (YarnException e)
            {
                throw new ServiceException(e);
            }
            catch (IOException e)
            {
                throw new ServiceException(e);
            }
        }