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 --------------------------------------------------------
import java.util.logging.Level;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -260,11 +261,11 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor
try
{
processIS = process.getInputStream();
processES = process.getErrorStream();
processErrorStreamAsync(processES);
processServletInput(process);
processIS = process.getInputStream();
processProcessInputStream(processIS);
processErrorStream(processES);
waitForFinish(process);
}
finally
@@ -273,6 +274,20 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor
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