Messages Not Being Delivered To Users

Hello,

We are running Openfire 4.6.1 and Spark 2.9.4. When users type a message to another user, the end user gets the notification that the other person is typing a message, but when the sender sends the message, nothing shows up on the other end.

This doesn’t appear to be happening to everyone, just a few users here and there.

The environment is Cloud Based running on CentOS 8.

Everything had been running fine it seemed until updating Openfire 4.6.0 to 4.6.1. At least no one had said anything to me.

In the server control panel, I can look at the archive and find the conversation in question, and it shows the entire conversation.

I’m going to check the firewall and see if there was an update that started blocking something, but there shouldn’t have. I have also enabled Debugging on the server to see if anything pops up in there.

Other than that, I am at a loss. Anyone have any ideas where to start?

Curious. Are you using any plugins? Does this affect one-on-one message, messages in a group chat, or both? Have affected people logged in with more than one device at the same time? Does the message show up in the archive that is local to their client (maybe it’s delivered, but not displayed for some reason)?

I have the Monitoring Service plugin installed, but other than that, just the defaults. I just checked the local logs on a couple of affected devices and the messages are not there. It’s just odd that the receiving end is getting the notification that a message is being typed, and then nothing ever shows up, but the server logs show the messages.

I do sign in from multiple devices, but I created a separate account for each one as I had problems using the same username and password to sign in on multiple devices in the past, so I just created individual accounts. The account for my mobile works great using the Yaxim client, and my account on my laptop at home seems to work just fine. It’s my machine at the office and a few others that seem to be having this issue.

Just noticed something else. When messaging from my phone to my office computer, as long as I don’t view the new incoming message, my office computer receives every message. Once I bring that window to the front, incoming messages stop being delivered. When I close that windows, new messages are delivered again as long as the new popup is not brought to the front. I’m thinking this is a Spark issue instead of Openfire. I’m going to try with another client(Pidgin) and see if that helps.

Installed Pidgin. Not missing any messages anymore. Does the installer for Spark make any registry entries or anything? I’d rather use Spark(better interface), so if I could completely remove every trace of it and reinstall, maybe it would start working correctly again.

I know it stores things in the users AppData\Roaming\Spark folder and %PROGRAMFILES(x86)%\Spark folder, but does it place anything else in the registry or another folder?

I’m kind of baffled by this behaviour. I can’t think of anything that could cause this. I would love to be able to reproduce this.

I do not think that Spark puts anything relevant (if anything at all) in Windows’ registry.

It’s been working perfectly for years. About 4 months ago we moved the server to the Cloud, and still had been working great. I’m wondering if an update from Windows might have corrupted something, who knows. I will try cleaning out everything I can find for Spark and reinstalling it to see if that corrects the problem. Right now, I at least know a work around for the other users having this problem. I might just push out a Pidgin install to every workstation just so that it’s there.

If anything else crosses your mind, feel free to add. Anything…

1 Like

You can enable Debugger in Spark (in Advanced menu on login screen). Run Spark with it, then watch the incoming Raw data. if you see messages there, but not in the chat window, then this is related to other similar issues that were fixed in previous Spark versions, when offline messages or private messages in group chat were not being shown (but received according to debugger). I see another similar report Spark 2.9.4 : Refresh bug in a Room screen

I am guessing Openfire 4.6.1 changed something and now Spark is failing to parse messages.

Of course, you can still try clean reinstall and using a fresh Spark profile (rename C:\Users\User\AppData\Roaming\Spark to Spark_old and start with fresh profile).

If this is a bug in Spark, this will be problematic as we are in the middle of big changes in current code and can’t release new version quickly…

Can you disable the monitoring plug in and see you’re able to reproduce the issue?

I will try these suggestions this afternoon and see if they help with the problem.

I am sorry for the delayed response. I was out with the Covid. All of the plugins except the ones that come enabled when Openfire and Spark are installed are disabled. We are still having the issue. However, I did enable Debugging in Spark, and the messages are being received, just not displayed to the user. They show up under All Packets and Raw Data.

You said this is happening only to a few users. We need to figure out what is different about them to try to reproduce this issue to be able to fix it.

