process errorstream async to improve errorhandling

This commit is contained in:
Sebastian Sdorra
2011-04-30 15:02:54 +02:00
parent 04d11b2b20
commit 011982e50d

View File

@@ -35,6 +35,7 @@ package sonia.scm.web.cgi;
//~--- non-JDK imports -------------------------------------------------------- //~--- non-JDK imports --------------------------------------------------------
import java.util.logging.Level;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -260,11 +261,11 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor
try try
{ {
processIS = process.getInputStream();
processES = process.getErrorStream(); processES = process.getErrorStream();
processErrorStreamAsync(processES);
processServletInput(process); processServletInput(process);
processIS = process.getInputStream();
processProcessInputStream(processIS); processProcessInputStream(processIS);
processErrorStream(processES);
waitForFinish(process); waitForFinish(process);
} }
finally finally
@@ -273,6 +274,20 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor
IOUtil.close(processES); IOUtil.close(processES);
} }
} }
private void processErrorStreamAsync( final InputStream errorStream )
{
new Thread(new Runnable() {
@Override
public void run() {
try {
processErrorStream(errorStream);
} catch (IOException ex) {
logger.error( "could not read errorstream", ex );
}
}
}).start();
}
/** /**
* Method description * Method description