02-04-2020 06:38 AM
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:
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?
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.