[ 
http://jira.amdatu.org/jira/browse/AMDATU-285?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bram de Kruijff resolved AMDATU-285.
------------------------------------

      Assignee: Ivo Ladage - van Doorn  (was: Bram de Kruijff)
    Resolution: Fixed

Resolved by changing to a proactive teanant based filtering strategy. Now the 
resulting chain invoked will just caontain the 50  filter relevant to the 
tenant.

> StackOverflowError in FilterHandler of dispatcher
> -------------------------------------------------
>
>                 Key: AMDATU-285
>                 URL: http://jira.amdatu.org/jira/browse/AMDATU-285
>             Project: Amdatu
>          Issue Type: Bug
>          Components: Amdatu Web
>    Affects Versions: 0.1.0
>            Reporter: Ivo Ladage - van Doorn
>            Assignee: Ivo Ladage - van Doorn
>            Priority: Blocker
>             Fix For: 0.1.0
>
>         Attachments: DispatcherPerformanceTest.java
>
>
> I created a small performance tests which:
> - registers a single servlet
> - registers 50 filters and 50 tenants
> - fires 2000 GET requests to the servlet (synchronously in a single thread)
> When doing this, this always results in a StackOverflowError in the 
> dispatcher:
> INFO: Added tenant tenant_50 in 1026 ms [pax-exam-probe]
> INFO: Running single performance test with 50 filters and 50 tenants. 
> [pax-exam-probe]
> WARNING: Error for /test/servlet [org.apache.felix.http.jetty]
> null
> java.lang.StackOverflowError
>         at java.lang.Character.codePointAt(Character.java:2335)
>         at java.util.regex.Pattern$CharProperty.match(Pattern.java:3344)
>         at java.util.regex.Pattern$Curly.match0(Pattern.java:3760)
>         at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
>         at java.util.regex.Matcher.match(Matcher.java:1127)
>         at java.util.regex.Matcher.matches(Matcher.java:502)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.matchesPath(FilterHandler.java:78)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.handle(FilterHandler.java:63)
>         at 
> org.amdatu.web.dispatcher.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
>         at 
> org.amdatu.web.dispatcher.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)
>         at 
> org.amdatu.test.integration.mock.TestFilter.doFilter(TestFilter.java:24)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.doHandle(FilterHandler.java:91)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.handle(FilterHandler.java:67)
>         at 
> org.amdatu.web.dispatcher.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
>         at 
> org.amdatu.web.dispatcher.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)
>         at 
> org.amdatu.test.integration.mock.TestFilter.doFilter(TestFilter.java:24)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.doHandle(FilterHandler.java:91)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.handle(FilterHandler.java:67)
>         at 
> org.amdatu.web.dispatcher.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
>         at 
> org.amdatu.web.dispatcher.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)
>         at 
> org.amdatu.test.integration.mock.TestFilter.doFilter(TestFilter.java:24)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.doHandle(FilterHandler.java:91)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.handle(FilterHandler.java:67)
>         at 
> org.amdatu.web.dispatcher.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
>         at 
> org.amdatu.web.dispatcher.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)
>         at 
> org.amdatu.test.integration.mock.TestFilter.doFilter(TestFilter.java:24)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.doHandle(FilterHandler.java:91)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.handle(FilterHandler.java:67)
>         at 
> org.amdatu.web.dispatcher.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
>         at 
> org.amdatu.web.dispatcher.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)
>         at 
> org.amdatu.test.integration.mock.TestFilter.doFilter(TestFilter.java:24)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.doHandle(FilterHandler.java:91)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.handle(FilterHandler.java:67)
>         at 
> org.amdatu.web.dispatcher.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
>         at 
> org.amdatu.web.dispatcher.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)
>         at 
> org.amdatu.test.integration.mock.TestFilter.doFilter(TestFilter.java:24)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.doHandle(FilterHandler.java:91)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.handle(FilterHandler.java:67)
>         at 
> org.amdatu.web.dispatcher.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
>         at 
> org.amdatu.web.dispatcher.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)
>         at 
> org.amdatu.test.integration.mock.TestFilter.doFilter(TestFilter.java:24)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.doHandle(FilterHandler.java:91)
>         at 
> org.amdatu.web.dispatcher.handler.FilterHandler.handle(FilterHandler.java:67)
>         at 
> org.amdatu.web.dispatcher.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
>         at 
> org.amdatu.web.dispatcher.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)
>         ...

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to