Projet

Général

Profil

Actions

Bug #11449

fermé

Création d'une actualité: données instables si un problème d'upload de l'image survient

Ajouté par David Lesimple il y a environ 4 ans. Mis à jour il y a environ 2 ans.

Statut:
Closed
Priorité:
High
Assigné à:
Début:
26/03/2020
Echéance:
% réalisé:

100%

Temps estimé:
Navigateur:
Tous
Votre version de Silverpeas:
6.1-x
Système d'exploitation:
Votre base de données:
Toutes
Livraison en TEST:
Livraison en PROD:

Description

Si pour une raison quelconque, l'upload de la vignette ou de l'image dans le contenu se passe mal,
l'actualité est quand même créee en base de données, mais sans son équivalent en publication.

Cela provoque une erreur sur la page d'accueil qui utilise cette application.

Il serait souhaitable de blinder l'opération dans sa totalité.

Mis à jour par David Lesimple il y a environ 4 ans

  • Description mis à jour (diff)

Mis à jour par Yohann Chastagnier il y a environ 4 ans

  • Statut changé de New à Assigned
  • Assigné à mis à Yohann Chastagnier
  • Version cible mis à Version 6.1

Mis à jour par Yohann Chastagnier il y a environ 4 ans

  • Statut changé de Assigned à In progress...

Mis à jour par Yohann Chastagnier il y a environ 4 ans

  • Statut changé de In progress... à Feedback

Je n'arrive pas à reproduire le problème tel qu'il est décrit.
Et j'ai par conséquent beaucoup de mal à apporter de la robustesse à ce niveau.

Les erreurs qui ont été remontées dans les différentes notes du REDMINE lié ne correspondent pas à l'erreur réelle.
Elles sont une conséquence d'un mauvais comportement de la popup d'erreur qui relance sans cesse la requête qui a engendré l'erreur mais avec des données tronquées. De part ce comportement nous avons alors ici un problème de récursion pour lequel je vais essayer d'apporter une correction.

Autrement selon mon analyse, les erreurs suivantes sont celles initiales :

2020-03-25 16:03:58,214 SEVERE [silverpeas.core.contribution.publication.dao] (default task-672) ERROR: null value in column "pubname" violates not-null constraint
  Detail: Failing row contains (55222, 0, null, null, 2020/03/25, 0000/00/00, 9999/99/99, 79, 0, null, null, null, Draft, 2020/03/25, quickinfo2149, 79, null, null, 00:00, 23:59, null, null, -1, null, null, null).: org.postgresql.util.PSQLException: ERROR: null value in column "pubname" violates not-null constraint
  Detail: Failing row contains (55222, 0, null, null, 2020/03/25, 0000/00/00, 9999/99/99, 79, 0, null, null, null, Draft, 2020/03/25, quickinfo2149, 79, null, null, 00:00, 23:59, null, null, -1, null, null, null).
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2477)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2190)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:300)
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428)
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354)
    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:169)
    at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:136)
    at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:537)
    at org.silverpeas.core.contribution.publication.dao.PublicationDAO.insertRow(PublicationDAO.java:332)
    at org.silverpeas.core.contribution.publication.service.DefaultPublicationService.createPublication(DefaultPublicationService.java:176)
    at org.silverpeas.core.tagcloud.service.TagCloudPublicationService.createPublication(TagCloudPublicationService.java:75)
    at org.silverpeas.core.tagcloud.service.TagCloudPublicationService$Proxy$_$$_WeldSubclass.createPublication$$super(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51)
    at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
    at com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:174)
    at com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:53)
    at com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:88)
    at com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:47)
    at sun.reflect.GeneratedMethodAccessor72.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
    at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
    at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
    at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
    at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
    at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
    at org.silverpeas.core.tagcloud.service.TagCloudPublicationService$Proxy$_$$_WeldSubclass.createPublication(Unknown Source)
    at org.silverpeas.components.quickinfo.model.DefaultQuickInfoService.create(DefaultQuickInfoService.java:174)
    at org.silverpeas.components.quickinfo.control.QuickInfoSessionController.create(QuickInfoSessionController.java:179)
    at org.silverpeas.components.quickinfo.servlets.QuickInfoRequestRouter.saveQuickInfo(QuickInfoRequestRouter.java:217)
    at org.silverpeas.components.quickinfo.servlets.QuickInfoRequestRouter.getDestination(QuickInfoRequestRouter.java:102)
    at org.silverpeas.components.quickinfo.servlets.QuickInfoRequestRouter.getDestination(QuickInfoRequestRouter.java:49)
    at org.silverpeas.core.web.mvc.route.ComponentRequestRouter.computeNextDestination(ComponentRequestRouter.java:257)
    at org.silverpeas.core.web.mvc.route.ComponentRequestRouter.computeDestination(ComponentRequestRouter.java:222)
    at org.silverpeas.core.web.mvc.route.ComponentRequestRouter.doPost(ComponentRequestRouter.java:154)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:523)
    at org.silverpeas.core.web.mvc.webcomponent.SilverpeasHttpServlet.service(SilverpeasHttpServlet.java:58)
    at org.silverpeas.core.web.mvc.webcomponent.SilverpeasAuthenticatedHttpServlet.service(SilverpeasAuthenticatedHttpServlet.java:79)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
    at io.opentracing.contrib.jaxrs2.server.SpanFinishingFilter.doFilter(SpanFinishingFilter.java:52)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.components.whitepages.filters.ComponentRequestRouterFilter.doFilter(ComponentRequestRouterFilter.java:71)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.bridge.MobilFilter.doFilter(MobilFilter.java:82)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.core.web.filter.MassiveWebSecurityFilter.doFilter(MassiveWebSecurityFilter.java:131)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.core.web.filter.WebCORSFilter.doFilter(WebCORSFilter.java:81)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.filter.InternetExplorerAntiCompatibilityFilter.doFilter(InternetExplorerAntiCompatibilityFilter.java:50)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.token.SessionSynchronizerTokenValidator.doFilter(SessionSynchronizerTokenValidator.java:104)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.core.web.filter.MessageFilter.doFilter(MessageFilter.java:73)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.filter.SilverpeasExceptionLoggingFilter.doFilter(SilverpeasExceptionLoggingFilter.java:49)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.filter.ResourceCacheFilter.doFilter(ResourceCacheFilter.java:55)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.filter.HttpServletRequestDecoration.doFilter(HttpServletRequestDecoration.java:59)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
    at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
    at java.lang.Thread.run(Thread.java:748)

