This issue has been created
 
 
XWiki Platform / cid:jira-generated-image-avatar-e9b1ac1b-c8bc-4d5f-bd5d-92391a7858a8 XWIKI-23886 Open

"java.lang.ClassNotFoundException" error for xwiki-platform-netflux-api that causes the Realtime to fail on a cluster

 
View issue   ยท   Add comment
 

Issue created

 
cid:jira-generated-image-avatar-b1b9648a-59e5-41a1-8570-b53479695734 Ilie Andriuta created this issue on 13/Jan/26 15:36
 
Summary: "java.lang.ClassNotFoundException" error for xwiki-platform-netflux-api that causes the Realtime to fail on a cluster
Issue Type: cid:jira-generated-image-avatar-e9b1ac1b-c8bc-4d5f-bd5d-92391a7858a8 Bug
Affects Versions: 17.10.2
Assignee: Unassigned
Attachments: Tomcat.txt
Components: Realtime
Created: 13/Jan/26 15:36
Environment: Windows 11 Pro, Edge 143, using an instance of XWiki 17.10.2 on MySQL 9.3, Tomcat 11.0.15, Java 21
Priority: cid:jira-generated-image-static-major-702383ca-8a06-4404-95dc-2077ef5748f0 Major
Reporter: Ilie Andriuta
Description:

Steps to reproduce

  1. 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 = public, cluster
  1.  Create 1 other user (e.g. U1)
  2. Login on an instance with Admin
  3. Login on the other instance with the other user (e.g. U1)
  4. 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 = public, cluster.

Please find attached the logs.