Skip to content

Commit ddd389b

Browse files
author
Clifford W. Johnson
authored
Merge pull request #1348 from myronkscott/remove_jmx
[5.10] remove JMX detection, not needed
2 parents 287da79 + 8911bea commit ddd389b

File tree

2 files changed

+0
-107
lines changed

2 files changed

+0
-107
lines changed

common/src/main/java/com/tc/lang/ThrowableHandlerImpl.java

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -113,22 +113,6 @@ public void addCallbackOnExitExceptionHandler(Class<?> c, CallbackOnExitHandler
113113
public void handleThrowable(Thread thread, Throwable t) {
114114
handlePossibleOOME(t);
115115

116-
if (isThreadGroupDestroyed(thread, t)) {
117-
logger.warn("Ignoring an attempt to start a JMX thread during shutdown.", t);
118-
return;
119-
}
120-
121-
if (isJMXTerminatedException(t)) {
122-
logger.warn("Ignoring a Thread Service termination error from JMX.", t);
123-
return;
124-
}
125-
126-
if (isNotificationFetcherThread(thread)) {
127-
// DEV-5006 -- Do not exit L2.
128-
logger.warn("Got Exception in JMX Notification forwarding", t);
129-
return;
130-
}
131-
132116
final CallbackOnExitState throwableState = new CallbackOnExitState(t);
133117
scheduleExit(throwableState);
134118

@@ -151,19 +135,6 @@ public void handleThrowable(Thread thread, Throwable t) {
151135
exit(throwableState);
152136
}
153137

154-
private static boolean isThreadGroupDestroyed(Thread thread, Throwable t) {
155-
// see EHCTERR-32
156-
if (t instanceof IllegalThreadStateException) {
157-
StackTraceElement[] stack = t.getStackTrace();
158-
StackTraceElement bottom = stack[stack.length - 1];
159-
if (stack[0].getClassName().equals("java.lang.ThreadGroup") && stack[0].getMethodName().equals("addUnstarted")
160-
&& bottom.getClassName().equals("javax.management.remote.generic.GenericConnectorServer$Receiver")
161-
&& bottom.getMethodName().equals("run")) { return true; }
162-
}
163-
164-
return false;
165-
}
166-
167138
/**
168139
* Makes sure we don't allocate any heap objects on OOME.
169140
* {@code -XX:+HeapDumpOnOutOfMemoryError} should take care of debug information.
@@ -241,26 +212,4 @@ protected synchronized void exit(int status) {
241212
ThreadUtil.reallySleep(2000);
242213
System.exit(status);
243214
}
244-
245-
private static boolean isNotificationFetcherThread(Thread thread) {
246-
// UGLY Way to Ignore exception in JMX Notification Forwarder Thread.
247-
try {
248-
Field runnableField = thread.getClass().getDeclaredField("target");
249-
runnableField.setAccessible(true);
250-
Object runnable = runnableField.get(thread);
251-
if (runnable != null && runnable.getClass().getSimpleName().equals("NotifFetcher")) {
252-
return true;
253-
} else {
254-
return false;
255-
}
256-
} catch (Throwable e) {
257-
return false;
258-
}
259-
260-
}
261-
262-
private static boolean isJMXTerminatedException(Throwable throwable) {
263-
return throwable instanceof IllegalStateException &&
264-
throwable.getMessage().contains("The Thread Service has been terminated.");
265-
}
266215
}

common/src/test/java/com/tc/lang/ThrowableHandlerTest.java

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -70,62 +70,6 @@ protected synchronized void exit(int status) {
7070
assertEquals(-1, exitCode.get());
7171
}
7272

73-
public void testHandleJMXThreadServiceTermination() throws Exception {
74-
final AtomicBoolean exited = new AtomicBoolean(false);
75-
ThrowableHandler throwableHandler = new ThrowableHandlerImpl(LoggerFactory.getLogger(getClass())) {
76-
@Override
77-
protected synchronized void exit(int status) {
78-
exited.set(true);
79-
}
80-
};
81-
throwableHandler.handleThrowable(Thread.currentThread(),
82-
new IllegalStateException("The Thread Service has been terminated."));
83-
assertFalse(exited.get());
84-
}
85-
86-
public void testIsThreadGroupDestroyed() throws Exception {
87-
final AtomicBoolean exited = new AtomicBoolean(false);
88-
ThrowableHandler throwableHandler = new ThrowableHandlerImpl(LoggerFactory.getLogger(getClass())) {
89-
@Override
90-
protected synchronized void exit(int status) {
91-
exited.set(true);
92-
}
93-
};
94-
95-
Runnable r = new Runnable() {
96-
@Override
97-
public void run() {
98-
//
99-
100-
}
101-
};
102-
103-
ThreadGroup threadGroup = new ThreadGroup("blah");
104-
Thread thread = new Thread(threadGroup, r);
105-
thread.start();
106-
thread.join();
107-
threadGroup.destroy();
108-
109-
Throwable t = null;
110-
try {
111-
Thread tempThread = new Thread(threadGroup, r);
112-
fail();
113-
assertFalse(tempThread.isAlive()); // stupid workaround to clear warning about unused allocated object
114-
} catch (Throwable th) {
115-
t = th;
116-
}
117-
118-
StackTraceElement[] stack = t.getStackTrace();
119-
stack[stack.length - 1] = new StackTraceElement("javax.management.remote.generic.GenericConnectorServer$Receiver",
120-
"run", "Foo.java", 12);
121-
t.setStackTrace(stack);
122-
123-
throwableHandler.handleThrowable(thread, t);
124-
if (!new VmVersion(System.getProperties()).isIBM()) {
125-
assumeFalse(exited.get()); // this fails for IBM JDK
126-
}
127-
}
128-
12973
private class TestCallbackOnExitHandler implements CallbackOnExitHandler {
13074

13175
@Override

0 commit comments

Comments
 (0)