2020-03-25 16:03:58,237 SEVERE [silverpeas.core.process.annotation] (default task-672) Error in intercepted method: moveAllDocuments: java.lang.IllegalArgumentException: Cannot create QValue from null value.
    at org.apache.jackrabbit.spi.commons.value.AbstractQValueFactory.create(AbstractQValueFactory.java:78)
    at org.apache.jackrabbit.spi.commons.value.ValueFactoryQImpl.createValue(ValueFactoryQImpl.java:94)
    at org.silverpeas.core.contribution.attachment.repository.DocumentRepository.selectDocumentsByForeignId(DocumentRepository.java:789)
    at org.silverpeas.core.contribution.attachment.repository.DocumentRepository.listAllDocumentsByForeignId(DocumentRepository.java:639)
    at org.silverpeas.core.contribution.attachment.SimpleDocumentService.listAllDocumentsByForeignKey(SimpleDocumentService.java:370)
    at org.silverpeas.core.contribution.attachment.SimpleDocumentService$Proxy$_$$_WeldSubclass.listAllDocumentsByForeignKey(Unknown Source)
    at org.silverpeas.core.contribution.attachment.SimpleDocumentService.moveAllDocuments(SimpleDocumentService.java:931)
    at org.silverpeas.core.contribution.attachment.SimpleDocumentService$Proxy$_$$_WeldSubclass.moveAllDocuments$$super(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51)
    at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
    at org.silverpeas.core.process.annotation.SimulationActionProcessAnnotationInterceptor.proceed(SimulationActionProcessAnnotationInterceptor.java:194)
    at org.silverpeas.core.process.annotation.SimulationActionProcessAnnotationInterceptor.perform(SimulationActionProcessAnnotationInterceptor.java:145)
    at org.silverpeas.core.process.annotation.SimulationActionProcessAnnotationInterceptor.intercept(SimulationActionProcessAnnotationInterceptor.java:75)
    at sun.reflect.GeneratedMethodAccessor1016.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
    at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
    at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
    at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
    at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
    at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
    at org.silverpeas.core.contribution.attachment.SimpleDocumentService$Proxy$_$$_WeldSubclass.moveAllDocuments(Unknown Source)
    at org.silverpeas.components.quickinfo.model.DefaultQuickInfoService.create(DefaultQuickInfoService.java:186)
    at org.silverpeas.components.quickinfo.control.QuickInfoSessionController.create(QuickInfoSessionController.java:179)
    at org.silverpeas.components.quickinfo.servlets.QuickInfoRequestRouter.saveQuickInfo(QuickInfoRequestRouter.java:217)
    at org.silverpeas.components.quickinfo.servlets.QuickInfoRequestRouter.getDestination(QuickInfoRequestRouter.java:102)
    at org.silverpeas.components.quickinfo.servlets.QuickInfoRequestRouter.getDestination(QuickInfoRequestRouter.java:49)
    at org.silverpeas.core.web.mvc.route.ComponentRequestRouter.computeNextDestination(ComponentRequestRouter.java:257)
    at org.silverpeas.core.web.mvc.route.ComponentRequestRouter.computeDestination(ComponentRequestRouter.java:222)
    at org.silverpeas.core.web.mvc.route.ComponentRequestRouter.doPost(ComponentRequestRouter.java:154)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:523)
    at org.silverpeas.core.web.mvc.webcomponent.SilverpeasHttpServlet.service(SilverpeasHttpServlet.java:58)
    at org.silverpeas.core.web.mvc.webcomponent.SilverpeasAuthenticatedHttpServlet.service(SilverpeasAuthenticatedHttpServlet.java:79)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
    at io.opentracing.contrib.jaxrs2.server.SpanFinishingFilter.doFilter(SpanFinishingFilter.java:52)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.components.whitepages.filters.ComponentRequestRouterFilter.doFilter(ComponentRequestRouterFilter.java:71)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.bridge.MobilFilter.doFilter(MobilFilter.java:82)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.core.web.filter.MassiveWebSecurityFilter.doFilter(MassiveWebSecurityFilter.java:131)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.core.web.filter.WebCORSFilter.doFilter(WebCORSFilter.java:81)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.filter.InternetExplorerAntiCompatibilityFilter.doFilter(InternetExplorerAntiCompatibilityFilter.java:50)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.token.SessionSynchronizerTokenValidator.doFilter(SessionSynchronizerTokenValidator.java:104)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.core.web.filter.MessageFilter.doFilter(MessageFilter.java:73)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.filter.SilverpeasExceptionLoggingFilter.doFilter(SilverpeasExceptionLoggingFilter.java:49)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.filter.ResourceCacheFilter.doFilter(ResourceCacheFilter.java:55)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.silverpeas.web.filter.HttpServletRequestDecoration.doFilter(HttpServletRequestDecoration.java:59)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
    at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
    at java.lang.Thread.run(Thread.java:748)

