Uploaded image for project: 'XWiki Platform'
  1. XWiki Platform
  2. XWIKI-23886

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

    XMLWordPrintable

Details

    • Bug
    • Resolution: Solved By
    • Critical
    • 18.0.0-rc-1, 17.10.3
    • 17.10.2
    • Realtime
    • 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

      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 = udp
      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 = udp.

      Please find attached the logs.

      Attachments

        Issue Links

          Activity

            People

              tmortagne Thomas Mortagne
              iandriuta Ilie Andriuta
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: