diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/logaggregation/SampleContainerLogAggregationPolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/logaggregation/SampleContainerLogAggregationPolicy.java index 03f548c..f581ad3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/logaggregation/SampleContainerLogAggregationPolicy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/logaggregation/SampleContainerLogAggregationPolicy.java @@ -108,17 +108,16 @@ public boolean shouldDoLogAggregation(ContainerLogContext logContext) { return true; } + long containerId = logContext.getContainerId().getContainerId() & ContainerId.CONTAINER_ID_BITMASK; // Only sample log aggregation for large applications. // We assume the container id is continuously allocated from number 1 and // Worker containers start from id 2. So logs of worker containers with ids // in [2, minThreshold + 1] will be aggregated. - if ((logContext.getContainerId().getContainerId() & - ContainerId.CONTAINER_ID_BITMASK) < minThreshold + 2) { + if (containerId < minThreshold + 2) { return true; } // Sample log aggregation for the rest of successful worker containers - return (sampleRate != 0 && - logContext.getContainerId().hashCode() % (1/sampleRate) == 0); + return (sampleRate != 0 && (containerId + System.currentTimeMillis()) % 100 < (sampleRate * 100)); } -} \ No newline at end of file +}