Dans l'extrait ci-dessus, nous avons 2 erreurs qui s'enchaînent pour le même thread (donc par le même utilisateur) :
  • 2020-03-25 16:03:58,214 SEVERE [silverpeas.core.contribution.publication.dao] (default task-672) ERROR: null value in column "pubname" violates not-null constraint
  • 2020-03-25 16:03:58,237 SEVERE [silverpeas.core.process.annotation] (default task-672) Error in intercepted method: moveAllDocuments: java.lang.IllegalArgumentException: Cannot create QValue from null value.

Ces 2 erreurs sont générées depuis la même méthode DefaultQuickInfoService.create, la première depuis l'appel getPublicationService().createPublication(publication) et la seconde depuis l'appel AttachmentServiceProvider.getAttachmentService().moveAllDocuments(volatileAttachmentSourcePK, savedNews.getPublication().getPK().toResourceReference()).
Entre ces 2 appels, le bloc suivant est exécuté :

    News savedNews = performInOne(() -> {
      news.setId(null);
      news.setPublicationId(pubPK.getId());
      news.createdBy(publication.getCreatorId());
      return newsRepository.save(news);
    });

Ce bloc correspond à l'enregistrement des éléments généraux de la news dans la table sc_quickinfo_news alors que DefaultQuickInfoService.create correspond à l'enregistrement des métadonnées (titre, description par exemple) dans la table des publications.

