You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2012/03/05 19:49:21 UTC

svn commit: r1297163 - /uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java

Author: cwiklik
Date: Mon Mar  5 18:49:21 2012
New Revision: 1297163

URL: http://svn.apache.org/viewvc?rev=1297163&view=rev
Log:
UIMA-2377 Exit the jvm on java Error

Modified:
    uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java

Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java?rev=1297163&r1=1297162&r2=1297163&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java Mon Mar  5 18:49:21 2012
@@ -117,18 +117,17 @@ public class UimaAsThreadFactory impleme
             // TaskExecutor is terminated.
             r.run();
           } catch (Throwable e) {
-        	  UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, getClass().getName(),
+            //   try to log. If this is OOM, logging may not succeed and we
+            //   get another OOM.
+            try {
+              UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, getClass().getName(),
                       "UimaAsThreadFactory", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
                       "UIMAEE_exception__WARNING", e);
-        	  if ( controller != null ) {
-              	  Exception ex;
-              	  if ( e instanceof Exception ) {
-              		  ex = (Exception)e;
-              	  } else {
-              		  ex = new Exception(e);
-              	  }
-            	  controller.notifyListenersWithInitializationStatus(ex);
-        	  } 
+              System.out.println("Exiting UIMA AS Process Due to Uncaught Exception");
+            } catch( Throwable t ) {
+               // Failed during logging. We are tight on memory. Just exit 
+            }
+            System.exit(-1);
             return;
           } finally {
               if ( controller instanceof PrimitiveAnalysisEngineController_impl ) {
@@ -140,7 +139,11 @@ public class UimaAsThreadFactory impleme
          					"UimaAsThreadFactory.run()", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
          					"UIMAEE_ae_instance_destroy_called__INFO", new Object[] {controller.getComponentName(),Thread.currentThread().getId()});
         			  if ( latchToCountNumberOfTerminatedThreads != null ) {
-                  latchToCountNumberOfTerminatedThreads.countDown();
+                  synchronized( latchToCountNumberOfTerminatedThreads ) {
+                    latchToCountNumberOfTerminatedThreads.countDown();
+                    System.out.println(".................... Thread:"+Thread.currentThread().getId()+" CountDownLatch Value:"+latchToCountNumberOfTerminatedThreads.getCount());
+                    System.out.flush();
+                  }
         			  }
               }
           }