void abort ( Throwable t ) throws IOException { LOG . info ( "Aborting because of " + StringUtils . stringifyException ( t ) ) ; try { downlink . abort ( ) ; downlink . flush ( ) ; } catch ( IOException e ) { // IGNORE cleanup problems } try { handler . waitForFinish ( ) ; } catch ( Throwable ignored ) { process . destroy ( ) ; } IOException wrapper = new IOException ( "pipe child exception" ) ; wrapper . initCause ( t ) ; throw wrapper ; }
Abort the application and wait for it to finish .