You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by go...@apache.org on 2015/05/16 18:26:05 UTC
incubator-slider git commit: SLIDER-810 YARN config changes to enable
partial logs upload for long running services (fix method call)
Repository: incubator-slider
Updated Branches:
refs/heads/develop a008aee20 -> 507a87b02
SLIDER-810 YARN config changes to enable partial logs upload for long running services (fix method call)
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/507a87b0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/507a87b0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/507a87b0
Branch: refs/heads/develop
Commit: 507a87b02a59c3a907920ab0a4250d3f08177476
Parents: a008aee
Author: Gour Saha <go...@apache.org>
Authored: Sat May 16 09:21:57 2015 -0700
Committer: Gour Saha <go...@apache.org>
Committed: Sat May 16 09:21:57 2015 -0700
----------------------------------------------------------------------
.../slider/core/launch/AbstractLauncher.java | 39 ++++++++++----------
1 file changed, 20 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/507a87b0/slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java b/slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java
index 8c8ec16..3e9b50b 100644
--- a/slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java
+++ b/slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java
@@ -41,7 +41,7 @@ import org.apache.slider.core.conf.MapOperations;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
import java.io.File;
import java.io.IOException;
@@ -319,21 +319,22 @@ public abstract class AbstractLauncher extends Configured {
logPatternJoinStr);
log.info("Log exclude patterns: {}", logExcludePattern);
- // SLIDER-810/YARN-3154 - hadoop 2.7.0 onwards a new constructor has been
- // added for log aggregation for LRS. Existing constructor's behavior
- // has changed and is used for log aggregation only after the application
- // has finished. This forces Slider users to move to hadoop 2.7.0+ just
- // for log aggregation, which is not very desirable. So we decided to use
- // reflection here to find out if the new 2.7.0 constructor is available.
- // If yes, then we use it, so log aggregation will work in hadoop 2.7.0+
- // env. If no, then we fallback to the pre-2.7.0 constructor, which means
- // log aggregation will work as expected in hadoop 2.6 as well.
+ // SLIDER-810/YARN-3154 - hadoop 2.7.0 onwards a new instance method has
+ // been added for log aggregation for LRS. Existing newInstance method's
+ // behavior has changed and is used for log aggregation only after the
+ // application has finished. This forces Slider users to move to hadoop
+ // 2.7.0+ just for log aggregation, which is not very desirable. So we
+ // decided to use reflection here to find out if the new 2.7.0 newInstance
+ // method is available. If yes, then we use it, so log aggregation will
+ // work in hadoop 2.7.0+ env. If no, then we fallback to the pre-2.7.0
+ // newInstance method, which means log aggregation will work as expected
+ // in hadoop 2.6 as well.
// TODO: At some point, say 2-3 Slider releases down, when most users are
// running hadoop 2.7.0, we should get rid of the reflection code here.
try {
- Constructor<LogAggregationContext> logAggregationContextConstructor =
- LogAggregationContext.class.getConstructor(String.class,
- String.class, String.class, String.class);
+ Method logAggregationContextMethod = LogAggregationContext.class
+ .getMethod("newInstance", String.class, String.class, String.class,
+ String.class);
// Need to set include/exclude patterns appropriately since by default
// rolled log aggregation is not done for any files, so defaults are
// - include pattern set to ""
@@ -353,16 +354,16 @@ public abstract class AbstractLauncher extends Configured {
&& StringUtils.isEmpty(logExcludePattern)) {
logExcludePattern = "";
}
- log.debug("LogAggregationContext new constructor for rolled logs "
+ log.debug("LogAggregationContext newInstance method for rolled logs "
+ "include/exclude patterns is available");
log.info("Modified log include patterns: {}", logIncludePattern);
log.info("Modified log exclude patterns: {}", logExcludePattern);
- logAggregationContext = logAggregationContextConstructor.newInstance(
- null, null, logIncludePattern, logExcludePattern);
+ logAggregationContext = (LogAggregationContext) logAggregationContextMethod
+ .invoke(null, null, null, logIncludePattern, logExcludePattern);
} catch (NoSuchMethodException | SecurityException
- | InstantiationException | IllegalAccessException
- | IllegalArgumentException | InvocationTargetException e) {
- log.debug("LogAggregationContext new constructor for rolled logs "
+ | IllegalAccessException | IllegalArgumentException
+ | InvocationTargetException e) {
+ log.debug("LogAggregationContext newInstance method for rolled logs "
+ "include/exclude patterns is not available - fallback to old one");
log.debug(e.toString());
logAggregationContext = LogAggregationContext.newInstance(