Projet

Général

Profil

Actions

Bug #15101

ouvert

L'admin est redirigé coté utilisateur quand il navigue sur plusieurs espaces

Bug #15101: L'admin est redirigé coté utilisateur quand il navigue sur plusieurs espaces

Ajouté par David Lesimple il y a 3 mois. Mis à jour il y a environ 15 heures.

Statut:
Resolved
Priorité:
Urgent
Assigné à:
Catégorie:
Administration
Début:
16/12/2025
Echéance:
% réalisé:

0%

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

Description

Pré-requis:
- Etre admin ou gestionnaire d'espace.
- Avoir une arborescence importante d'espaces et de sous-espaces (3 ou 4 niveaux)

Quand on clique rapidement sur la partie gauche de navigation, à un moment une erreur JS survient et redirige l'administrateur côté utilisateurs.

Voici l'erreur :

SP - ERROR - Admin Window - technical load error silverpeas-min.645.js:1:28708
    error https://dev.serveur.com/silverpeas/util/javaScript/silverpeas-min.645.js:1
    a https://dev.serveur.com/silverpeas/util/javaScript/silverpeas-admin-window-min.645.js line 17 > srcScript:1
    e https://dev.serveur.com/silverpeas/util/javaScript/silverpeas-admin-window-min.645.js line 17 > srcScript:1
    (Asynchrone : promise callback)
    n https://dev.serveur.com/silverpeas/util/javaScript/silverpeas-admin-window-min.645.js line 17 > srcScript:1
    m https://dev.serveur.com/silverpeas/util/javaScript/silverpeas-admin-window-min.645.js line 17 > srcScript:1
    h https://dev.serveur.com/silverpeas/util/javaScript/silverpeas-admin-window-min.645.js line 17 > srcScript:1
    (Asynchrone : promise callback)
    h https://dev.serveur.com/silverpeas/util/javaScript/silverpeas-admin-window-min.645.js line 17 > srcScript:1
    loadSubSpace https://dev.serveur.com/silverpeas/util/javaScript/silverpeas-admin-window-min.645.js line 17 > srcScript:1
    jumpToSubSpace https://dev.serveur.com/silverpeas/RjobManagerPeas/jsp/Main line 2 > injectedScript:7
    loadSelectedSpace https://dev.serveur.com/silverpeas/RjobManagerPeas/jsp/Main line 2 > injectedScript:1
    It https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    Bt https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    sn https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    onSpaceSelect https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript line 3 > Function:41
    It https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    Bt https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    sn https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    onClick https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript line 3 > Function:20
    It https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    Bt https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    n https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    (Asynchrone : EventListener.handleEvent)
    vs https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    ys https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    patchProp https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    x https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    S https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    h https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    effect https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    run https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    update https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    $ https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    P https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    F https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    h https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    effect https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
    run https://dev.serveur.com/silverpeas/util/javaScript/vuejs/vue.min.645.js line 17 > srcScript:3
GET
https://dev.serveur.com/silverpeas/util/javaScript/jquery/jquery.ui.datepicker-en-min.645.js
[HTTP/1.1 404 Not Found 42ms]

GET
https://dev.serveur.com/silverpeas/util/javaScript/jquery/jquery.ui.datepicker-en-min.645.js
[HTTP/1.1 404 Not Found 74ms]


Fichiers

pbAdminVueJS.png (121 ko) pbAdminVueJS.png David Lesimple, 16/12/2025 12:18
pbAdminVueJS.png

Mis à jour par David Lesimple il y a 3 mois Actions #1

  • Priorité changé de Normal à Urgent

Mis à jour par David Lesimple il y a 3 mois Actions #2

  • Statut changé de New à Assigned

Mis à jour par Miguel Moquillon il y a 3 mois Actions #3

  • Statut changé de Assigned à Feedback

Il me faudrait un déroulé plus explicite et exacte qui permet de reproduire le bogue parce qu'actuellement, je ne reproduis pas bogue.

