Author: ssmiweve
Date: 2008-11-24 14:56:52 +0100 (Mon, 24 Nov 2008)
New Revision: 6975

Modified:
   
branches/2.18/war/src/main/java/no/sesat/search/http/filters/SiteLocatorFilter.java
Log:
Issue SKER4321:  (Load reducing filter that handles only current and last 
request from client) 

Modified: 
branches/2.18/war/src/main/java/no/sesat/search/http/filters/SiteLocatorFilter.java
===================================================================
--- 
branches/2.18/war/src/main/java/no/sesat/search/http/filters/SiteLocatorFilter.java
 2008-11-21 19:01:26 UTC (rev 6974)
+++ 
branches/2.18/war/src/main/java/no/sesat/search/http/filters/SiteLocatorFilter.java
 2008-11-24 13:56:52 UTC (rev 6975)
@@ -131,7 +131,14 @@
 
     // Static --------------------------------------------------------
 
+    static String getRequestId(final ServletRequest servletRequest){
 
+        if(null == servletRequest.getAttribute("UNIQUE_ID")){
+            servletRequest.setAttribute("UNIQUE_ID", 
UUID.randomUUID().toString());
+        }
+        return (String)servletRequest.getAttribute("UNIQUE_ID");
+    }
+
     // Constructors --------------------------------------------------
 
     /** Default constructor. **/
@@ -385,10 +392,15 @@
     // Protected -----------------------------------------------------
 
     // Private -------------------------------------------------------
-    private static void doChainFilter(final FilterChain chain, final 
ServletRequest request,
+
+    @SuppressWarnings("unchecked")
+    private static void doChainFilter(
+            final FilterChain chain,
+            final ServletRequest request,
             final ServletResponse response) throws IOException, 
ServletException {
+
         if (request instanceof HttpServletRequest) {
-            HttpSession session = ((HttpServletRequest) request).getSession();
+            final HttpSession session = ((HttpServletRequest) 
request).getSession();
 
             Stack<ServletRequest> stack;
             synchronized (session) {
@@ -405,7 +417,9 @@
                     ((HttpServletResponse) 
response).sendError(HttpServletResponse.SC_CONFLICT);
                 }
             } else {
-                long start = System.currentTimeMillis();
+
+                // requests added to the stack enter a wait loop here and are 
thrown out after WAIT_TIME
+                final long start = System.currentTimeMillis();
                 stack.push(request);
                 synchronized (session) {
                     try {
@@ -425,8 +439,7 @@
                             LOG.warn(" -- response 409 (Timeout: Waited " + 
(WAIT_TIME - timeLeft) + " ms. )");
                             ((HttpServletResponse) 
response).sendError(HttpServletResponse.SC_CONFLICT);
                         }
-                    }
-                    finally {
+                    }finally {
                         stack.pop();
                         session.notifyAll();
                     }
@@ -437,14 +450,6 @@
         }
     }
 
-    static String getRequestId(final ServletRequest servletRequest){
-
-        if(null == servletRequest.getAttribute("UNIQUE_ID")){
-            servletRequest.setAttribute("UNIQUE_ID", 
UUID.randomUUID().toString());
-        }
-        return (String)servletRequest.getAttribute("UNIQUE_ID");
-    }
-
     private void doBeforeProcessing(final ServletRequest request, final 
ServletResponse response)
             throws IOException, ServletException {
 

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to