You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2010/10/02 11:24:00 UTC

svn commit: r1003757 - in /commons/proper/daemon/trunk: RELEASE-NOTES.txt src/native/windows/src/javajni.c

Author: mturk
Date: Sat Oct  2 09:23:58 2010
New Revision: 1003757

URL: http://svn.apache.org/viewvc?rev=1003757&view=rev
Log:
DAEMON-165: Do not clear exceptions from main method. Also use always ExceptionDescribe, not only in DEBUG mode

Modified:
    commons/proper/daemon/trunk/RELEASE-NOTES.txt
    commons/proper/daemon/trunk/src/native/windows/src/javajni.c

Modified: commons/proper/daemon/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/RELEASE-NOTES.txt?rev=1003757&r1=1003756&r2=1003757&view=diff
==============================================================================
--- commons/proper/daemon/trunk/RELEASE-NOTES.txt (original)
+++ commons/proper/daemon/trunk/RELEASE-NOTES.txt Sat Oct  2 09:23:58 2010
@@ -46,7 +46,7 @@ NEW FEATURES:
 
 BUG FIXES:
 
-1.0.4: DAEMON-95, DAEMON-171, DAEMON-100
+1.0.4: DAEMON-95, DAEMON-171, DAEMON-100, DAEMON-165
 
 1.0.3: DAEMON-108, DAEMON-128, DAEMON-139, DAEMON-143, DAEMON-148,
        DAEMON-135, DAEMON-155, DAEMON-159, DAEMON-161, DAEMON-145, DAEMON-146,

Modified: commons/proper/daemon/trunk/src/native/windows/src/javajni.c
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/src/javajni.c?rev=1003757&r1=1003756&r2=1003757&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/src/javajni.c (original)
+++ commons/proper/daemon/trunk/src/native/windows/src/javajni.c Sat Oct  2 09:23:58 2010
@@ -63,7 +63,6 @@ static DYNLOAD_FPTR_DECLARE(SetDllDirect
 #define JVM_EXCEPTION_CHECK(jvm) \
     ((*((jvm)->lpEnv))->ExceptionCheck((jvm)->lpEnv) != JNI_OK)
 
-#ifdef _DEBUG
 #define JVM_EXCEPTION_CLEAR(jvm) \
     APXMACRO_BEGIN                                              \
     if ((jvm)->lpEnv) {                                         \
@@ -72,15 +71,6 @@ static DYNLOAD_FPTR_DECLARE(SetDllDirect
             (*((jvm)->lpEnv))->ExceptionClear((jvm)->lpEnv);    \
         }                                                       \
     } APXMACRO_END
-#else
-#define JVM_EXCEPTION_CLEAR(jvm) \
-    APXMACRO_BEGIN                                              \
-    if ((jvm)->lpEnv) {                                         \
-        if ((*((jvm)->lpEnv))->ExceptionCheck((jvm)->lpEnv)) {  \
-            (*((jvm)->lpEnv))->ExceptionClear((jvm)->lpEnv);    \
-        }                                                       \
-    } APXMACRO_END
-#endif
 
 #define JNI_LOCAL_UNREF(obj) \
         (*(lpJava->lpEnv))->DeleteLocalRef(lpJava->lpEnv, obj)
@@ -843,10 +833,10 @@ static DWORD WINAPI __apxJavaWorkerThrea
     LPAPXJAVAVM lpJava;
     LPAPXJAVA_THREADARGS pArgs = (LPAPXJAVA_THREADARGS)lpParameter;
     APXHANDLE hJava;
-    
+
     hJava = (APXHANDLE)pArgs->hJava;
     if (hJava->dwType != APXHANDLE_TYPE_JVM)
-        WORKER_EXIT(0);
+        WORKER_EXIT(1);
 
     if (!apxJavaInitialize(pArgs->hJava,
                            pArgs->szClassPath,
@@ -878,15 +868,16 @@ static DWORD WINAPI __apxJavaWorkerThrea
               lpJava->clWorker.jClazz,
               lpJava->clWorker.jMethod,
               lpJava->clWorker.jArgs);
-
-    JVM_EXCEPTION_CLEAR(lpJava);
-    __apxJvmDetach(lpJava);
-    apxLogWrite(APXLOG_MARK_DEBUG "Java Worker thread %s:%s finished",
-                lpJava->clWorker.sClazz, lpJava->clWorker.sMethod);
+    if (JVM_EXCEPTION_CHECK(lpJava)) {
+        WORKER_EXIT(4);
+    }
+    else {
+        __apxJvmDetach(lpJava);
+    }
 finished:
     lpJava->dwWorkerStatus = 0;
-    apxLogWrite(APXLOG_MARK_DEBUG "Java Worker thread finished %s:%s",
-                lpJava->clWorker.sClazz, lpJava->clWorker.sMethod);
+    apxLogWrite(APXLOG_MARK_DEBUG "Java Worker thread finished %s:%s with status=%d",
+                lpJava->clWorker.sClazz, lpJava->clWorker.sMethod, rv);
     ExitThread(rv);
     /* never gets here but keep the compiler happy */
     return 0;