Mes tests ont été réalisés avec un espace doté de 7 sous-espaces dont 4 ont une arborescence de 2 à 3 sous-espaces. Et j'ai beau cliqué rapidement sur des sous-espaces ou applications, je ne reproduis pas le soucis

Mis à jour par David Lesimple il y a 3 mois Actions #4

Il y a également une erreur coté serveur :

2025-12-16 14:39:05,176 SEVERE [silverpeas.core.web.mvc.util] (default task-68) null: java.util.ConcurrentModificationException
    at java.base/java.util.TreeMap$KeySpliterator.forEachRemaining(TreeMap.java:2750)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encodeSpaces$11(NavBarJsonEncoder.java:152)
    at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec$JSONObject.putJSONArray(JSONCodec.java:252)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encodeSpaces(NavBarJsonEncoder.java:148)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encode$0(NavBarJsonEncoder.java:83)
    at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec.encodeObject(JSONCodec.java:90)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encode(NavBarJsonEncoder.java:79)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:718)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:65)
    at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.AdminComponentRequestRouter.getDestination(AdminComponentRequestRouter.java:68)
    at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.AdminComponentRequestRouter.getDestination(AdminComponentRequestRouter.java:44)
    at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.ComponentRequestRouter.computeNextDestination(ComponentRequestRouter.java:266)
    at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.ComponentRequestRouter.computeDestination(ComponentRequestRouter.java:231)
    at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.ComponentRequestRouter.doPost(ComponentRequestRouter.java:162)
    at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.ComponentRequestRouter.doGet(ComponentRequestRouter.java:171)
    at javax.servlet.api@2.0.0.Final//javax.servlet.http.HttpServlet.service(HttpServlet.java:503)
    at deployment.silverpeas.war//org.silverpeas.core.web.mvc.webcomponent.SilverpeasHttpServlet.service(SilverpeasHttpServlet.java:58)
    at deployment.silverpeas.war//org.silverpeas.core.web.mvc.webcomponent.SilverpeasAuthenticatedHttpServlet.service(SilverpeasAuthenticatedHttpServlet.java:80)
    at javax.servlet.api@2.0.0.Final//javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
    at io.undertow.websocket@2.2.19.Final//io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:173)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.components.whitepages.filters.ComponentRequestRouterFilter.doFilter(ComponentRequestRouterFilter.java:70)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.core.web.filter.MassiveWebSecurityFilter.doFilter(MassiveWebSecurityFilter.java:148)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.core.web.filter.WebCORSFilter.doFilter(WebCORSFilter.java:81)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.web.filter.InternetExplorerAntiCompatibilityFilter.doFilter(InternetExplorerAntiCompatibilityFilter.java:50)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.web.token.SessionSynchronizerTokenValidator.doFilter(SessionSynchronizerTokenValidator.java:96)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.core.web.filter.MessageFilter.doFilter(MessageFilter.java:73)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.web.filter.SilverpeasExceptionLoggingFilter.doFilter(SilverpeasExceptionLoggingFilter.java:49)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.web.filter.ResourceCacheFilter.doFilter(ResourceCacheFilter.java:55)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.web.filter.HttpServletRequestDecoration.doFilter(HttpServletRequestDecoration.java:59)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at deployment.silverpeas.war//org.silverpeas.web.filter.CharsetFilter.doFilter(CharsetFilter.java:73)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at org.wildfly.security.elytron-web.undertow-server@1.10.1.Final//org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.lambda$handleRequest$1(ElytronRunAsHandler.java:68)
    at org.wildfly.security.elytron-base@1.19.1.Final//org.wildfly.security.auth.server.FlexibleIdentityAssociation.runAsFunctionEx(FlexibleIdentityAssociation.java:103)
    at org.wildfly.security.elytron-base@1.19.1.Final//org.wildfly.security.auth.server.Scoped.runAsFunctionEx(Scoped.java:161)
    at org.wildfly.security.elytron-base@1.19.1.Final//org.wildfly.security.auth.server.Scoped.runAs(Scoped.java:73)
    at org.wildfly.security.elytron-web.undertow-server@1.10.1.Final//org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.handleRequest(ElytronRunAsHandler.java:67)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.core@2.2.19.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.core@2.2.19.Final//io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
    at io.undertow.core@2.2.19.Final//io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
    at io.undertow.core@2.2.19.Final//io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
    at org.wildfly.security.elytron-web.undertow-server-servlet@1.10.1.Final//org.wildfly.elytron.web.undertow.server.servlet.CleanUpHandler.handleRequest(CleanUpHandler.java:38)
    at io.undertow.core@2.2.19.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow@26.1.3.Final//org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.core@2.2.19.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow@26.1.3.Final//org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
    at io.undertow.core@2.2.19.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
    at org.wildfly.extension.undertow@26.1.3.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1544)
    at org.wildfly.extension.undertow@26.1.3.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1544)
    at org.wildfly.extension.undertow@26.1.3.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1544)
    at org.wildfly.extension.undertow@26.1.3.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1544)
    at org.wildfly.extension.undertow@26.1.3.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1544)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
    at io.undertow.servlet@2.2.19.Final//io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
    at io.undertow.core@2.2.19.Final//io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
    at io.undertow.core@2.2.19.Final//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
    at org.jboss.xnio@3.8.7.Final//org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
    at java.base/java.lang.Thread.run(Thread.java:829)

