I’m having trouble with a new xwiki with some old(er) pages in it. We’re running it on a docker swarm.
long story:
We’re running xwiki offline (no way to get to the internet), I’ve updated an old xwiki (13.10) to 14.9.0 which looked like it went really well! But after some time I was getting high CPU values and xwiki just got stuck (pending on getting a page, any page) and will stay that way until eternity. I’ve tried letting it run it’s course but waiting on a page for 45+ mins isn’t really normal.
Eventually I opted to just start a new xwiki and importing our pages, hoping that any erros was due to incompatibilities. No luck there! So now I’m stuck with xwiki 14.10.1 which randomly fails, sometimes every hour, sometimes once in a week.
I’ve changed the logback.xml to debug almost everything hoping to catch what’s going on but I can’t seem to find anything too far out of the ordinary (untrained eyes). The only thing I can see is that it eventually produces a lot of OutOfMemoryErrors, so I’ve changed the XmX a few times but it doesn’t change anything.
The symptoms:
When Xwiki is running (after initialization) the problem can occur, what we see happening everytime just before xwiki gets unresponsive is a big rise of CPU usage (500% cpu when I’m looking at top in the container). In that short span of CPU spiking Xwiki starts to get slower until it’s unresposive and stays that way. When looking in the logs I see stacktraces like this:
2022-12-27 09:57:10,014 [solr/indexer job group daemon thread - org.xwiki.search.solr.internal.job.IndexerJob@7667a612([solr, indexer])] DEBUG o.x.x.i.SafeTreeMarshaller - Failed to serialize item [sun.nio.ch.FileChannelImpl@3146e4c3]
com.thoughtworks.xstream.converters.ConversionException: No converter available
---- Debugging information ----
message : No converter available
type : jdk.internal.ref.CleanerImpl$PhantomCleanableRef
converter : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
message[1] : Unable to make field jdk.internal.ref.PhantomCleanable jdk.internal.ref.PhantomCleanable.prev accessible: module java.base does not "opens jdk.internal.ref" to unnamed module @6e80de85
-------------------------------
at com.thoughtworks.xstream.core.DefaultConverterLookup.lookupConverterForType(DefaultConverterLookup.java:88)
at com.thoughtworks.xstream.XStream$1.lookupConverterForType(XStream.java:485)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:48)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:87)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeBareItem(AbstractCollectionConverter.java:94)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeItem(AbstractCollectionConverter.java:66)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeCompleteItem(AbstractCollectionConverter.java:81)
at org.xwiki.xstream.internal.SafeArrayConverter.writeCompleteItem(SafeArrayConverter.java:81)
at org.xwiki.xstream.internal.SafeMessageConverter.marshal(SafeMessageConverter.java:86)
at org.xwiki.xstream.internal.SafeLogEventConverter.marshal(SafeLogEventConverter.java:74)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
at org.xwiki.xstream.internal.SafeTreeMarshaller.convert(SafeTreeMarshaller.java:72)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43)
at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:82)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:37)
at com.thoughtworks.xstream.XStream.marshal(XStream.java:1278)
at com.thoughtworks.xstream.XStream.marshal(XStream.java:1267)
at com.thoughtworks.xstream.XStream.toXML(XStream.java:1240)
at org.xwiki.logging.internal.tail.XStreamFileLoggerTail.write(XStreamFileLoggerTail.java:82)
at org.xwiki.logging.internal.tail.AbstractTextFileLoggerTail.write(AbstractTextFileLoggerTail.java:66)
at org.xwiki.logging.internal.tail.AbstractFileLoggerTail.writeLog(AbstractFileLoggerTail.java:278)
at org.xwiki.logging.internal.tail.AbstractFileLoggerTail.log(AbstractFileLoggerTail.java:261)
at org.xwiki.logging.event.LoggerListener.onEvent(LoggerListener.java:82)
at org.xwiki.observation.WrappedThreadEventListener.onEventInternal(WrappedThreadEventListener.java:77)
at org.xwiki.observation.AbstractThreadEventListener.onEvent(AbstractThreadEventListener.java:57)
at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:320)
at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:285)
at org.xwiki.logging.logback.internal.LogbackEventGenerator.append(LogbackEventGenerator.java:148)
at org.xwiki.logging.logback.internal.LogbackEventGenerator.append(LogbackEventGenerator.java:64)
at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:398)
at ch.qos.logback.classic.Logger.debug(Logger.java:486)
at org.apache.solr.search.stats.LocalStatsCache.doGet(LocalStatsCache.java:40)
at org.apache.solr.search.stats.StatsCache.get(StatsCache.java:221)
at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:358)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:369)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:216)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:2637)
at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:227)
at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:214)
at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:1003)
at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:1018)
at org.xwiki.search.solr.internal.AbstractSolrInstance.query(AbstractSolrInstance.java:124)
at org.xwiki.search.solr.internal.job.SolrDocumentIterator.getResults(SolrDocumentIterator.java:121)
at org.xwiki.search.solr.internal.job.SolrDocumentIterator.size(SolrDocumentIterator.java:106)
at org.xwiki.search.solr.internal.job.DiffDocumentIterator.size(DiffDocumentIterator.java:153)
at org.xwiki.search.solr.internal.job.IndexerJob.updateSolrIndex(IndexerJob.java:121)
at org.xwiki.search.solr.internal.job.IndexerJob.runInternal(IndexerJob.java:103)
at org.xwiki.job.AbstractJob.runInContext(AbstractJob.java:246)
at org.xwiki.job.AbstractJob.run(AbstractJob.java:223)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
And keeps throwing this exception…
Does anyone have an idea where to look specifically?
Thanks!