News feed unavailable after upgrade to 4.8.0

Hi,

I upgraded from 4.7.5 to 4.8.0 yesterday, which went smoothly as usual. After logging in to the admin panel, I noticed an unusual message: “The Ignite Realtime feed is currently unavailable.”:

If I switch back to 4.7.5, the newsfeed is back as usual:

Switching back again to 4.8.0, it’s gone again. I’ve never seen this after any upgrade before. Is this to be expected with 4.8.0?

Side note: any word on when a 4.8.0-compatible Pade plugin will be released? :slight_smile:

Thanks
Thomas

Hi Thomas,

Prior to Openfire 4.8.0, the “Ignite Realtime News” section on the main page of the admin console page was retrieved by the browser that was looking at that page directly. That browser would make a connection to an RSS feed on the Ignite Realtime website to look up the latest news. The direct interaction with remote web servers (such as our website) is undesirable from a security and consistency perspective

In Openfire 4.8.0, it is Openfire itself that will retrieve the RSS feed from our website. Your browser will then download it from Openfire.

If the news is no longer showing, then this most likely means that your Openfire server cannot download from our website. This will probably affect more than just the news: I would not be surprised if you’re also missing update notifications for new releases of plugins.

I hope this explains the change that you’re experiencing!

At this time, I cannot give you an update of the Pàdé project. Its lead developer, @Dele_Olajide, needs to find time to be able to work on a compatibility issue, if I understand things correctly (correct me if I’m wrong, Dele :stuck_out_tongue: ).

Unfortunately, Pàdé for Openfire 4.8 is blocked by an issue with the upgrade of Jetty from 9.x to 10.x. I am not sure when I will be free to spend time on it.

Thanks @guus You are quite correct :slight_smile:

Hi Guus,

Thanks for the detailed explanation! :+1: However, I can’t quite figure out why the Openfire server would not be able to download the RSS feed. I can retrieve the feed from the shell on the same server just fine:

[root@airframe:/opt/openfire]# wget https://discourse.igniterealtime.org/c/blogs/ignite-realtime-blogs.rss
--2024-01-15 14:55:30--  https://discourse.igniterealtime.org/c/blogs/ignite-realtime-blogs.rss
Resolving discourse.igniterealtime.org (discourse.igniterealtime.org)... 18.194.71.160
Connecting to discourse.igniterealtime.org (discourse.igniterealtime.org)|18.194.71.160|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://discourse.igniterealtime.org/c/blogs/ignite-realtime-blogs/5.rss [following]
--2024-01-15 14:55:35--  https://discourse.igniterealtime.org/c/blogs/ignite-realtime-blogs/5.rss
Reusing existing connection to discourse.igniterealtime.org:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/rss+xml]
Saving to: ‘ignite-realtime-blogs.rss’

ignite-realtime-blogs.rss                                       [ <=>                                                                                                                                      ]  79,09K  --.-KB/s    in 0,03s   

2024-01-15 14:55:35 (2,70 MB/s) - ‘ignite-realtime-blogs.rss’ saved [80988]

[root@airframe:/opt/openfire]# 

Is there anything specific I could/should be looking for in the logs, or is there any way I can test this specific part/component of Openfire? I already tried configuring a proxy server (which also happens to be running on the same machine :grin:) under Server Settings => Manage Updates => Connection Method, but that didn’t help either. It still says “unavailable”, and neither the Squid logs nor tcpdump show any traffic, as if Openfire doesn’t even try to connect. Any ideas?

Thanks for the info on the Pade plugin as well, also to @Dele_Olajide! :slight_smile:

Curious.

If you do need to use a proxy configuration, then the proxy used for the update check (as you seem to have configured) is re-used. In fact, it will always try to use that proxy if the property update.proxy.host is set to any value (try deleting that property to remove it completely).

The RSS service can be disabled by toggling the rss.enabled property to false. You can try to set and unset that property to clear a cache (RSS data by default is cached for 6 hours, but only if there was data in the first place).

