@Override public void transition(RMAppImpl app, RMAppEvent event) { long applicationLifetime = app.getApplicationLifetime(ApplicationTimeoutType.LIFETIME); applicationLifetime = app.scheduler .checkAndGetApplicationLifetime(app.queue, applicationLifetime); if (applicationLifetime > 0) { // calculate next timeout value Long newTimeout = Long.valueOf(app.submitTime + (applicationLifetime * 1000)); app.rmContext.getRMAppLifetimeMonitor().registerApp(app.applicationId, ApplicationTimeoutType.LIFETIME, newTimeout); // update applicationTimeouts with new absolute value. app.applicationTimeouts.put(ApplicationTimeoutType.LIFETIME, newTimeout); LOG.info("Application " + app.applicationId + " is registered for timeout monitor, type=" + ApplicationTimeoutType.LIFETIME + " value=" + applicationLifetime + " seconds"); } // If recovery is enabled then store the application information in a // non-blocking call so make sure that RM has stored the information // needed to restart the AM after RM restart without further client // communication LOG.info("Storing application with id " + app.applicationId); app.rmContext.getStateStore().storeNewApplication(app); } }