YARN-42. Modify NM's non-aggregating logs' handler to stop properly so that NMs don't get NPEs on startup errors. Contributed by Devaraj K.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1380954 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ab74b1adde
commit
65b308f783
|
@ -59,6 +59,9 @@ Release 2.1.0-alpha - Unreleased
|
|||
YARN-79. Implement close on all clients to YARN so that RPC clients don't
|
||||
throw exceptions on shut-down. (Vinod Kumar Vavilapalli)
|
||||
|
||||
YARN-42. Modify NM's non-aggregating logs' handler to stop properly so that
|
||||
NMs don't get NPEs on startup errors. (Devaraj K via vinodkv)
|
||||
|
||||
Release 0.23.4 - UNRELEASED
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
|
|
@ -79,16 +79,18 @@ public class NonAggregatingLogHandler extends AbstractService implements
|
|||
|
||||
@Override
|
||||
public void stop() {
|
||||
sched.shutdown();
|
||||
boolean isShutdown = false;
|
||||
try {
|
||||
isShutdown = sched.awaitTermination(10, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
sched.shutdownNow();
|
||||
isShutdown = true;
|
||||
}
|
||||
if (!isShutdown) {
|
||||
sched.shutdownNow();
|
||||
if (sched != null) {
|
||||
sched.shutdown();
|
||||
boolean isShutdown = false;
|
||||
try {
|
||||
isShutdown = sched.awaitTermination(10, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
sched.shutdownNow();
|
||||
isShutdown = true;
|
||||
}
|
||||
if (!isShutdown) {
|
||||
sched.shutdownNow();
|
||||
}
|
||||
}
|
||||
super.stop();
|
||||
}
|
||||
|
|
|
@ -183,6 +183,24 @@ public class TestNonAggregatingLogHandler {
|
|||
verify(mockSched).schedule(any(Runnable.class), eq(10800l),
|
||||
eq(TimeUnit.SECONDS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStop() throws Exception {
|
||||
NonAggregatingLogHandler aggregatingLogHandler =
|
||||
new NonAggregatingLogHandler(null, null, null);
|
||||
|
||||
// It should not throw NullPointerException
|
||||
aggregatingLogHandler.stop();
|
||||
|
||||
NonAggregatingLogHandlerWithMockExecutor logHandler =
|
||||
new NonAggregatingLogHandlerWithMockExecutor(null, null, null);
|
||||
logHandler.init(new Configuration());
|
||||
logHandler.stop();
|
||||
verify(logHandler.mockSched).shutdown();
|
||||
verify(logHandler.mockSched)
|
||||
.awaitTermination(eq(10l), eq(TimeUnit.SECONDS));
|
||||
verify(logHandler.mockSched).shutdownNow();
|
||||
}
|
||||
|
||||
private class NonAggregatingLogHandlerWithMockExecutor extends
|
||||
NonAggregatingLogHandler {
|
||||
|
|
Loading…
Reference in New Issue