Author: markt
Date: Thu Jan  4 20:11:04 2018
New Revision: 1820194

URL: http://svn.apache.org/viewvc?rev=1820194&view=rev
Log:
Partial fix for https://bz.apache.org/bugzilla/show_bug.cgi?id=61886
Ensure that multiple threads do not attempt to complete the AsyncContext if an 
I/O error occurs in the stock ticker example Servlet.

Modified:
    tomcat/trunk/webapps/docs/changelog.xml
    tomcat/trunk/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1820194&r1=1820193&r2=1820194&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Jan  4 20:11:04 2018
@@ -139,6 +139,11 @@
         <bug>61910</bug>: Clarify the meaning of the <code>allowLinking</code>
         option in the documentation web application. (markt)
       </fix>
+      <fix>
+        Partial fix for <bug>61886</bug>. Ensure that multiple threads do not
+        attempt to complete the <code>AsyncContext</code> if an I/O error 
occurs
+        in the stock ticker example Servlet. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Other">

Modified: 
tomcat/trunk/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java?rev=1820194&r1=1820193&r2=1820194&view=diff
==============================================================================
--- tomcat/trunk/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java 
(original)
+++ tomcat/trunk/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java 
Thu Jan  4 20:11:04 2018
@@ -85,26 +85,24 @@ public class AsyncStockServlet extends H
         }
     }
 
-    public void writeStock(AsyncContext actx, Stock stock) {
+
+    public void writeStock(AsyncContext actx, Stock stock) throws IOException {
         HttpServletResponse response = (HttpServletResponse)actx.getResponse();
-        try {
-            PrintWriter writer = response.getWriter();
-            writer.write("STOCK#");//make client parsing easier
-            writer.write(stock.getSymbol());
-            writer.write("#");
-            writer.write(stock.getValueAsString());
-            writer.write("#");
-            writer.write(stock.getLastChangeAsString());
-            writer.write("#");
-            writer.write(String.valueOf(stock.getCnt()));
-            writer.write("\n");
-            writer.flush();
-            response.flushBuffer();
-        }catch (IOException x) {
-            try {actx.complete();}catch (Exception ignore){/* Ignore */}
-        }
+        PrintWriter writer = response.getWriter();
+        writer.write("STOCK#");//make client parsing easier
+        writer.write(stock.getSymbol());
+        writer.write("#");
+        writer.write(stock.getValueAsString());
+        writer.write("#");
+        writer.write(stock.getLastChangeAsString());
+        writer.write("#");
+        writer.write(String.valueOf(stock.getCnt()));
+        writer.write("\n");
+        writer.flush();
+        response.flushBuffer();
     }
 
+
     @Override
     public void onComplete(AsyncEvent event) throws IOException {
         if (clients.remove(event.getAsyncContext()) && 
clientcount.decrementAndGet()==0) {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to