Alfresco 6.1.1 error 408 ReadTimeOut al cargar nueva versión

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Member II

Alfresco 6.1.1 error 408 ReadTimeOut al cargar nueva versión

Buenas tardes, comento las características de nuestro entorno (obviaré gran parte para no extenderme demasiado) y el problema que tenemos.

INICIO configuración de entorno:

En 2019 realizamos la migración de Alfresco 5.2 hacia Alfresco 6.1.1.

Para la instalación de Alfresco 6.1.1 elegimos realizarla vía Docker con el siguiente enlace como base: https://github.com/keensoft/docker-alfresco

Comento las modificaciones realizadas por si necesitais reproducirlo.

En vez de PostgreSQL, utilizamos MariaDB, para ello hacemos uso del subpost incluído en la anterior url: https://github.com/keensoft/docker-alfresco/wiki/Using-MariaDB-instead-of-PostgreSQL-as-database

Ojo en la descarga del driver de conexión a MariaDB, tiene que ser la versión en concreta indicada en el post, he probado con otras versiones y algunas fallan.

Incluyo las configuraciones de docker-compose y Dockerfile de alfresco (contiene cambiada de imagen entre 6.0.7-ga y 6.1.1)

INICIO docker-compose.yml:

version: "3"

services:
alfresco6:
build: ./alfresco
container_name: alfresco
restart: "always"
depends_on:
- db
environment:
JAVA_OPTS : '
-Ddb.driver=org.mariadb.jdbc.Driver
-Ddb.username=alfresco
-Ddb.password=alfresco
-Ddb.url=jdbc:mariadb://db:3306/alfresco?useUnicode=true\&characterEncoding=UTF-8
-Dsolr.host=solr6
-Dsolr.port=8983
-Dsolr.secureComms=none
-Dsolr.base.url=/solr
-Dindex.subsystem.name=solr6
-Ddeployment.method=DOCKER_COMPOSE
-Dcsrf.filter.enabled=false
-XX:+UseG1GC -XX:+UseStringDeduplication
-Xmx${ALFRESCO_XMX} -Xms${ALFRESCO_XMS}
'
volumes:
- ./volumes/data/alf-repo-data:/usr/local/tomcat/alf_data
- ./volumes/logs/alfresco:/usr/local/tomcat/logs
ports:
- 8082:8080
networks:
- internal

share:
build: ./share
container_name: share
restart: "always"
depends_on:
- alfresco6
environment:
- REPO_HOST=alfresco6
- REPO_PORT=8080
- "CATALINA_OPTS=-XX:+UseG1GC -XX:+UseStringDeduplication -Xms${SHARE_XMS} -Xmx${SHARE_XMX}"
volumes:
- ./volumes/logs/share:/usr/local/tomcat/logs
ports:
- 8080:8080
networks:
- internal

solr6:
image: alfresco/alfresco-search-services:1.2.0
container_name: solr
restart: "always"
depends_on:
- alfresco6
environment:
- SOLR_ALFRESCO_HOST=alfresco6
- SOLR_ALFRESCO_PORT=8080
- SOLR_SOLR_HOST=solr6
- SOLR_SOLR_PORT=8983
- SOLR_CREATE_ALFRESCO_DEFAULTS=alfresco,archive
- SOLR_JAVA_MEM=-Xms${SOLR_XMS} -Xmx${SOLR_XMX}
volumes:
- ./volumes/data/solr-data:/opt/alfresco-search-services/data
- ./volumes/data/solr-backup/alfresco:/usr/local/tomcat/alf_data/solr6Backup/alfresco
- ./volumes/data/solr-backup/archive:/usr/local/tomcat/alf_data/solr6Backup/archive
ports:
- 8083:8983
networks:
- internal

db:
image: mariadb:latest
container_name: mariadb
restart: "always"
volumes:
- ./volumes/data/mariadb_data:/var/lib/mysql
- ./volumes/logs/mariadb:/var/log/mysql
environment:
- MYSQL_ROOT_PASSWORD=alfresco
- MYSQL_DATABASE=alfresco
- MYSQL_USER=alfresco
- MYSQL_PASSWORD=alfresco
ports:
- 3306:3306
networks:
- internal

command: [mysqld, --character-set-server=utf8, --collation-server=utf8_bin, --wait_timeout=28800, --general-log=1, --general-log-file=/var/log/mysql/general-log.log, --slow_query_log=1, --long_query_time=1, --slow_query_log_file=/var/log/mysql/slow.log, --log_queries_not_using_indexes=1]

activemq:
image: alfresco/alfresco-activemq:5.15.6
container_name: activemq
ports:
- 8161:8161 # Web Console
- 5672:5672 # AMQP
- 61616:61616 # OpenWire
- 61613:61613 # STOMP

networks:
internal:

FIN docker-compose.yml

INICIO Dockerfile de alfresco:

FROM alfresco/alfresco-content-repository-community:6.1.1

# Fix to https://issues.alfresco.com/jira/browse/ALF-22013
ENV LC_ALL C.UTF-8 \
LANG C.UTF-8

ARG TOMCAT_DIR=/usr/local/tomcat

# Logs always under $TOMCAT/logs folder
RUN echo "cd $TOMCAT_DIR/logs" > $TOMCAT_DIR/bin/setenv.sh \
&& chmod +x $TOMCAT_DIR/bin/setenv.sh