Mis à jour par Miguel Moquillon il y a 3 mois Actions #5

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

Bon, après investigation, Je ne vois pas autre chose qu'un bug dans l'API de Java avec les TreeSet synchronisé ... En effet, c'est une erreur d'accès concurrente au TreeSet qui est utilisé comme cache pour les sous-espaces, or ce cache est propre à la session de l'utilisateur. Comme les accès concurrents sont censés être gérés par le TreeSet synchronisé, avec plusieurs accès en lecture sur ce cache, seul l'un d'eux devrait avoir la main, les autres devant être bloqué. De plus, et quand bien même, ce devrait être d'autant plus rare que la probabilité que deux requêtes HTTP du même utilisateur soit prise en compte simultanément, chacune par un thread, est proche de zéro !

Quelle version de Java 11 est utilisée sur le serveur du client ?

Mis à jour par David Lesimple il y a 3 mois Actions #6

Miguel Moquillon a écrit (#note-5):

Quelle version de Java 11 est utilisée sur le serveur du client ?

Debian OpenJDK 64-Bit Server VM 11.0.29+6-post-Debian-1deb11u1 (PROD)
et
Debian OpenJDK 64-Bit Server VM 11.0.28+6-post-Debian-1deb11u1 (TEST)

Mis à jour par Miguel Moquillon il y a 3 mois Actions #7

C'est bon. En fait ce n'est pas un bug de Java mais de notre utilisation du SortedSet synchronisé. Bien que synchronisé, il est nécessaire de synchroniser nous même l'accès aux itérateurs et aux streams lorsque l'on parcours le TreeSet. On aurait pu utiliser le ConcurrentSkipListSet à la place mais les écritures et suppressions sont en log(n) et non en log(1) comme avec le TreeSet synchronisé.

Mis à jour par Miguel Moquillon il y a 3 mois Actions #8

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

Directement corrigé dans la branche 6.4.x et correction reportée sur master

Mis à jour par David Lesimple il y a environ 2 mois Actions #9

  • Statut changé de Closed à Re-opened

Mis à jour par David Lesimple il y a environ 2 mois Actions #10

2026-02-02 14:31:04,918 SEVERE [silverpeas.core.web.mvc.util] (default task-32) null: java.util.ConcurrentModificationException
    at java.base/java.util.TreeMap$KeySpliterator.forEachRemaining(TreeMap.java:2750)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encodeSpaces$14(NavBarJsonEncoder.java:168)
    at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec$JSONObject.putJSONArray(JSONCodec.java:251)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encodeSpaces(NavBarJsonEncoder.java:161)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encode$0(NavBarJsonEncoder.java:87)
    at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec.encodeObject(JSONCodec.java:89)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encode(NavBarJsonEncoder.java:83)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:696)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:65)

