cancel
Showing results for 
Search instead for 
Did you mean: 

Workflow et error 408 Read Timeout

amandine_b
Champ in-the-making
Champ in-the-making
Bonjour,

Je travaille actuellement sur une plateforme en Alfresco 4.2.f (migration d'une version 4.2.c) et je rencontre un problème d'erreur 408 Read Timeout.

Au démarrage du Tomcat, j'arrive correctement à lancer un workflow (invitation sur un site par exemple).
Au bout d'un moment indéfini et aléatoire, il devient impossible de démarrer un workflow quelque soit son type (envoi d'invitation, annulation d'invitation, démarrage d'un workflow comme "réviser et approuver"…).
Le problème disparaît au redémarrage du tomcat puis revient au bout d'un moment.

J'ai monté un autre environnement avec les mêmes WAR Alfresco et Share, la même base de données et la même configuration dans le alfresco-global.properties, et sur cette plateforme le problème n'est pas reproduit.

Lors d'un test, quand plusieurs invitations avaient échouées, j'ai réussi à débloquer la situation temporairement : En envoyant une commande wget sur l'URL ci-dessous, depuis le serveur d'Alfresco, Toutes les invitations en échec auparavant sont envoyées et le comportement redevient normal pour un temps.

Voici les logs de l'erreur 408 Read Timeout :

2015-06-22 09:12:21,772  INFO  [webscripts.connector.RemoteClient] [ajp-bio-8009-exec-7] Exception calling (GET) http://localhost:8080/alfresco/s/api/invite/cancel?inviteId=activiti%2410080&alf_ticket=TICKET_1a9da...
2015-06-22 09:12:21,786  INFO  [webscripts.connector.RemoteClient] [ajp-bio-8009-exec-7] Error status 408 Read timed out
java.net.SocketTimeoutException: Read timed out
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read(Unknown Source)
   at java.net.SocketInputStream.read(Unknown Source)
   at java.io.BufferedInputStream.fill(Unknown Source)
   at java.io.BufferedInputStream.read(Unknown Source)
   at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
   at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
   at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
   at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
   at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
   at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
   at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
   at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
   at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
   at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
   at org.springframework.extensions.webscripts.connector.RemoteClient.service(RemoteClient.java:1054)
   at org.springframework.extensions.webscripts.connector.RemoteClient.call(RemoteClient.java:708)
   at org.springframework.extensions.webscripts.connector.HttpConnector.call(HttpConnector.java:143)
   at org.springframework.extensions.webscripts.connector.AuthenticatingConnector.call(AuthenticatingConnector.java:293)
   at org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyController.handleRequestInternal(EndPointProxyController.java:326)
   at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
   at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
   at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
   at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
   at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
   at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
   at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
   at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
   at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
   at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at fr.boll.alfresco.CasAuthenticationFilter.doFilter(CasAuthenticationFilter.java:128)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:93)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at com.atolcd.alfresco.ProxyAuditFilter.doFilter(ProxyAuditFilter.java:434)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
   at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)

Avez-vous des idées, ou n'importe quelle piste qui vous viendrait à l'esprit ?

Merci d'avance,

Cordialement
4 REPLIES 4

ycoulon
Employee
Employee
Bonjour,

Le timeout vient de l'application Alfresco qui ne répond pas à temps à Share.
Y-a-t-il des erreurs dans les logs alfresco lorsque le problème est présent ?
Tu parles d'une migration depuis une 4.2.c vers une 4.2.f, as-tu des développements spécifique relatifs au workflows ?

amandine_b
Champ in-the-making
Champ in-the-making
Tout d'abord merci pour votre réponse !

Non, pas d'autres traces dans les logs avant ou après le Timeout.

Pas de développements spécifiques sur les workflows. Voici la liste des workflows définis sur ma plateforme :

id: activiti$activitiAdhoc:1:4 , name: activiti$activitiAdhoc , title: Nouvelle tâche , version: 1
id: activiti$activitiInvitationModerated:1:23 , name: activiti$activitiInvitationModerated , title: Invitation - Modérée , version: 1
id: activiti$activitiInvitationModerated:2:1503 , name: activiti$activitiInvitationModerated , title: Invitation - Modérée , version: 2
id: activiti$activitiInvitationNominated:1:26 , name: activiti$activitiInvitationNominated , title: Invitation à un site - Nominative , version: 1
id: activiti$activitiInvitationNominated:2:1506 , name: activiti$activitiInvitationNominated , title: Invitation à un site - Nominative , version: 2
id: activiti$activitiParallelGroupReview:1:20 , name: activiti$activitiParallelGroupReview , title: Réviser et approuver en mode groupe , version: 1
id: activiti$activitiParallelGroupReview:2:1517 , name: activiti$activitiParallelGroupReview , title: Réviser et approuver en mode groupe , version: 2
id: activiti$activitiParallelReview:1:16 , name: activiti$activitiParallelReview , title: Envoyer un (des) document(s) pour révision , version: 1
id: activiti$activitiParallelReview:2:1513 , name: activiti$activitiParallelReview , title: Envoyer un (des) document(s) pour révision , version: 2
id: activiti$activitiReview:1:8 , name: activiti$activitiReview , title: Réviser et approuver , version: 1
id: activiti$activitiReviewPooled:1:12 , name: activiti$activitiReviewPooled , title: Réviser et approuver en mode partagé , version: 1
id: activiti$publishWebContent:1:29 , name: activiti$publishWebContent , title: Processus Activiti de publication de contenu Web , version: 1
id: activiti$publishWebContent:2:1509 , name: activiti$publishWebContent , title: Processus Activiti de publication de contenu Web , version: 2

ycoulon
Employee
Employee
Bonjour,

Tu peux essayer d'augmenter la valeur de timeout utilisé par le composant RemoteClient. Pour effectuer cela tu peux jeter un oeil à l'article suivant : http://niketa-alfresco3.blogspot.fr/2013/12/alfresco-share-webscript-connection.html

Quelles sont les caractéristiques de la machine hébergeant l'alfresco ?

Yann

amandine_b
Champ in-the-making
Champ in-the-making
J'ai déjà essayé d'augmenter le timeout en suivant les explications du lien mais cela n'a rien donné.

La machine est sur Red Hat Enterprise release 6.5.
Le tomcat utilisé est en version 7.0.42, la version de java est 7.0_25.
La base de données est une PostgreSQL version 8.4.13.

Les options mémoires de la JVM sont les suivantes :

-Xms512m
-Xmx3072m
-XX:PermSize=128m
-XX:MaxPermSize=256m