Details
-
Bug
-
Resolution: Solved By
-
Critical
-
17.10.2
-
None
-
Windows 11 Pro, Edge 143, using an instance of XWiki 17.10.2 on MySQL 9.3, Tomcat 11.0.15, Java 21
-
Unknown
-
N/A
-
N/A
-
Description
Steps to reproduce
- Create a simple cluster with 2 instances sharing the same database (I went to xwiki.properties and set:
- observation.remote.enabled = true
- observation.remote.channels = udp
- Create 1 other user (e.g. U1)
- Login on an instance with Admin
- Login on the other instance with the other user (e.g. U1)
- Edit the same page
Expected results
The page is edited using the Realtime mode feature.
Actual results
There is a lock warning on the edited page. The realtime feature doesn't work. In XWiki console there are the following errors:
java.lang.ClassNotFoundException: org.xwiki.netflux.internal.event.NetfluxCommandChannelEvent
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1225)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1056)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:547)
at java.base/java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:745)
at org.jgroups.util.ObjectInputStreamWithClassloader.resolveClass(ObjectInputStreamWithClassloader.java:37)
at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1912)
at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1785)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2101)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1620)
at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2480)
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2327)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2133)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1620)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:487)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:445)
at org.jgroups.util.Util.objectFromByteBuffer(Util.java:693)
at org.jgroups.util.Util.objectFromBuffer(Util.java:678)
at org.jgroups.util.ObjectWrapperSerializable.readFrom(ObjectWrapperSerializable.java:74)
at org.jgroups.util.Util.readSizeStreamable(Util.java:2048)
at org.jgroups.ObjectMessage.readPayload(ObjectMessage.java:140)
at org.jgroups.BaseMessage.readFrom(BaseMessage.java:328)
at org.jgroups.util.Util.readSizeStreamable(Util.java:2048)
at org.jgroups.ObjectMessage.readPayload(ObjectMessage.java:140)
at org.jgroups.BaseMessage.readFrom(BaseMessage.java:328)
at org.jgroups.util.Util.readMessageBatch(Util.java:1588)
at org.jgroups.protocols.TP.handleMessageBatch(TP.java:1227)
at org.jgroups.protocols.TP.receive(TP.java:1200)
at org.jgroups.protocols.UDP$PacketReceiver.run(UDP.java:808)
at java.base/java.lang.VirtualThread.run(VirtualThread.java:456)
2026-01-13 15:06:25,215 [mcast-receiver-6,event,ILIE-ASUS-ROG-23364] ERROR o.j.p.UDP - JGRP000030: ILIE-ASUS-ROG-23364: failed handling incoming message
java.lang.ClassNotFoundException: org.xwiki.netflux.internal.event.EntityChannelCreatedEvent
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1225)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1056)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:547)
at java.base/java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:745)
at org.jgroups.util.ObjectInputStreamWithClassloader.resolveClass(ObjectInputStreamWithClassloader.java:37)
at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1912)
at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1785)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2101)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1620)
at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2480)
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2327)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2133)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1620)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:487)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:445)
at org.jgroups.util.Util.objectFromByteBuffer(Util.java:693)
at org.jgroups.util.Util.objectFromBuffer(Util.java:678)
at org.jgroups.util.ObjectWrapperSerializable.readFrom(ObjectWrapperSerializable.java:74)
at org.jgroups.util.Util.readSizeStreamable(Util.java:2048)
at org.jgroups.ObjectMessage.readPayload(ObjectMessage.java:140)
at org.jgroups.BaseMessage.readFrom(BaseMessage.java:328)
at org.jgroups.util.Util.readSizeStreamable(Util.java:2048)
at org.jgroups.ObjectMessage.readPayload(ObjectMessage.java:140)
at org.jgroups.BaseMessage.readFrom(BaseMessage.java:328)
at org.jgroups.util.Util.readMessageBatch(Util.java:1588)
at org.jgroups.protocols.TP.handleMessageBatch(TP.java:1227)
at org.jgroups.protocols.TP.receive(TP.java:1200)
at org.jgroups.protocols.UDP$PacketReceiver.run(UDP.java:808)
at java.base/java.lang.VirtualThread.run(VirtualThread.java:456)
The errors are not occurring anymore if the instance is removed from the cluster, by reverting the settings in xwiki.properties:
- observation.remote.enabled = false or commenting it
- and commenting back observation.remote.channels = udp.
Please find attached the logs.
Attachments
Issue Links
- duplicates
-
XWIKI-23894 Wrong classloader used to unserialize received remote observation messages
-
- Closed
-
- relates to
-
XCOMMONS-3451 Realtime editing doesn't support clustering
-
- Closed
-