Mis à jour par Miguel Moquillon il y a environ 2 mois Actions #12

  • Statut changé de Re-opened à Closed

L'erreur survient lorsque deux administrateurs jouent simultanément sur l'arbre des espaces et instances de composants, l'un en lecture (accès à l'un des nœuds de l'arbre) et l'autre modifiant cette structure même.
Pour éviter ce soucis, l'arbre est explicitement copié avant d'être passé à l'appelant.
La correction a été directement poussée sur les branches 6.4.x et master

Mis à jour par David Lesimple il y a environ 2 mois Actions #14

  • Statut changé de Closed à Re-opened

Le problème se produit toujours, voici la trace :

2026-02-03 15:03:37,878 SEVERE [silverpeas.core.web.mvc.util] (default task-79) null: java.util.ConcurrentModificationException
    at java.base/java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1208)
    at java.base/java.util.TreeMap$KeyIterator.next(TreeMap.java:1262)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2558)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2578)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2578)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
    at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2503)
    at java.base/java.util.TreeMap.addAllForTreeSet(TreeMap.java:2462)
    at java.base/java.util.TreeSet.addAll(TreeSet.java:308)
    at java.base/java.util.TreeSet.(TreeSet.java:172)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarManager.getAvailableSubSpaces(NavBarManager.java:219)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.control.JobStartPagePeasSessionController.getSubSpaces(JobStartPagePeasSessionController.java:222)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encodeSpaces$14(NavBarJsonEncoder.java:162)
    at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec$JSONObject.putJSONArray(JSONCodec.java:251)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encodeSpaces(NavBarJsonEncoder.java:161)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encode$0(NavBarJsonEncoder.java:87)
    at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec.encodeObject(JSONCodec.java:89)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encode(NavBarJsonEncoder.java:83)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:696)
    at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:65)

Mis à jour par Miguel Moquillon il y a environ 2 mois · Edité Actions #15

  • Statut changé de Re-opened à Feedback

L'erreur indique que lors de la copie du cache des espaces il y a eu une tentative de modification de ce cache !!! Sachant que cette copie est réalisée justement pour éviter, lors de son parcours, des erreurs d'accès concurrent comme ci-dessus.
Sachant que la probabilité qu'un tel événement arrive est négligeable (accès simultané exacte), dis moi, c'est fait exprès là, non ?

Mis à jour par Miguel Moquillon il y a environ 2 mois · Edité Actions #16

Dis moi, est ce que lors des tests la personne a deux onglets ou deux navigateurs ouverts avec le même compte ?

Mis à jour par David Lesimple il y a environ 2 mois · Edité Actions #17

Miguel Moquillon a écrit (#note-16):

Dis moi, est ce que lors des tests la personne a deux onglets ou deux navigateurs ouverts avec le même compte ?

Non, avec un seul onglet et un seul navigateur (une session donc)

La pile d'erreur cette fois-ci :


2026-02-06 10:41:14,013 SEVERE [silverpeas.core.web.mvc.util] (default task-236) null: java.util.ConcurrentModificationException
        at java.base/java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1208)
        at java.base/java.util.TreeMap$KeyIterator.next(TreeMap.java:1262)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2558)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2578)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2578)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2546)
        at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2503)
        at java.base/java.util.TreeMap.addAllForTreeSet(TreeMap.java:2462)
        at java.base/java.util.TreeSet.addAll(TreeSet.java:308)
        at java.base/java.util.TreeSet.<init>(TreeSet.java:172)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarManager.getAvailableSubSpaces(NavBarManager.java:219)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.control.JobStartPagePeasSessionController.getSubSpaces(JobStartPagePeasSessionController.java:222)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encodeSpaces$14(NavBarJsonEncoder.java:162)
        at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec$JSONObject.putJSONArray(JSONCodec.java:251)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encodeSpaces(NavBarJsonEncoder.java:161)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encode$0(NavBarJsonEncoder.java:87)
        at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec.encodeObject(JSONCodec.java:89)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encode(NavBarJsonEncoder.java:83)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:696)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:65)
        at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.AdminComponentRequestRouter.getDestination(AdminComponentRequestRouter.java:68)
        at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.AdminComponentRequestRouter.getDestination(AdminComponentRequestRouter.java:44)

