You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@uima.apache.org by Erik Fäßler <er...@uni-jena.de> on 2012/02/18 13:01:45 UTC

Exception in collectionProcessComplete not reported?

Hey folks,

I had an odd problem when I realized not all of my documents were actually treated by my consumer. I run a traditional CPE with 4 threads. After some time of research I came to note that my consumer-AE had an exception thrown which I never saw. The exception is thrown in this collectionProcessComplete method:

	
@Override
public void collectionProcessComplete()
		throws AnalysisEngineProcessException {
	super.collectionProcessComplete();
	try {
		psEntities.executeBatch();
		conn.commit();
		conn.close();
	} catch (SQLException e) {
		throw new AnalysisEngineProcessException(e.getNextException());
	}
}

I have to call e.printStackTrace() (or e.getNextException().printStackTrace()) myself in order to get a message about the error. I am running UIMA 2.3.1. How can it be an Exception stays unreported? Have I messed up some logging options or something? It seems I'm unaware of some fundamental thing about exception handling in UIMA here and I would rather not have to search for exceptions myself without knowing they even have been thrown :-)

Thanks!

	Erik 

Re: Exception in collectionProcessComplete not reported?

Posted by Erik Fäßler <er...@uni-jena.de>.
Hi Timo,

ah, thank you for your answer. I guess I just should have dug a bit deeper on my own intuition regarding the logger settings. I think I know where the error is (I mean besides the obvious answer "In front of the screen" ;-)). I didn't see it because there are several logger solutions in my current pipeline, it's a bit messy and I did not have time to clean this thing yet. And I know there are some logger settings which are screwed but I did not know it was UIMA (all other messages come through so I wasn't suspicious ;-)).

So thanks for the hint and have nice week! Greetings from Jena...

	Erik

Am 20.02.2012 um 10:01 schrieb Timo Boehme:

> 
> Am 18.02.2012 13:01, schrieb Erik Fäßler:
>> I had an odd problem when I realized not all of my documents were
>> actually treated by my consumer. I run a traditional CPE with 4
>> threads. After some time of research I came to note that my
>> consumer-AE had an exception thrown which I never saw. The exception
>> is thrown in this collectionProcessComplete method:
>> 
>> ...	
>> 	} catch (SQLException e) {
>> 		throw new AnalysisEngineProcessException(e.getNextException());
>> 	}
>> 
>> I have to call e.printStackTrace() (or
>> e.getNextException().printStackTrace()) myself in order to get a
>> message about the error. I am running UIMA 2.3.1. How can it be an
>> Exception stays unreported? Have I messed up some logging options or
>> something? It seems I'm unaware of some fundamental thing about
>> exception handling in UIMA here and I would rather not have to search
>> for exceptions myself without knowing they even have been thrown :-)
> 
> UIMA catches all exceptions reaching it, even runtime exceptions via uncaught exception handler. If you properly initialized the UIMA logging it should report the exceptions (however I cannot tell you how :-) ).
> There is another way to get the exceptions:
> when you created the cpe instance, e.g. like
> CollectionProcessingEngine cpe = UIMAFramework.produceCollectionProcessingEngine( cpeDesc );
> 
> you should add an own implementation of StatusCallbackListener via
> cpe.addStatusCallbackListener( cpeStatusListener )
> 
> in the StatusCallbackListener there is a method
> entityProcessComplete( CAS _cas, EntityProcessStatus _status )
> 
> with _status.isException() and _status.getExceptions() you can get the exceptions occurred during processing and which components were involved (_status.getFailedComponentNames()).
> 
> 
> Kind regards,
> 
> Timo
> 
> 
> -- 
> 
> Timo Boehme
> OntoChem GmbH
> H.-Damerow-Str. 4
> 06120 Halle/Saale
> T: +49 345 4780474
> F: +49 345 4780471
> timo.boehme@ontochem.com
> 
> _____________________________________________________________________
> 
> OntoChem GmbH
> Geschäftsführer: Dr. Lutz Weber
> Sitz: Halle / Saale
> Registergericht: Stendal
> Registernummer: HRB 215461
> _____________________________________________________________________
> 


Re: Exception in collectionProcessComplete not reported?

Posted by Timo Boehme <ti...@ontochem.com>.
Am 18.02.2012 13:01, schrieb Erik Fäßler:
> I had an odd problem when I realized not all of my documents were
> actually treated by my consumer. I run a traditional CPE with 4
> threads. After some time of research I came to note that my
> consumer-AE had an exception thrown which I never saw. The exception
> is thrown in this collectionProcessComplete method:
>
> ...	
> 	} catch (SQLException e) {
> 		throw new AnalysisEngineProcessException(e.getNextException());
> 	}
>
> I have to call e.printStackTrace() (or
> e.getNextException().printStackTrace()) myself in order to get a
> message about the error. I am running UIMA 2.3.1. How can it be an
> Exception stays unreported? Have I messed up some logging options or
> something? It seems I'm unaware of some fundamental thing about
> exception handling in UIMA here and I would rather not have to search
> for exceptions myself without knowing they even have been thrown :-)

UIMA catches all exceptions reaching it, even runtime exceptions via 
uncaught exception handler. If you properly initialized the UIMA logging 
it should report the exceptions (however I cannot tell you how :-) ).
There is another way to get the exceptions:
when you created the cpe instance, e.g. like
CollectionProcessingEngine cpe = 
UIMAFramework.produceCollectionProcessingEngine( cpeDesc );

you should add an own implementation of StatusCallbackListener via
cpe.addStatusCallbackListener( cpeStatusListener )

in the StatusCallbackListener there is a method
entityProcessComplete( CAS _cas, EntityProcessStatus _status )

with _status.isException() and _status.getExceptions() you can get the 
exceptions occurred during processing and which components were involved 
(_status.getFailedComponentNames()).


Kind regards,

Timo


-- 

  Timo Boehme
  OntoChem GmbH
  H.-Damerow-Str. 4
  06120 Halle/Saale
  T: +49 345 4780474
  F: +49 345 4780471
  timo.boehme@ontochem.com

_____________________________________________________________________

  OntoChem GmbH
  Geschäftsführer: Dr. Lutz Weber
  Sitz: Halle / Saale
  Registergericht: Stendal
  Registernummer: HRB 215461
_____________________________________________________________________