A little bit of (debug) information is logged in the org.jivesoftware.admin.servlet.BlogPostServlet categery. You could try to enable debug logging, then try to force the RSS lookup again, and then look in your log files for any clues.

When the code is attempting to load the RSS feed from the website, then this should be logged on log level DEBUG:

Trying to obtain latest blog posts from IgniteRealtime.org

If that leads to an error, then this will be logged (followed by a stack trace) on log level WARN:

Unable to download blogposts from igniterealtime.org

For parsing errors, lines like these are logged to DEBUG:

Unable to parse element as RSS data:

Thanks for the pointers, I’ll try to see what I can make of it.

Just for clarifiction, I do not need/have to use the proxy in my network, but I can if I want (or indeed have to). For example, DokuWiki’s Extension Manager (yes, you guessed it, my webserver is also running on the very same machine :wink:) also refuses to work properly unless I configure it to use the proxy … but that might be some weird PHP security thing. :man_shrugging:

By “enable debug logging”, do you mean setting Server Manager => Logs => Trace Logging => Enabled, or does this do something different?

Thanks!

That’ it. There are other ways of doing it (through the configuration file of log4j), but what you describe works just as well.

If you do not need a proxy, then my advise would be to not use it. It removes one link in the chain of dependencies.

Hm … seems like it’s not a network issue after all, but a parsing issue. In the trace logs I can actually see the RSS “source code” (so downloading is not a problem after all), but it’s littered with Java backtraces complaining about unparsable RSS data.

Here’s a typical example, this is basically repeated for every single <item> in the feed:

2024.01.18 16:40:18.109 DEBUG [Jetty-QTP-AdminConsole-10033]: org.jivesoftware.admin.servlet.BlogPostServlet - Unable to parse element as RSS data: <item>
          <title>Openfire 4.7.5 Release</title>
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/"><![CDATA[guus]]></dc:creator>
          <category>Ignite Realtime Blogs</category>
          <description><![CDATA[
            <p>The Ignite Realtime Community is happy to announce the <code>4.7.5</code> release of Openfire!</p>
<p>This release primarily addresses the issue that is subject of <a href="https://github.com/igniterealtime/Openfire/security/advisories/GHSA-gw42-f939-fhvm">security advisory CVE-2023-32315</a>, but also pulls in <a href="https://downloa
d.igniterealtime.org/openfire/docs/4.7.5/changelog.html">a number of improvements and bugfixes</a></p>
<p>You can find download artifacts <a href="https://igniterealtime.org/downloads/#openfire">available here</a> with the following <code>sha256sum</code> values</p>
<pre><code class="lang-auto">f70faf11b4798fefb26a20f7d60288d275a6d568db78faf79a4194cbae72eab4  openfire-4.7.5-1.noarch.rpm
d1283d417dacb74d67334c06420679aae62d088bd3439c8135ccfc272fd5b95b  openfire_4.7.5_all.deb
60d8efb96a1891cda2deac2cda9808cf6adec259f090d3a7fb2b7ca21484d75b  openfire_4_7_5.exe
98d36c2318706c545345274234e2f5ccbf0f72f7801133effea342e2776b8bb0  openfire_4_7_5.tar.gz
e95348be890aff64a7447295ab18eebb29db4bdc346b802df0c878ebbbf1d18e  openfire_4_7_5_x64.exe
a5bb8c9b944b915bdf7ecf92cd2a689d0cf09e88bfc2df960f38000f6b788194  openfire_4_7_5.zip
</code></pre>
<p>If you have any questions, please stop by our <a href="https://discourse.igniterealtime.org/">community forum</a> or our <a href="https://www.igniterealtime.org/support/group_chat.jsp">live groupchat</a>. We are always looking for volu
nteers interested in helping out with Openfire development!</p>
<p>For other release announcements and news follow us on <a href="https://twitter.com/IgniteRealtime">Twitter</a> and <a href="https://toot.igniterealtime.org/@news">Mastodon</a>.</p>
            <p><small>1 post - 1 participant</small></p>
            <p><a href="https://discourse.igniterealtime.org/t/openfire-4-7-5-release/92868">Read full topic</a></p>
          ]]></description>
          <link>https://discourse.igniterealtime.org/t/openfire-4-7-5-release/92868</link>
          <pubDate>Tue, 23 May 2023 16:42:46 +0000</pubDate>
          <discourse:topicPinned xmlns:discourse="http://www.discourse.org/">No</discourse:topicPinned>
          <discourse:topicClosed xmlns:discourse="http://www.discourse.org/">No</discourse:topicClosed>
          <discourse:topicArchived xmlns:discourse="http://www.discourse.org/">No</discourse:topicArchived>
          <guid isPermaLink="false">discourse.igniterealtime.org-topic-92868</guid>
          <source url="https://discourse.igniterealtime.org/t/openfire-4-7-5-release/92868.rss">Openfire 4.7.5 Release</source>
        </item>
