SLIDER-1214 Update container log links to log-server URL only for a completed application
diff --git a/slider-core/src/main/java/org/apache/slider/api/ResourceKeys.java b/slider-core/src/main/java/org/apache/slider/api/ResourceKeys.java
index d6d8789..295f7cd 100644
--- a/slider-core/src/main/java/org/apache/slider/api/ResourceKeys.java
+++ b/slider-core/src/main/java/org/apache/slider/api/ResourceKeys.java
@@ -75,7 +75,7 @@
* If normalization is set to false, then if the resource (memory and/or
* vcore) requested by a role is higher than YARN limits, then the resource
* request is not normalized. If this causes failures at the YARN level then
- * applications are expecting that to happen. Default value is false.
+ * applications are expecting that to happen. Default value is true.
*/
String YARN_RESOURCE_NORMALIZATION_ENABLED = "yarn.resource.normalization.enabled";
diff --git a/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
index 3b5b590..dcd6853 100644
--- a/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
+++ b/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
@@ -22,6 +22,7 @@
import java.util.Comparator;
import org.apache.hadoop.registry.client.binding.JsonSerDeser;
+import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -52,6 +53,8 @@
*/
public String[] output;
public String logLink;
+ @JsonIgnore
+ public String logServerLogLink;
public String getContainerId() {
return containerId;
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
index bc0339a..f076e87 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
@@ -1998,6 +1998,8 @@
} finally {
List<AbstractRMOperation> operations = appState
.releaseAllContainers(releaseMessage);
+ // need to call final log link update after we release all containers
+ appState.updateAllContainerLogLinks();
providerRMOperationHandler.execute(operations);
// now apply the operations
execute(operations);
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 187c292..56b1b2a 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
@@ -2395,6 +2395,18 @@
return operations;
}
+ public synchronized void updateAllContainerLogLinks() {
+ if (getApplicationDiagnostics().getContainers().isEmpty()) {
+ return;
+ }
+ for (ContainerInformation ci : getApplicationDiagnostics()
+ .getContainers()) {
+ if (ci.logServerLogLink != null) {
+ ci.logLink = ci.logServerLogLink;
+ }
+ }
+ }
+
/**
* Event handler for allocated containers: builds up the lists
* of assignment actions (what to run where), and possibly
@@ -2606,7 +2618,7 @@
}
containerInfo.state = state;
if (logLink != null) {
- containerInfo.logLink = logLink;
+ containerInfo.logServerLogLink = logLink;
}
containerInfo.completionTime = completionTime;
}