Openfire errors and Spark client-side history loss

To anyone who can provide insight or a solution,

We have been running Openfire for about 4 years. A constant problem that we have had are the errors that are generated whenever we initially launch Openfire. Despite all of the errors that are reported in the Openfire window, it has always functioned pretty flawlessly. However, one issue that we have been seeing for many years now is that the individual conversation history kept on each workstation for Spark does not contain the full History. I am not sure if this is an issue related to the errors that we see in the Openfire window or something else, but I have tried a few things to resolve the issue including updating Openfire to version 3.8.2, updating all of the client workstations to Spark version 2.6.3, and opening up ports that Openfire uses on our Firewall. At this point I am not sure if I am dealing with one or two issues, but I would like the histories on each Workstation to show all of the chat history and for the errors in the Openfire window to get resolved.

When I say that Spark does not contain the full history, what I mean is this: Let’s say I have been talking to user ‘Nick’ for the past year off and on. Let’s also say that the last time I had a conversation with Nick was yesterday and the day before. If I open a new chat window with Nick right now, I can see the last 4-5 messages that we exchanged (the brief history), but once I want to look further back in the history for yesterday (by clicking on the ‘View conversation history’ icon) the most recent messages that I can view are from March 21st, 2011. What happened to the rest of the conversation I had with him the day before, and the days before that, etc…? If I look at just about any other user in Spark and do the same thing I get (on average) the same last viewable date of March ‘X’ 2011. However, with newer users (we added a new IT person on April 11th, 2013), everything is there. Just for giggles I checked another more recently added user (July 25th, 2012) and his history is all there too. I don’t understand why users that were created at ‘X’ date(s) stopped recording history around March of 2001 and while newer users around ‘X’ date(s) record to this day in full. Also, when looking in the message Archives in Openfire I can view the complete message history for users that are missing the conversations between the brief history and conversation history (this includes all of those users history that ended in March of 2011), so I know they everything is still being held on the server, but just not on each users workstation. The problem with this is that users need to be able to view their full conversation history on their own and can’t.

Now for the 2nd part. I’ll copy and paste the errors that are reported in the Openfire window that occur when I start the service (see below). If anyone has an idea of what is causing these, if they are related to my history issue, or how to fix them then any information would be greatly appreciated.

Openfire Log

Openfire 3.8.2 [Jul 11, 2013 4:03:37 PM]

Admin console listening at https://nccexch.ncc.local:9091

Starting Client Control Plugin

log4j:ERROR Could not instantiate class [org.jivesoftware.openfire.gateway.util.Log4JToOpenfireAppender].

  1. java.lang.ClassNotFoundException: org.jivesoftware.openfire.gateway.util.Log4JToOpenfireAppender
    at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at org.apache.log4j.helpers.Loader.loadClass(Loader.java:178)

at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter .java:319)

at org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java: 120)

at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:6 29)

at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:6 12)

at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurato r.java:509)

at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:415 )

at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:349)

at org.jivesoftware.openfire.gateway.GatewayPlugin.setLoggerProperty(GatewayPlugin .java:251)

at org.jivesoftware.openfire.gateway.GatewayPlugin.(GatewayPlugin.java:58)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

at java.lang.reflect.Constructor.newInstance(Unknown Source)

at java.lang.Class.newInstance0(Unknown Source)

at java.lang.Class.newInstance(Unknown Source)

at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java :420)

at org.jivesoftware.openfire.container.PluginManager.access$300(PluginManager.java :80)

at org.jivesoftware.openfire.container.PluginManager$PluginMonitor.run(PluginManag er.java:1073)

at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)

at java.util.concurrent.FutureTask.runAndReset(Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101 (Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodi c(Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknow n Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

log4j:ERROR Could not instantiate appender named “openfire”.

log4j:WARN No appenders could be found for logger (org.jivesoftware.util.log.util.CommonsLogFactory).

log4j:WARN Please initialize the log4j system properly.

Error selecting conversations

  1. java.sql.SQLException: The ntext data type cannot be selected as DISTINCT because it is not comparable.
    at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)

at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816)

at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254)

at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631)

at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)

at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatem ent.java:777)

at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)

at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)

at $java.sql.Wrapper$$EnhancerByProxool$$aac7bc68.executeQuery()

at com.reucon.openfire.plugin.archive.impl.JdbcPersistenceManager.getActiveConvers ations(JdbcPersistenceManager.java:342)

at com.reucon.openfire.plugin.archive.impl.ArchiveManagerImpl.(ArchiveManage rImpl.java:35)

at org.jivesoftware.openfire.plugin.MonitoringPlugin.initializePlugin(MonitoringPl ugin.java:154)

at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java :483)

at org.jivesoftware.openfire.container.PluginManager.access$300(PluginManager.java :80)

at org.jivesoftware.openfire.container.PluginManager$PluginMonitor.run(PluginManag er.java:1073)

at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)

at java.util.concurrent.FutureTask.runAndReset(Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101 (Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodi c(Unknown SourceS

t

a) at jvariatngM.ountiitlo.rcionngc uPrlruegnitn. S

c

heduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Thanks in advance to anyone who has any insight!

Jeremy

This is a known Spark history displaying issue (SPARK-1407). The 5000 messages limit was introduced to speed up history loading, only the patcher mixed something and it shows first 5000 messages instead of the last ones. All history is saved, you can find it in xml files in your users Spark profile. The patch for better history handling is in the works, but moving slowly.

Thanks. Hopefully it is worked on soon so that users can easily access it through the GUI rather than navigating to their transcripts/user folder and view in XML.

What about all of the errors in the Openfire window that I get? I am guessing those are not related to the history, so do you know what is going on and/or how I can resolve those?

Thanks for your post!

Don’t know what they mean. First one seems related to Kaken Gateway wich is not supported anymore, so maybe that’s why it throws errors (not very compatibole with newer Openfire). Second one is about Monitoring plugin, but i don’t know what is wrong.