Problemas com VRaptor 3.1.2

39 views
Skip to first unread message

Rafael Ponte

unread,
Dec 26, 2011, 9:08:41 AM12/26/11
to Caelum VRaptor Dev
Bom dia senhores,

Atualmente tenho uma app que está rodando com VRaptor 3.1.2, na qual é uma app Web convencional e também possui alguns webservices disponíveis para outras apps Java desktop (middlewares). São exatamente 62 clientes (middlewares) enviando requisições (GET e POST) para meu servidor Web num intervalo de no máximo 5sec.

O contexto starta corretamente, mas sempre que reiniciamos o servidor (Tomcat), por algum motivo, o contexto na qual roda o VRaptor 3.1.2 não starta direito, ou seja, a aplicação sobe (sei disso pois existem alguns serviços em background funcionando) mais a parte controller não funciona, e minha interface Web simplesmente pára de funcionar com erro malucos.

No log temos o seguinte erro:

24/12/2011 14:29:37 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761)
at java.util.LinkedList$ListItr.next(LinkedList.java:696)

at com.google.common.collect.Iterators.any(Iterators.java:638)
at com.google.common.collect.Collections2$FilteredCollection.isEmpty(Collections2.java:168)
at br.com.caelum.vraptor.http.route.DefaultRouter.routesMatchingUri(DefaultRouter.java:134)
at br.com.caelum.vraptor.http.route.DefaultRouter.routesMatchingUriAndMethod(DefaultRouter.java:116)
at br.com.caelum.vraptor.http.route.DefaultRouter.parse(DefaultRouter.java:92)
at br.com.caelum.vraptor.http.DefaultResourceTranslator.translate(DefaultResourceTranslator.java:51)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:64)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at br.com.syspdv.synch.web.SSOFilter.doFilter(SSOFilter.java:35)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
24/12/2011 14:29:37 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException: There are two rules that matches the uri '/monitoramento/status/online/0046' with method GET: [[FixedMethodStrategy: /monitoramento/status/online/{codigoDaLoja}                       HealthCheckerController.online(String)                                 [GET]], [FixedMethodStrategy: /monitoramento/status/online/{codigoDaLoja}                       HealthCheckerController.online(String)                                 [GET]]] with same priority. Consider using @Path priority attribute.
at br.com.caelum.vraptor.http.route.DefaultRouter.checkIfThereIsAnotherRoute(DefaultRouter.java:106)

at br.com.caelum.vraptor.http.route.DefaultRouter.parse(DefaultRouter.java:97)
at br.com.caelum.vraptor.http.DefaultResourceTranslator.translate(DefaultResourceTranslator.java:51)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:64)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at br.com.syspdv.synch.web.SSOFilter.doFilter(SSOFilter.java:35)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619) 

O que pude perceber é que o erro só ocorre quando reiniciamos o servidor (Tomcat) e os middlewares estão enviando requisições para minha app, é como se o VRaptor "engasgasse" enquanto tentasse carregar suas dependências e mapeamentos das rotas, e ao mesmo tempo tentasse processar as requisições que estão chegando, isto é, como se ele não tivesse tido tempo hábil para ficar "pronto". 

Para resolver isso em alguns clientes nós ligamos o Firewall do servidor antes de reiniciar o serviço do Tomcat, assim conseguimos barrar as requisições e subir o contexto Web sem problemas. Feito isso, desligamos o firewall e a app funciona normalmente.

Vale salientar que utilizamos Spring 3.0.2.

Pretendo atualizar para última versão do VRaptor, a 3.4, pois talvez resolva, mas antes gostaria de compartilhar o problema com vocês e se possível ter alguma luz se isso é de fato um bug, se já foi corrigido e se a última versão resolve isso :-)

Um abraço.

--
Rafael Ponte
http://www.triadworks.com.br

Lucas Cavalcanti

unread,
Dec 26, 2011, 9:14:15 AM12/26/11
to caelum-vr...@googlegroups.com
Bom, o problema da ConcurrentModification foi um bug que já está corrigido há bastante tempo. E acontece se o servidor
receber uma requisição enquanto está subindo, se eu não me engano.

Quanto ao dos caminhos iguais se eu não me engano já foi corrigido também, e acontecia quando você tem
o pacote da aplicação declarado no web.xml (no parametro de packages), e as classes estão no WEB-INF/classes.
Daí é só tirar o pacote.

2011/12/26 Rafael Ponte <rpo...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "caelum-vraptor-dev" group.
To post to this group, send email to caelum-vr...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vraptor-...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/caelum-vraptor-dev?hl=en.

Rafael Ponte

unread,
Dec 26, 2011, 9:24:44 AM12/26/11
to caelum-vr...@googlegroups.com
Oi Lucas,

2011/12/26 Lucas Cavalcanti <lucasm...@gmail.com>

Bom, o problema da ConcurrentModification foi um bug que já está corrigido há bastante tempo. E acontece se o servidor
receber uma requisição enquanto está subindo, se eu não me engano.

Eu até vi que um bug relacionado a isto na versão 3.3.1 foi corrigido, mas fique na dúvida se era algo relacionado.
bugfix - fixed ConcurrentModificationException on interceptors ordering
 


Quanto ao dos caminhos iguais se eu não me engano já foi corrigido também, e acontecia quando você tem
o pacote da aplicação declarado no web.xml (no parametro de packages), e as classes estão no WEB-INF/classes.
Daí é só tirar o pacote.

Bem, não tenho essa configuração no meu web.xml, e o erro só ocorre no cenário que expliquei anteriormente.

Vou atualizar para versão 3.4 e ver se o problema é sanado!

Obrigado pelo rápido feedback!

Rafael Ponte

unread,
Dec 26, 2011, 2:33:17 PM12/26/11
to caelum-vr...@googlegroups.com
Olá,

Eu atualizei o projeto para versão 3.4 do VRaptor, mas antes tentei simular o problema com JMeter em ambas as versões (antiga e nova), mesmo com jmeter foi dificil gerar o problema, e como só consegui na versão antiga posso supor que o problema foi sanado.

Quando atualizar a app no cliente e conseguir levantar o contexto sem problemas eu volto e passo o feedback para vocês.

Obrigado pela ajuda!

2011/12/26 Rafael Ponte <rpo...@gmail.com>
Reply all
Reply to author
Forward
0 new messages