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