Repository: incubator-slider Updated Branches: refs/heads/develop 548d2939e -> 77c720879
SLIDER-1197 Provide information on pending allocations, and last allocation time Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/77c72087 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/77c72087 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/77c72087 Branch: refs/heads/develop Commit: 77c720879a5a3ac3a2d7cc59d8e112afa0b7a4da Parents: 548d293 Author: Gour Saha <gourks...@apache.org> Authored: Tue Feb 14 14:10:55 2017 -0800 Committer: Gour Saha <gourks...@apache.org> Committed: Tue Feb 14 14:10:55 2017 -0800 ---------------------------------------------------------------------- .../slider/api/types/ApplicationLivenessInformation.java | 5 +++++ .../apache/slider/providers/agent/AgentProviderService.java | 2 ++ .../org/apache/slider/server/appmaster/state/AppState.java | 4 ++++ .../slider/server/appmaster/state/ProviderAppState.java | 6 ++++++ .../server/appmaster/state/StateAccessForProviders.java | 7 +++++++ 5 files changed, 24 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/77c72087/slider-core/src/main/java/org/apache/slider/api/types/ApplicationLivenessInformation.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/api/types/ApplicationLivenessInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/ApplicationLivenessInformation.java index 9879d05..e72bf58 100644 --- a/slider-core/src/main/java/org/apache/slider/api/types/ApplicationLivenessInformation.java +++ b/slider-core/src/main/java/org/apache/slider/api/types/ApplicationLivenessInformation.java @@ -39,12 +39,17 @@ public class ApplicationLivenessInformation { /** number of requests submitted to YARN */ public int activeRequests; + /** stores the allocation time of the most recently created container */ + public long lastAllocationTime; + @Override public String toString() { final StringBuilder sb = new StringBuilder("ApplicationLivenessInformation{"); sb.append("allRequestsSatisfied=").append(allRequestsSatisfied); sb.append(", requestsOutstanding=").append(requestsOutstanding); + sb.append(", activeRequests=").append(activeRequests); + sb.append(", lastAllocationTime=").append(lastAllocationTime); sb.append('}'); return sb.toString(); } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/77c72087/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java index 4439aac..59b200d 100644 --- a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java +++ b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java @@ -1048,6 +1048,8 @@ public class AgentProviderService extends AbstractProviderService implements if (currentAppVersion == null || currentAppVersion.equals(APP_VERSION_UNKNOWN)) { amState.getOwnedContainer(containerId).appVersion = appVersion; + amState.getApplicationDiagnostics() + .getContainer(containerId).appVersion = appVersion; } } } catch (NoSuchNodeException e) { http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/77c72087/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java index 5d588a5..186344d 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java @@ -302,6 +302,8 @@ public class AppState { private Resource minResource; private Resource maxResource; + private long lastAllocationTime; + /** * Create an instance * @param recordFactory factory for YARN records @@ -1499,6 +1501,7 @@ public class AppState { instance); } instance.startTime = now(); + this.lastAllocationTime = instance.startTime; RoleInstance starting = getStartingContainers().remove(containerId); if (null == starting) { throw new YarnRuntimeException( @@ -1925,6 +1928,7 @@ public class AppState { li.requestsOutstanding = outstanding; li.allRequestsSatisfied = outstanding <= 0; li.activeRequests = (int)stats.requested; + li.lastAllocationTime = this.lastAllocationTime; return li; } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/77c72087/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java index 37e9a7f..5cebdea 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java @@ -23,6 +23,7 @@ import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; import org.apache.slider.api.ClusterDescription; import org.apache.slider.api.ClusterNode; +import org.apache.slider.api.types.ApplicationDiagnostics; import org.apache.slider.api.types.ApplicationLivenessInformation; import org.apache.slider.api.types.ComponentInformation; import org.apache.slider.api.types.NodeInformation; @@ -304,4 +305,9 @@ public class ProviderAppState implements StateAccessForProviders { public RoleStatistics getRoleStatistics() { return appState.getRoleStatistics(); } + + @Override + public ApplicationDiagnostics getApplicationDiagnostics() { + return appState.getApplicationDiagnostics(); + } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/77c72087/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java index ad91183..1764d63 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java @@ -24,6 +24,7 @@ import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; import org.apache.slider.api.ClusterDescription; import org.apache.slider.api.ClusterNode; import org.apache.slider.api.StatusKeys; +import org.apache.slider.api.types.ApplicationDiagnostics; import org.apache.slider.api.types.ApplicationLivenessInformation; import org.apache.slider.api.types.ComponentInformation; import org.apache.slider.api.types.NodeInformation; @@ -310,4 +311,10 @@ public interface StateAccessForProviders { * @return role statistics */ RoleStatistics getRoleStatistics(); + + /** + * Get application diagnostics for all containers. + * @return application diagnostics + */ + ApplicationDiagnostics getApplicationDiagnostics(); }