@Private public int getNumPendingApplications(String user) { try { readLock.lock(); User u = getUser(user); if (null == u) { return 0; } return u.getPendingApplications(); } finally { readLock.unlock(); } }
@Private public int getNumActiveApplications(String user) { try { readLock.lock(); User u = getUser(user); if (null == u) { return 0; } return u.getActiveApplications(); } finally { readLock.unlock(); } }
private void initializeUsageAndUserLimitForCompute(Resource clusterResource, String partition, LeafQueue leafQueue, Map<String, Resource> rollingResourceUsagePerUser) { for (String user : leafQueue.getAllUsers()) { // Initialize used resource of a given user for rolling computation. rollingResourceUsagePerUser.put(user, Resources.clone( leafQueue.getUser(user).getResourceUsage().getUsed(partition))); if (LOG.isDebugEnabled()) { LOG.debug("Rolling resource usage for user:" + user + " is : " + rollingResourceUsagePerUser.get(user)); } } }
@Private public synchronized int getNumApplications(String user) { return getUser(user).getTotalApplications(); }
@Private public synchronized int getNumActiveApplications(String user) { return getUser(user).getActiveApplications(); }
@Private public synchronized int getNumApplications(String user) { return getUser(user).getTotalApplications(); }
@Private public synchronized int getNumPendingApplications(String user) { return getUser(user).getPendingApplications(); }
@Private public synchronized int getNumPendingApplications(String user) { return getUser(user).getPendingApplications(); }
@Private public synchronized int getNumActiveApplications(String user) { return getUser(user).getActiveApplications(); }
public void decAMUsedResource(String nodeLabel, Resource resourceToDec, SchedulerApplicationAttempt application) { getUser(application.getUser()).getResourceUsage().decAMUsed(nodeLabel, resourceToDec); // ResourceUsage has its own lock, no addition lock needs here. queueUsage.decAMUsed(nodeLabel, resourceToDec); }
public void incAMUsedResource(String nodeLabel, Resource resourceToInc, SchedulerApplicationAttempt application) { getUser(application.getUser()).getResourceUsage().incAMUsed(nodeLabel, resourceToInc); // ResourceUsage has its own lock, no addition lock needs here. queueUsage.incAMUsed(nodeLabel, resourceToInc); }
@Override public void finishApplicationAttempt(FiCaSchedulerApp application, String queue) { // Careful! Locking order is important! synchronized (this) { removeApplicationAttempt(application, getUser(application.getUser())); } getParent().finishApplicationAttempt(application, queue); }
@Override public void finishApplicationAttempt(FiCaSchedulerApp application, String queue) { // Careful! Locking order is important! synchronized (this) { removeApplicationAttempt(application, getUser(application.getUser())); } getParent().finishApplicationAttempt(application, queue); }
@Override public void submitApplicationAttempt(FiCaSchedulerApp application, String userName) { // Careful! Locking order is important! synchronized (this) { User user = getUser(userName); // Add the attempt to our data-structures addApplicationAttempt(application, user); } // We don't want to update metrics for move app if (application.isPending()) { metrics.submitAppAttempt(userName); } getParent().submitApplicationAttempt(application, userName); }
@Override public void submitApplicationAttempt(FiCaSchedulerApp application, String userName) { // Careful! Locking order is important! synchronized (this) { User user = getUser(userName); // Add the attempt to our data-structures addApplicationAttempt(application, user); } // We don't want to update metrics for move app if (application.isPending()) { metrics.submitAppAttempt(userName); } getParent().submitApplicationAttempt(application, userName); }
synchronized void releaseResource(Resource clusterResource, FiCaSchedulerApp application, Resource resource, Set<String> nodeLabels) { super.releaseResource(clusterResource, resource, nodeLabels); // Update user metrics String userName = application.getUser(); User user = getUser(userName); user.releaseContainer(resource, nodeLabels); metrics.setAvailableResourcesToUser(userName, application.getHeadroom()); LOG.info(getQueueName() + " used=" + queueUsage.getUsed() + " numContainers=" + numContainers + " user=" + userName + " user-resources=" + user.getUsed()); }
synchronized void releaseResource(Resource clusterResource, FiCaSchedulerApp application, Resource resource, Set<String> nodeLabels) { super.releaseResource(clusterResource, resource, nodeLabels); // Update user metrics String userName = application.getUser(); User user = getUser(userName); user.releaseContainer(resource, nodeLabels); metrics.setAvailableResourcesToUser(userName, application.getHeadroom()); LOG.info(getQueueName() + " used=" + queueUsage.getUsed() + " numContainers=" + numContainers + " user=" + userName + " user-resources=" + user.getUsed()); }
synchronized void allocateResource(Resource clusterResource, SchedulerApplicationAttempt application, Resource resource, Set<String> nodeLabels) { super.allocateResource(clusterResource, resource, nodeLabels); // Update user metrics String userName = application.getUser(); User user = getUser(userName); user.assignContainer(resource, nodeLabels); // Note this is a bit unconventional since it gets the object and modifies // it here, rather then using set routine Resources.subtractFrom(application.getHeadroom(), resource); // headroom metrics.setAvailableResourcesToUser(userName, application.getHeadroom()); if (LOG.isDebugEnabled()) { LOG.info(getQueueName() + " user=" + userName + " used=" + queueUsage.getUsed() + " numContainers=" + numContainers + " headroom = " + application.getHeadroom() + " user-resources=" + user.getUsed() ); } }
synchronized void allocateResource(Resource clusterResource, SchedulerApplicationAttempt application, Resource resource, Set<String> nodeLabels) { super.allocateResource(clusterResource, resource, nodeLabels); // Update user metrics String userName = application.getUser(); User user = getUser(userName); user.assignContainer(resource, nodeLabels); // Note this is a bit unconventional since it gets the object and modifies // it here, rather then using set routine Resources.subtractFrom(application.getHeadroom(), resource); // headroom metrics.setAvailableResourcesToUser(userName, application.getHeadroom()); if (LOG.isDebugEnabled()) { LOG.info(getQueueName() + " user=" + userName + " used=" + queueUsage.getUsed() + " numContainers=" + numContainers + " headroom = " + application.getHeadroom() + " user-resources=" + user.getUsed() ); } }
private void checkUserUsedResource(MockRM rm, String queueName, String userName, String partition, int memory) { CapacityScheduler scheduler = (CapacityScheduler) rm.getResourceScheduler(); LeafQueue queue = (LeafQueue) scheduler.getQueue(queueName); UsersManager.User user = queue.getUser(userName); Assert.assertEquals(memory, user.getResourceUsage().getUsed(partition).getMemorySize()); }