dont update stats after failure

This commit is contained in:
zzz
2010-12-03 21:30:32 +00:00
parent 8976746867
commit 5ab813179d
2 changed files with 24 additions and 16 deletions

View File

@@ -138,6 +138,13 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
} else { } else {
new I2PTunnelRunner(s, socket, slock, null, modifiedHeader.getBytes(), null); new I2PTunnelRunner(s, socket, slock, null, modifiedHeader.getBytes(), null);
} }
long afterHandle = getTunnel().getContext().clock().now();
long timeToHandle = afterHandle - afterAccept;
getTunnel().getContext().statManager().addRateData("i2ptunnel.httpserver.blockingHandleTime", timeToHandle, 0);
if ( (timeToHandle > 1000) && (_log.shouldLog(Log.WARN)) )
_log.warn("Took a while to handle the request for " + remoteHost + ':' + remotePort +
" [" + timeToHandle + ", socket create: " + (afterSocket-afterAccept) + "]");
} catch (SocketException ex) { } catch (SocketException ex) {
try { try {
// Send a 503, so the user doesn't get an HTTP Proxy error message // Send a 503, so the user doesn't get an HTTP Proxy error message
@@ -162,13 +169,6 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
if (_log.shouldLog(Log.ERROR)) if (_log.shouldLog(Log.ERROR))
_log.error("OOM in HTTP server", oom); _log.error("OOM in HTTP server", oom);
} }
long afterHandle = getTunnel().getContext().clock().now();
long timeToHandle = afterHandle - afterAccept;
getTunnel().getContext().statManager().addRateData("i2ptunnel.httpserver.blockingHandleTime", timeToHandle, 0);
if ( (timeToHandle > 1000) && (_log.shouldLog(Log.WARN)) )
_log.warn("Took a while to handle the request for " + remoteHost + ':' + remotePort +
" [" + timeToHandle + ", socket create: " + (afterSocket-afterAccept) + "]");
} }
private static class CompressedRequestor implements Runnable { private static class CompressedRequestor implements Runnable {

View File

@@ -268,6 +268,14 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
return rv; return rv;
} }
/**
* If usePool is set, this starts the Handler pool and exits.
* Otherwise, this is the accept() loop, and it
* hands each I2P socket to a new thread.
* Note that there is no option to handle each socket in-line, which
* might be appropriate for standard servers that are not filtering headers,
* and are thus unlikely to block.
*/
public void run() { public void run() {
I2PServerSocket i2pS_S = sockMgr.getServerSocket(); I2PServerSocket i2pS_S = sockMgr.getServerSocket();
if (shouldUsePool()) { if (shouldUsePool()) {
@@ -300,9 +308,9 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
public boolean shouldUsePool() { return _usePool; } public boolean shouldUsePool() { return _usePool; }
/** /**
* minor thread pool to pull off the accept() concurrently. there are still lots * Minor thread pool to pull off the accept() concurrently.
* (and lots) of wasted threads within the I2PTunnelRunner, but its a start * This is NOT used by default; enable and set number of Handlers
* * in the options.
*/ */
private class Handler implements Runnable { private class Handler implements Runnable {
private I2PServerSocket _serverSocket; private I2PServerSocket _serverSocket;
@@ -336,6 +344,12 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
Socket s = new Socket(remoteHost, remotePort); Socket s = new Socket(remoteHost, remotePort);
afterSocket = I2PAppContext.getGlobalContext().clock().now(); afterSocket = I2PAppContext.getGlobalContext().clock().now();
new I2PTunnelRunner(s, socket, slock, null, null); new I2PTunnelRunner(s, socket, slock, null, null);
long afterHandle = I2PAppContext.getGlobalContext().clock().now();
long timeToHandle = afterHandle - afterAccept;
if ( (timeToHandle > 1000) && (_log.shouldLog(Log.WARN)) )
_log.warn("Took a while to handle the request for " + remoteHost + ':' + remotePort +
" [" + timeToHandle + ", socket create: " + (afterSocket-afterAccept) + "]");
} catch (SocketException ex) { } catch (SocketException ex) {
try { try {
socket.close(); socket.close();
@@ -345,12 +359,6 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
} catch (IOException ex) { } catch (IOException ex) {
_log.error("Error while waiting for I2PConnections", ex); _log.error("Error while waiting for I2PConnections", ex);
} }
long afterHandle = I2PAppContext.getGlobalContext().clock().now();
long timeToHandle = afterHandle - afterAccept;
if ( (timeToHandle > 1000) && (_log.shouldLog(Log.WARN)) )
_log.warn("Took a while to handle the request for " + remoteHost + ':' + remotePort +
" [" + timeToHandle + ", socket create: " + (afterSocket-afterAccept) + "]");
} }
} }