Relatime Collaborative Editor 500 (Internal Server Error) - netflux

I am trying to get the Realtime Collaborative Editor working.
I see the message “Connecting to the collaborative session. Please wait…”
But in the network tab I get a status 500 for wss://mywiki/websocket/xwiki/netflux
I see the following error in the log. Not sure if this is related, but I will try to fix that.
xWiki Version: 13.10.2

2022-01-02 11:02:41,397 [http-nio-8080-exec-78 - http://wiki/webjars/wiki%3Axwiki/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0] ERROR ebJarsResourceReferenceHandler - Failed to read resource [font-awesome/4.7.0/fonts/fontawesome-webfont.woff2] 
org.xwiki.resource.ResourceReferenceHandlerException: Failed to read resource [font-awesome/4.7.0/fonts/fontawesome-webfont.woff2]
	at org.xwiki.resource.servlet.AbstractServletResourceReferenceHandler.serveResource(AbstractServletResourceReferenceHandler.java:184)
	at org.xwiki.resource.servlet.AbstractServletResourceReferenceHandler.handle(AbstractServletResourceReferenceHandler.java:86)
	at org.xwiki.resource.internal.DefaultResourceReferenceHandlerChain.handleNext(DefaultResourceReferenceHandlerChain.java:79)
	at org.xwiki.resource.internal.AbstractResourceReferenceHandlerManager.handle(AbstractResourceReferenceHandlerManager.java:82)
	at org.xwiki.resource.servlet.ResourceReferenceHandlerServlet.handleResourceReference(ResourceReferenceHandlerServlet.java:159)
	at org.xwiki.resource.servlet.ResourceReferenceHandlerServlet.service(ResourceReferenceHandlerServlet.java:87)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:711)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:353)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:313)
	at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:145)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:353)
	at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:783)
	at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:688)
	at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:388)
	at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:366)
	at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96)
	at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1310)
	at org.apache.commons.io.IOUtils.copy(IOUtils.java:978)
	at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1282)
	at org.apache.commons.io.IOUtils.copy(IOUtils.java:953)
	at org.xwiki.resource.servlet.AbstractServletResourceReferenceHandler.serveResource(AbstractServletResourceReferenceHandler.java:181)
	... 35 common frames omitted
Caused by: java.io.IOException: Broken pipe
	at java.base/sun.nio.ch.FileDispatcherImpl.write0(Native Method)
	at java.base/sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
	at java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:113)
	at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:79)
	at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:50)
	at java.base/sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:462)
	at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:135)
	at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1373)
	at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:766)
	at org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking(SocketWrapperBase.java:586)
	at org.apache.tomcat.util.net.SocketWrapperBase.write(SocketWrapperBase.java:530)
	at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.doWrite(Http11OutputBuffer.java:547)
	at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:112)
	at org.apache.coyote.http11.Http11OutputBuffer.doWrite(Http11OutputBuffer.java:194)
	at org.apache.coyote.Response.doWrite(Response.java:615)
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:340)
	... 45 common frames omitted

Interesting. After deinstalling some of the dependencies and reinstalling them I still have the same 500 response, but no error in the logs. Only two warnings:


2022-01-02 11:50:41,980 [http-nio-8080-exec-30 - http://wiki/bin/jsx/XWiki/InplaceEditing?language=en&docVersion=5.1] WARN  c.x.x.w.JsxAction              - Failed to send SX content: [java.io.IOException: Broken pipe] 
2022-01-02 11:50:42,053 [http-nio-8080-exec-14 - http://wiki/bin/jsx/AnnotationCode/Script?language=en&docVersion=3.1] WARN  c.x.x.w.JsxAction              - Failed to send SX content: [java.io.IOException: Broken pipe] 

UPDATE: No, after a restart of the container, the original StackTraces are back

I have checked and the URL in the StackTrace is actually correct. I can download the file fontawesome-webfont.woff2 in a browser from that URL. Interesting enough that the URL is in http schema although I am using https that is kind of weird, still should work so there must be some other issue with the code.

I tried the URL of the websocket that gets an InternalServerError (500) in the browser with Firebase and there seems to be no problem. I can open the connection an get a message:

[
    0,
    "",
    "IDENT",
    "bfba9209338bdd35376bd88047bd7b51"
]

But then I see an authorization error (of course)

2022-01-02 16:04:38,196 [http-nio-8080-exec-50 - http://wiki.ebanking.iss.cpbs.at//websocket/xwiki/netflux] ERROR x.x.u.i.x.XWikiAuthServiceImpl - Failed to authenticate 
java.lang.NullPointerException: null
	at org.securityfilter.filter.SecurityRequestWrapper.getUserPrincipal(SecurityRequestWrapper.java:208)
	at com.xpn.xwiki.user.impl.xwiki.MyFormAuthenticator.processLogin(MyFormAuthenticator.java:147)
	at com.xpn.xwiki.user.impl.xwiki.XWikiAuthServiceImpl.checkAuth(XWikiAuthServiceImpl.java:239)

But it means that the websocket should work, no?

The broken pipe exception is not related to the WebSocket connection. It simply means that the browser closed the connection (because you navigated to a different page) while the server was trying to write the response. See for instance https://jira.xwiki.org/browse/XWIKI-17926 .

I’ll check the NullPointerException during authentication and get back to you.

1 Like