From 6ba31cfe3ec16751d0988db6c8782a7364cc49f8 Mon Sep 17 00:00:00 2001 From: Jani Laakso Date: Sat, 8 Dec 2007 10:29:28 +0000 Subject: [PATCH] Cleaner error reporting (not full stacktrace) when client abruptly presses STOP button on browser or closes sockets in the middle of request sending by other means. Anyone gets these on production server and stacktraces were replaced with cleaner warning messages indicating that this is most likely not a bug. svn changeset:3188/svn branch:trunk --- .../terminal/gwt/server/CommunicationManager.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java b/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java index 591e3e19d0..8e1af64a44 100644 --- a/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java +++ b/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java @@ -11,6 +11,7 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.net.SocketException; import java.text.DateFormatSymbols; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -35,6 +36,8 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.catalina.connector.ClientAbortException; + import com.itmill.toolkit.Application; import com.itmill.toolkit.Application.WindowAttachEvent; import com.itmill.toolkit.Application.WindowDetachEvent; @@ -106,7 +109,6 @@ public class CommunicationManager implements Paintable.RepaintRequestListener, public void takeControl() { application.addListener((Application.WindowAttachListener) this); application.addListener((Application.WindowDetachListener) this); - } /** @@ -426,7 +428,14 @@ public class CommunicationManager implements Paintable.RepaintRequestListener, out.flush(); out.close(); - + } catch (ClientAbortException e) { + // Most likely client browser closed socket + System.err + .println("Warning: ClientAbortException in ApplicationServlet"); + } catch (SocketException e) { + // Most likely client browser closed socket + System.err + .println("Warning: SocketException in ApplicationServlet"); } catch (final Throwable e) { e.printStackTrace(); // Writes the error report to client @@ -818,7 +827,6 @@ public class CommunicationManager implements Paintable.RepaintRequestListener, } public synchronized boolean hasPaintableId(Paintable paintable) { - return paintableIdMap.containsKey(paintable); } -- 2.39.5