java.text.ParseException: Unparseable date: "Tue, 23 May 2023 16:42:46 +0000"
        at java.text.DateFormat.parse(DateFormat.java:399) ~[?:?]
        at org.jivesoftware.admin.servlet.BlogPostServlet.parseFirstEntries(BlogPostServlet.java:154) [xmppserver-4.8.0.jar:4.8.0]
        at org.jivesoftware.admin.servlet.BlogPostServlet.doGet(BlogPostServlet.java:112) [xmppserver-4.8.0.jar:4.8.0]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:503) [jetty-servlet-api-4.0.6.jar:?]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:590) [jetty-servlet-api-4.0.6.jar:?]
        at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1419) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:292) [xmppserver-4.8.0.jar:4.8.0]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.18.jar:10.0.18]
        at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) [sitemesh-2.4.2.jar:?]
        at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) [sitemesh-2.4.2.jar:?]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.jivesoftware.admin.ContentSecurityPolicyFilter.doFilter(ContentSecurityPolicyFilter.java:53) [xmppserver-4.8.0.jar:4.8.0]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598) [jetty-security-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.Server.handle(Server.java:563) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:558) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:379) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:146) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) [jetty-util-10.0.18.jar:10.0.18]
        at java.lang.Thread.run(Thread.java:833) [?:?]

Oh, and while I was looking through the trace logs, I found what seems to be a bug in the Openfire Log Viewer GUI. This happened when I selected “All” from the “Lines:” dropdown box (to show the whole log instead of only the last 50/100/250/500 lines):

2024.01.18 16:42:46.125 TRACE [Jetty-QTP-AdminConsole-10034]: org.jivesoftware.util.ParamUtils - An exception occurred while trying to parse parameter 'lines' value 'All' as an integer. Will return default value '50'
java.lang.NumberFormatException: For input string: "All"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) ~[?:?]
        at java.lang.Integer.parseInt(Integer.java:668) ~[?:?]
        at java.lang.Integer.parseInt(Integer.java:786) ~[?:?]
        at org.jivesoftware.util.ParamUtils.getIntParameter(ParamUtils.java:171) [xmppserver-4.8.0.jar:4.8.0]
        at org.jivesoftware.openfire.admin.logviewer_jsp._jspService(logviewer_jsp.java:223) [xmppserver-4.8.0.jar:4.8.0]
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) [apache-jsp-9.0.52.jar:9.0.52]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:590) [jetty-servlet-api-4.0.6.jar:?]
        at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1419) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665) [jetty-servlet-10.0.18.jar:10.0.18]
        at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) [sitemesh-2.4.2.jar:?]
        at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) [sitemesh-2.4.2.jar:?]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73) [xmppserver-4.8.0.jar:4.8.0]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49) [xmppserver-4.8.0.jar:4.8.0]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:174) [xmppserver-4.8.0.jar:4.8.0]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:292) [xmppserver-4.8.0.jar:4.8.0]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.jivesoftware.admin.ContentSecurityPolicyFilter.doFilter(ContentSecurityPolicyFilter.java:53) [xmppserver-4.8.0.jar:4.8.0]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598) [jetty-security-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484) [jetty-servlet-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.Server.handle(Server.java:563) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287) [jetty-server-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:558) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:379) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:146) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) [jetty-io-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) [jetty-util-10.0.18.jar:10.0.18]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) [jetty-util-10.0.18.jar:10.0.18]
        at java.lang.Thread.run(Thread.java:833) [?:?]

