Bug #15101
fermé
L'admin est redirigé coté utilisateur quand il navigue sur plusieurs espaces
Ajouté par David Lesimple il y a 4 jours.
Mis à jour il y a 3 jours.
Votre version de Silverpeas:
6.4
Votre base de données:
Toutes
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
- Priorité changé de Normal à Urgent
- Statut changé de New à Assigned
- 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
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)
- 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 ?
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)
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é.
- Statut changé de In progress... à Closed
Directement corrigé dans la branche 6.4.x et correction reportée sur master
Formats disponibles : Atom
PDF