Ce que montre l'enchaînement des erreurs dans les logs :
  1. l'enregistrement des métadonnées dans les publications est demandé, mais comme il manque des données (sûrement à cause des problématiques VPN) une erreur SQL est générée. Cette erreur générée est prise en charge pour être inscrite dans le fichier de log sans empêcher le traitement de continuer son exécution. IMPORTANT, même si une erreur survient, un identifiant de publication a bien été enregistré et renseigné dans les objets manipulés pour l'actualité
  2. du coup, l'enregistrement de la news est effectué (newsRepository.save(news)) avec l'id de la publication qui au final n'a pas été persistée. Les données sont néanmoins enregistrées sans erreur dans la table sb_quickinfo_news
  3. un traitement de mouvement des fichiers joints est effectué (car ils étaient liés avant l'opération d'enregistrement de la news à une ressource volatile) pour les lier à la nouvelle publication créée. Ici, une erreur technique survient surement parce que la publication à laquelle ils devraient être liés n'existe en réalité pas. L'erreur qui survient est inscrites dans les logs, mais contrairement au point 1, cette dernière empêche le déroulement de la suite du traitement (l'envoi des notifications par exemple)
  4. une erreur dans une popup est affichée à l'utilisateur et cette dernière a un comportement bizarre à cause de la récursion que j'ai indiqué en début de cette note

L'état des données est alors le suivant : une news est enregistrée dans la table sb_quickinfo_news et cette dernière est liée à une publication qui n'existe pas. Cette publication qui n'existe pas pour la news engendre le NullPointerException détecté dans les traces sur l'affichage de la page d'accueil (ou l'affichage de la page d'accueil de l'instance de l'application Actualité).

Je me demande quelles actions exactes ont été réalisées pour faire en sorte que l'erreur ne survienne plus ? Selon moi, il faudrait supprimer une entrée dans la table sb_quickinfo_news et pas dans la table des publications.

Cela étant dit, mon plus gros problème est que je n'arrive pas à reproduire l'enchaînement des erreurs qui ont été inscrites dans le fichier de log du client dans mon environnement de développement.
En simulant le fait qu'aucune information n'est renseignée pour le titre (pour obtenir l'erreur ERROR: null value in column "pubname" violates not-null constraint) lors du point 1, le traitement s'arrête en indiquant dans le fichier l'erreur 2020-04-10 15:19:43,474 SEVERE [silverpeas.silvertrace.util] (default task-80) util.MSG_EXCEPTION_NOT_EMBEDED. : org.silverpeas.core.contribution.publication.model.PublicationRuntimeException: org.silverpeas.core.contribution.publication.model.PublicationRuntimeException: org.postgresql.util.PSQLException: ERREUR: la transaction est annulée, les commandes sont ignorées jusqu'à la fin du bloc
de la transaction

Nous avons la une différence de comportement assez importante . Dans mon environnement, l'erreur due à la contrainte d'intégrité génère une erreur qui est certes gérées (catchée et seulement inscrites dans les logs pour être plus clair pour les techniciens) mais qui marque la transaction courante avec la base de données comme non valide, ce qui empêche finalement la suite du traitement de se dérouler. Alors que chez le client, la transaction ne semble pas être marquée comme non valide, ce qui laisse alors le traitement se dérouler et les points 2, 3 et 4 s'enchaînent comme indiqué plus haut.

Serait-il possible d'avoir plus d'éléments concernant l'erreur lorsqu'elle est détectée :
  • la date et l'heure précises à laquelle l'erreur est survenue pour l'utilisateur
  • les logs qui correspondent à ce moment
  • un aperçu des dernières données enregistrées dans la table sb_quickinfo_news, avant intervention sur les données
  • un aperçu des dernières données enregistrées dans la table sb_publication_publi, avant intervention sur les données

Aussi quelle est la version de la base de données ?

Mis à jour par David Lesimple il y a environ 4 ans

Yohann Chastagnier a écrit (#note-5):

Je me demande quelles actions exactes ont été réalisées pour faire en sorte que l'erreur ne survienne plus ?

Pour que l'erreur disparaisse, j'ai du supprimer l'actu directement dans la table sb_quickinfo_news.

Selon moi, il faudrait supprimer une entrée dans la table sb_quickinfo_news et pas dans la table des publications.

C'est ça.

Serait-il possible d'avoir plus d'éléments concernant l'erreur lorsqu'elle est détectée :
  • la date et l'heure précises à laquelle l'erreur est survenue pour l'utilisateur
  • les logs qui correspondent à ce moment
  • un aperçu des dernières données enregistrées dans la table sb_quickinfo_news, avant intervention sur les données
  • un aperçu des dernières données enregistrées dans la table sb_publication_publi, avant intervention sur les données

Aussi quelle est la version de la base de données ?

on peut faire reproduire le pb sur l'intranet de test, par un des utilisateurs qui arrivent à la reproduire systématiquement.

Mis à jour par David Lesimple il y a presque 4 ans

Yohann Chastagnier a écrit (#note-5):

Serait-il possible d'avoir plus d'éléments concernant l'erreur lorsqu'elle est détectée :
  • la date et l'heure précises à laquelle l'erreur est survenue pour l'utilisateur
  • les logs qui correspondent à ce moment

Tu trouveras dans le ticket client d'origine les logs.
https://tracker.silverpeas.org/issues/11447

Mis à jour par Nicolas Eysseric il y a presque 4 ans

  • Version cible Version 6.1 supprimé

Mis à jour par Yohann Chastagnier il y a environ 2 ans

  • Statut changé de Feedback à Closed
  • Version cible mis à Version 6.3
  • % réalisé changé de 0 à 100

Des modifications ont été apportées au service QuickInfo pour améliorer l'isolation des transactions.

Commit : https://github.com/Silverpeas/Silverpeas-Components/commit/bf6eae001acfea9371ff9f16f9da7d983f9233dc

Actions

Formats disponibles : Atom PDF