Yes. At the time, only a few people reported the problem. It appears to be everyone though. Most just weren’t noticing that they weren’t receiving their messages. Once I brought it up to everyone, everyone seems to be having the same issue.
Again, some of this news came in while I was sick, so I haven’t confirmed it yet. I have enabled the monitoring plugin again so I can capture some messages and check with individual users to see if they received every message that the server received. Unless the messages are logged in another location that I can get the messages, the Monitoring plugin is the only way I know of to check this.

Today I looked in the Program Files (x86)\Spark\logs\error.log file and saw this:

Feb 24, 2021 5:17:30 PM org.jivesoftware.spark.util.log.Log error
SEVERE: 
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher
	at com.sun.crypto.provider.CipherCore.prepareInputBuffer(CipherCore.java:1005)
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:848)
	at com.sun.crypto.provider.DESedeCipher.engineDoFinal(DESedeCipher.java:294)
	at javax.crypto.Cipher.doFinal(Cipher.java:2164)
	at org.jivesoftware.spark.util.Encryptor.decryptOrThrow(Encryptor.java:74)
	at org.jivesoftware.spark.util.Encryptor.decrypt(Encryptor.java:62)
	at org.jivesoftware.sparkimpl.settings.local.LocalPreferences.lambda$findPropertyNamesForStoredPasswords$2(LocalPreferences.java:222)
	at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
	at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
	at java.util.Iterator.forEachRemaining(Unknown Source)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
	at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
	at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.util.stream.ReferencePipeline.collect(Unknown Source)
	at org.jivesoftware.sparkimpl.settings.local.LocalPreferences.findPropertyNamesForStoredPasswords(LocalPreferences.java:238)
	at org.jivesoftware.sparkimpl.settings.local.LocalPreferences.hasStoredPasswords(LocalPreferences.java:192)
	at org.jivesoftware.spark.ui.login.SecurityLoginSettingsPanel.<init>(SecurityLoginSettingsPanel.java:83)
	at org.jivesoftware.spark.ui.login.LoginSettingDialog.<init>(LoginSettingDialog.java:59)
	at org.jivesoftware.LoginDialog$LoginPanel.actionPerformed(LoginDialog.java:748)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at com.jtattoo.plaf.BaseButtonListener.mouseReleased(BaseButtonListener.java:65)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


Any clue what this means? Could this have anything to do with the messages not being delivered?

Also, back to the possibility of a Spark bug. When the Chat window is closed, the next message a person sends will be received and shown in the new chat window. If that window is left open, it seems that all messages are received but only some are shown. In the debug window, all messages are showing as received, just some are not showing in the chat window.

Just an update to my original post. After watching the logs in Openfire and Spark for several days now, I have concluded that this is a problem with Spark itself and not Openfire. All messages are logged in Openfire and showing in the Monitoring Plugin. Also, on the end machines, all messages are being listed in the debugger as received, just not showing in the IM/Chat interface. Some messages seem to get through, but not all.
Our server is 4.6.2 and the current Spark version on all but my machine is 2.9.4. On my machine, I have reverted to 2.9.3 and the issue seems to have disappeared. Tonight I am going to push out 2.9.3 to the rest of the machine and see if this resolves the issue for the rest of the users. I’ll update later once I see the results.

Is there anyone that can change the tag for this post from Openfire to Spark?

Thanks

I have moved it to Spark Support section.

In 2.9.4 i can only see

  • [SPARK-1160] - Replace deprecated methods
  • [SPARK-1469] - Code Cleanup
    As might have something to do with this. But this will require a good Java developer with Spark code knowledge to figure out. Which we don’t have now.
1 Like

I have been using Spark 2.9.4 for over 4 months on 250 users. I have not observed such a problem.

Update. Reverted everyone to to the previous version of Spark and the problem is gone. Like I said messages were being delivered to the target, but not showing in the chat screen. Still seems random, but moving everyone back to the last version seems to have fixed the issue. Wish I knew about programming to help. I still have 5 VM’s running the current for testing… I wanna figure it out as well, sadly have 0 programming experience. Someone tell me what logs to enable or watch. This bug needs to be found and squashed.