# Install modules and addons
RUN mkdir -p $TOMCAT_DIR/amps
COPY modules/amps $TOMCAT_DIR/amps
COPY modules/jars $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib

RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \
$TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force

# Install AOS
RUN yum -y update && \
yum -y install wget && \
yum -y install unzip && \
yum clean all

RUN set -x \
&& mkdir /tmp/aos \
&& wget --no-check-certificate https://download.alfresco.com/cloudfront/release/community/201806-GA-build-00113/alfresco-aos-module... \
&& unzip alfresco-aos-module-distributionzip-1.2.0.zip -d /tmp/aos \
&& mv /tmp/aos/extension/* $TOMCAT_DIR/shared/classes/alfresco/extension \
&& mv /tmp/aos/alfresco-aos-module-1.2.0.amp amps \
&& mv /tmp/aos/aos-module-license.txt licenses \
&& mv /tmp/aos/_vti_bin.war $TOMCAT_DIR/webapps \
&& rm -rf /tmp/aos alfresco-aos-module-distributionzip-1.2.0.zip

# Install MariaDB Driver
COPY tomcat/lib $TOMCAT_DIR/lib
COPY tomcat/conf $TOMCAT_DIR/conf

FIN Dockerfile alfresco

 

Adicionalmente tenemos implementados:

Amp de alfresco con modelos de datos, workflows, acciones, etc.

Amp para share con formularios de propiedades, búsquedas, etc.

Otra serie de personalizaciones y la migración de los contenidos.

No incluyo información sobre estas extensiones ya que el error se reproduce con una instalación limpia.

FIN configuración entorno

 

Para reproducir el error:

Al intentar cargar una nueva versión sobre cualquier contenido, existentes o creados de nuevos. Share se queda esperando la respuesta de alfresco que nunca llega, mostrando el siguiente error en pantalla:

Alfresco408.png

 

En el log se muestra:

share | 2020-02-04 14:21:36,226 INFO [webscripts.connector.RemoteClient] [http-nio-8080-exec-10] Exception calling (POST) http://alfresco6:8080/alfresco/s/api/upload?Alfresco-CSRFToken=xQ9uHZeOGznAqb8VAXgUkNUK7bBuDw0Bt8fEzbdvplA%3D&alf_ticket=TICKET_eda8cea0e38691e9ba4e70903f89073e98906539
share | java.net.SocketTimeoutException: Read timed out
share | at java.base/java.net.SocketInputStream.socketRead0(Native Method)
share | at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
share | at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
share | at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
share | at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
share | at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
share | at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280)
share | at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
share | at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
share | at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
share | at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
share | at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157)
share | at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
share | at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
share | at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
share | at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
share | at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
share | at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
share | at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
share | at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
share | at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
share | at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
share | at org.springframework.extensions.webscripts.connector.RemoteClient.service(RemoteClient.java:1167)
share | at org.springframework.extensions.webscripts.connector.RemoteClient.call(RemoteClient.java:804)
share | at org.springframework.extensions.webscripts.connector.HttpConnector.call(HttpConnector.java:143)
share | at org.springframework.extensions.webscripts.connector.AuthenticatingConnector.call(AuthenticatingConnector.java:293)
share | at org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyController.handleRequestInternal(EndPointProxyController.java:328)
share | at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177)
share | at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:52)
share | at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)
share | at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
share | at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
share | at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
share | at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
share | at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
share | at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
share | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
share | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
share | at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
share | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
share | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
share | at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)
share | at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)
share | at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)
share | at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)
share | at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
share | at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
share | at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
share | at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
share | at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389)
share | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
share | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
share | at org.springframework.extensions.webscripts.servlet.SecurityHeadersFilter.doFilter(SecurityHeadersFilter.java:177)
share | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
share | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
share | at org.springframework.extensions.webscripts.servlet.CSRFFilter.doFilter(CSRFFilter.java:349)
share | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
share | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
share | at org.alfresco.web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:474)
share | at org.alfresco.web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:443)
share | at org.springframework.extensions.webscripts.servlet.BeanProxyFilter.doFilter(BeanProxyFilter.java:80)
share | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
share | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
share | at org.alfresco.web.site.servlet.MTAuthenticationFilter.doFilter(MTAuthenticationFilter.java:81)
share | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
share | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
share | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
share | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
share | at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
share | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
share | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
share | at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
share | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
share | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
share | at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
share | at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
share | at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
share | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
share | at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
share | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
share | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
share | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
share | at java.base/java.lang.Thread.run(Thread.java:834)

 

Pruebas realizadas:

Después de muchos análisis, búsqueda de información, etc. Comprobamos que realizando el cambio de imagen de alfresco en el Dockerfile por la versión inmediatamente anterior 6.1.0-ea, el error no se reproduce y funciona correctamente.

 

Para el cliente final, decrementar la versión no es una opción aceptable.

Nosotros hemos intentado realizar pruebas incrementando la versión y probar con las versiones más actuales, pero se producen cambios sustanciales en el esquema de la base de datos que implicaría realizar una remigración, por lo que es otra opción poca viable.

 

¿Cómo podríamos corregir dicho error en la versión 6.1.1?