Mis à jour par Miguel Moquillon il y a environ un mois Actions #18

  • Statut changé de Feedback à Resolved

Après investigation et par le biais d'un test unitaire, j'ai poussé une solution possible directement sur les branches 6.4.x et master. J'ai testé celle-ci avec mon propre Silverpeas sans rencontrer le problème. Néanmoins, il faudrait que tu testes de ton côté avec l'environnement d'Akwel pour voir

Mis à jour par David Lesimple il y a 23 jours Actions #19

  • Statut changé de Resolved à Closed

Mis à jour par David Lesimple il y a un jour Actions #20

  • Statut changé de Closed à Re-opened
  • Version cible changé de Version 6.4.6 à Version 6.4.7

Le problème est toujours présent, mais uniquement en tant qu'administrateur d'espace.

Mis à jour par Miguel Moquillon il y a environ 16 heures Actions #21

  • Statut changé de Re-opened à Feedback

je n'arrive pas à reproduire le pb. Est ce que la pile d'erreur est la même que les cas précédents ?

Mis à jour par David Lesimple il y a environ 15 heures · Edité Actions #22

Miguel Moquillon a écrit (#note-21):

je n'arrive pas à reproduire le pb. Est ce que la pile d'erreur est la même que les cas précédents ?

Apparemment non, pas tout à fait (ici sur une 6.4.7-build260317) :


2026-03-23 11:26:16,734 SEVERE [silverpeas.core.web.mvc.util] (default task-16) null: java.util.ConcurrentModificationException
        at java.base/java.util.TreeMap$KeySpliterator.forEachRemaining(TreeMap.java:2750)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encodeSpaces$15(NavBarJsonEncoder.java:161)
        at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec$JSONObject.putJSONArray(JSONCodec.java:251)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encodeSpaces$16(NavBarJsonEncoder.java:157)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarManager.applyOnAvailableSubSpaces(NavBarManager.java:265)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.control.JobStartPagePeasSessionController.applyOnSubSpaces(JobStartPagePeasSessionController.java:242)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encodeSpaces(NavBarJsonEncoder.java:156)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.lambda$encode$0(NavBarJsonEncoder.java:85)
        at deployment.silverpeas.war//org.silverpeas.core.util.JSONCodec.encodeObject(JSONCodec.java:89)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.NavBarJsonEncoder.encode(NavBarJsonEncoder.java:81)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:696)
        at deployment.silverpeas.war//org.silverpeas.web.jobstartpage.servlets.JobStartPagePeasRequestRouter.getAdminDestination(JobStartPagePeasRequestRouter.java:65)
        at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.AdminComponentRequestRouter.getDestination(AdminComponentRequestRouter.java:68)
        at deployment.silverpeas.war//org.silverpeas.core.web.mvc.route.AdminComponentRequestRouter.getDestination(AdminComponentRequestRouter.java:44)

Mis à jour par Miguel Moquillon il y a environ 15 heures Actions #23

  • Statut changé de Feedback à Resolved

Une telle exception dépasse mon entendement. En effet, au regard du code, une telle exception n'est tout simplement pas possible. Ou alors il y a un truc bien particulier que je n'arrive pas à entrevoir. J'ai ici remplacé le parcours d'un flux (une Stream java) par un l'utilisation classique d'un for . J'ai directement poussé dans la branche 6.4.x. Je vais lancé un build auto. Il faudrait que tu testes alors cette version de build (une fois construite) pour voir si ça vient des Stream Java.

Actions

Formats disponibles : PDF Atom