Unrelated to the actual topic, but I thought I’d quickly mention it nevertheless while I’m at it. :wink:

Oh, that’s a good find! I wonder why that date cannot be formatted for you. What locale are you using?

We know about the error related to the log lines. It’s an annoying little thing that hasn’t bothered me enough yet to actually fix it. :wink:

If Java uses the standard system locale (as opposed to doing its own thing), then this is what I use:

[root@airframe:~]# locale
LANG=en_US.utf8
LC_CTYPE=de_AT.utf8
LC_NUMERIC=de_AT.utf8
LC_TIME=de_AT.utf8
LC_COLLATE=C
LC_MONETARY=de_AT.utf8
LC_MESSAGES=en_US.utf8
LC_PAPER=de_AT.utf8
LC_NAME=de_AT.utf8
LC_ADDRESS=de_AT.utf8
LC_TELEPHONE=de_AT.utf8
LC_MEASUREMENT=de_AT.utf8
LC_IDENTIFICATION=de_AT.utf8
LC_ALL=

I prefer having my systems running in English, which makes it easier to google for error messages if I ever need to analyze/debug/fix something, so LANG and LC_MESSAGES is set accordingly. LC_COLLATE is set to C, because some GNU tools (grep and sort come to my mind) allegedly tend to run a lot slower when localized “properly”. All the rest is set according to where I live, which happens to be Austria. :austria: :slight_smile:

I don’t think that there’s anything special about it, or is there? :thinking: :man_shrugging:

I have a similar setup, but with Dutch locales. That should be fine. What is the language that you configured in Openfire (what is the language used in the admin console)? Nevermind, that showed in your screenshot: English.

I’ve raised a ticket for this problem, here: [OF-2775] - Ignite Realtime Jira

1 Like

And for good measure, I raised [OF-2776] - Ignite Realtime Jira for the log viewer issue.

1 Like

Thanks @guus, much appreciated! :slight_smile:

You seem to have mixed up the log snippets for the two tickets, though … OF-2775 (“RSS News Feed appears empty”) contains the log with the “All” error, and OF-2776 (“Selecting ‘all’ in logviewer causes an error to be logged”) contains the one with the date parse error. :wink:

Oh, I had hoped you wouldn’t notice that before I fixed it. :slight_smile:

I’m still no closer to reproducing this problem though. I wonder what makes your server so different.

Can you share your java -version and OS?
I’m equally failing to reproduce this. I think locale is unrelated, given that the code makes an explicit Date Format with which to parse.

Sure, no problem:

[root@airframe:~]# java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)

[root@airframe:~]# lsb_release -a
LSB Version:	n/a
Distributor ID:	Slackware
Description:	Slackware release 15.0 (Slack-15.0)
Release:	15.0
Codename:	Slack-15.0

If there’s anything else you need, just let me know.

@danc Well, looks light it actually might be locale related, after all. The following sequence of commands …

[root@airframe:~]# /etc/init.d/openfired stop
Shutting down openfire
Stopped.
[root@airframe:~]# unset LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION
[root@airframe:~]# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
[root@airframe:~]# /etc/init.d/openfired start
Starting openfire
[root@airframe:~]# 

… leads to the following screenshot:


:face_with_raised_eyebrow:
Now it’s only a matter of finding out which of the locale releated environment variables causes the problem. My gut feeling says that if i change LC_COLLATE=C to LC_COLLATE=POSIX then things will be fine again … well, let’s find out. I’ll be back™ :grin:

2 Likes