Jive Messenger 2.3.1 Presence Problems

I have updated my jive server from 2.2 to 2.3.1

Now I notice that my clients (psi, spark and exodus) are not getting updated about user presence. If the last time, I saw the user idle, it becomes idle all the time and if it is online, it shows online even though the user goes offline. I checked the user status in the jive server. Here is the logs.

Btw, I also have plugin not showing up problems. So I am not sure which error trigger which error log.

Thanks,

Wmhtet

Error


at java.lang.String.contains(String.java:1934)

at org.jivesoftware.messenger.component.InternalComponentManager.getComponent(Inte rnalComponentManager.java:221)

at org.jivesoftware.messenger.component.InternalComponentManager.getComponent(Inte rnalComponentManager.java:242)

at org.jivesoftware.messenger.XMPPServer.matchesComponent(XMPPServer.java:191)

at org.jivesoftware.messenger.group.DefaultGroupProvider.getMembers(DefaultGroupPr ovider.java:436)

at org.jivesoftware.messenger.group.DefaultGroupProvider.getGroup(DefaultGroupProv ider.java:118)

at org.jivesoftware.messenger.group.GroupManager.getGroup(GroupManager.java:107)

at org.jivesoftware.messenger.group.DefaultGroupProvider.getGroups(DefaultGroupPro vider.java:265)

at org.jivesoftware.messenger.group.GroupManager.getGroups(GroupManager.java:169)

at org.jivesoftware.messenger.roster.RosterManager.getSharedGroups(RosterManager.j ava:151)

at org.jivesoftware.messenger.roster.Roster.(Roster.java:85)

at org.jivesoftware.messenger.roster.RosterManager.getRoster(RosterManager.java:73 )

at org.jivesoftware.messenger.user.User.getRoster(User.java:243)

at org.jivesoftware.messenger.handler.IQRosterHandler.manageRoster(IQRosterHandler .java:173)

at org.jivesoftware.messenger.handler.IQRosterHandler.handleIQ(IQRosterHandler.jav a:103)

at org.jivesoftware.messenger.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.messenger.IQRouter.handle(IQRouter.java:242)

at org.jivesoftware.messenger.IQRouter.route(IQRouter.java:78)

at org.jivesoftware.messenger.PacketRouter.route(PacketRouter.java:65)

at org.jivesoftware.messenger.net.SocketReader.processIQ(SocketReader.java:321)

at org.jivesoftware.messenger.net.ClientSocketReader.processIQ(ClientSocketReader. java:51)

at org.jivesoftware.messenger.net.SocketReader.readStream(SocketReader.java:251)

at org.jivesoftware.messenger.net.SocketReader.run(SocketReader.java:115)

at java.lang.Thread.run(Thread.java:595)

2005.12.05 11:01:11 org.jivesoftware.messenger.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:8 6)

java.lang.UnsupportedOperationException: VCard provider is read-only.

at org.jivesoftware.messenger.vcard.VCardManager.setVCard(VCardManager.java:120)

at org.jivesoftware.messenger.handler.IQvCardHandler.handleIQ(IQvCardHandler.java: 83)

at org.jivesoftware.messenger.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.messenger.IQRouter.handle(IQRouter.java:242)

at org.jivesoftware.messenger.IQRouter.route(IQRouter.java:78)

at org.jivesoftware.messenger.PacketRouter.route(PacketRouter.java:65)

at org.jivesoftware.messenger.net.SocketReader.processIQ(SocketReader.java:321)

at org.jivesoftware.messenger.net.ClientSocketReader.processIQ(ClientSocketReader. java:51)

at org.jivesoftware.messenger.net.SocketReader.readStream(SocketReader.java:251)

at org.jivesoftware.messenger.net.SocketReader.run(SocketReader.java:115)

at java.lang.Thread.run(Thread.java:595)

2005.12.05 11:41:18 org.jivesoftware.messenger.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:8 6)

java.lang.UnsupportedOperationException: VCard provider is read-only.

at org.jivesoftware.messenger.vcard.VCardManager.setVCard(VCardManager.java:120)

at org.jivesoftware.messenger.handler.IQvCardHandler.handleIQ(IQvCardHandler.java: 83)

at org.jivesoftware.messenger.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.messenger.IQRouter.handle(IQRouter.java:242)

at org.jivesoftware.messenger.IQRouter.route(IQRouter.java:78)

at org.jivesoftware.messenger.PacketRouter.route(PacketRouter.java:65)

at org.jivesoftware.messenger.net.SocketReader.processIQ(SocketReader.java:321)

at org.jivesoftware.messenger.net.ClientSocketReader.processIQ(ClientSocketReader. java:51)

at org.jivesoftware.messenger.net.SocketReader.readStream(SocketReader.java:251)

at org.jivesoftware.messenger.net.SocketReader.run(SocketReader.java:115)

at java.lang.Thread.run(Thread.java:595)

Warning


2005.12.03 14:41:53 Stream error detected. Session: org.jivesoftware.messenger.ClientSession@c360a5 status: 3 address: wmhtet@jive.mysite.com/Exodus id: 19e16c89 presence:

org.dom4j.DocumentException: Cannot have text content outside of the root document

at org.dom4j.io.XPPPacketReader.parseDocument(XPPPacketReader.java:365)

at org.jivesoftware.messenger.net.SocketReader.readStream(SocketReader.java:168)

at org.jivesoftware.messenger.net.SocketReader.run(SocketReader.java:115)

at java.lang.Thread.run(Thread.java:595)

2005.12.05 11:42:55 Invalid presence type

java.lang.IllegalArgumentException: No enum const class org.xmpp.packet.Presence$Type.invisible

at java.lang.Enum.valueOf(Enum.java:192)

at org.xmpp.packet.Presence$Type.valueOf(Presence.java:318)

at org.xmpp.packet.Presence.getType(Presence.java:103)

at org.jivesoftware.messenger.net.SocketReader.readStream(SocketReader.java:211)

at org.jivesoftware.messenger.net.SocketReader.run(SocketReader.java:115)

at java.lang.Thread.run(Thread.java:595)

2005.12.05 11:42:55 Invalid presence type

java.lang.IllegalArgumentException: No enum const class org.xmpp.packet.Presence$Type.invisible

at java.lang.Enum.valueOf(Enum.java:192)

at org.xmpp.packet.Presence$Type.valueOf(Presence.java:318)

at org.xmpp.packet.Presence.getType(Presence.java:103)

at org.jivesoftware.messenger.net.SocketReader.readStream(SocketReader.java:211)

at org.jivesoftware.messenger.net.SocketReader.run(SocketReader.java:115)

at java.lang.Thread.run(Thread.java:595)

Info


2005.12.03 13:03:06 Jive Messenger 2.3.1

2005.12.03 13:04:35 Server halted

2005.12.03 13:05:19 Multi User Chat domain: jconference.jive.mysite.com

2005.12.03 13:05:19 Started server (unencrypted) socket on port: 5269

2005.12.03 13:05:19 Started plain (unencrypted) socket on port: 5222

2005.12.03 13:05:24 Started SSL (encrypted) socket on port: 5223

2005.12.03 13:05:25 Jive Messenger 2.3.1

2005.12.03 13:59:54 Jive Messenger stopped

2005.12.03 13:59:54 Server halted

2005.12.03 14:00:06 Multi User Chat domain: jconference.jive.mysite.com

2005.12.03 14:00:07 Started server (unencrypted) socket on port: 5269

2005.12.03 14:00:07 Started plain (unencrypted) socket on port: 5222

2005.12.03 14:00:13 Started SSL (encrypted) socket on port: 5223

2005.12.03 14:00:13 Jive Messenger 2.3.1

2005.12.03 14:10:09 Jive Messenger stopped

2005.12.03 14:10:09 Server halted

2005.12.03 14:10:24 Multi User Chat domain: jconference.jive.mysite.com

2005.12.03 14:10:24 Started server (unencrypted) socket on port: 5269

2005.12.03 14:10:24 Started plain (unencrypted) socket on port: 5222

2005.12.03 14:10:30 Started SSL (encrypted) socket on port: 5223

2005.12.03 14:10:32 Jive Messenger 2.3.1

2005.12.03 15:16:35 Jive Messenger stopped

2005.12.03 15:16:35 Server halted

2005.12.03 15:17:05 Multi User Chat domain: jconference.jive.mysite.com

2005.12.03 15:17:05 Started server (unencrypted) socket on port: 5269

2005.12.03 15:17:05 Started plain (unencrypted) socket on port: 5222

2005.12.03 15:17:10 Started SSL (encrypted) socket on port: 5223

2005.12.03 15:17:10 Jive Messenger 2.3.1

I am seeing similar behavior with JM 2.3.0 - perhaps not all roster items are being sent on connect sometimes and presence information is not sent properly. I think that it’‘s likely the only problem is the presence, and users who sign on after I’‘ve logged on don’'t have their presence initially.

I should mention, what I see is this: users’’ presence shows up correctly in the JM admin console. The presence is never (not reliably) relayed to end users.

Breif description of my setup: TLS required on port 5222, SSL available on port 5223. No S2S connections or components. Plugins installed: Broadcast, Presence Service, Registration, Search, User Import/Export. I’'m using MySQL for data storage.

Clients consisting of Adium, Gaim, Trillian, Kopete, all seeming to have the same problem to an extent.

I’'ll try to dig through the logs a bit more…

I think that it might even have further problem because the user seen online from Jive server admin might not really be online also.

My JM is with same behaviour. In my roster only 4 users are on-line, but in server admin, I see 9…

I am using LDAP with AD and shared groups.

I was also having this problem. I went to new and better hardware and I see much less issues. I still see an occasional issue where someone is seen offline but they are actually online but it seems to be a client specific issue with that user. I am only testing about 15 users right now but need to have this issue addressed before I send it out to my 900 users. I did notice an decrease in this issue when I rebuilt the server on the new hardware and did NOT install the presence plugin. I’‘m not sure if it’'s related but I figured I should mention it and maybe the group of us seeing these issues can test it out and maybe get this resolved.

Thanks.

PM.

Recently, I’‘ve seen my brother offline too, even though he was online. We did a little bit of troubleshooting, first seeing if him changing his status from online to anything else would trigger an update in my roster. I watched the XML as he did so, and I never received any presence update in my client. Then I tried logging off, and logging back on, and his online presence was seen again without any problems. I didn’'t look into the s2s stream.

Brother: Psi on jabbered1

Me: Psi on JM 2.3.0

I too am having many users complain about this. We’‘re using version 2.3.0 running on a Win2k server using MSSQL for the messenger database. Everyone is using shared, team-based rosters. Most of our users are using Pandion, so I don’‘t know if there’'s any relation there.

There’'s nothing out of the ordinary in the Error log, but I see several entries in the Warn log similar to those below…

2005.12.08 06:36:17 Stream error detected. Session: org.jivesoftware.messenger.ClientSession@11bd50e status: 1 address: tsg.mckesson.com/d9b22b24 id: d9b22b24 presence:

[/i]

Kevin

Hey guys,

Too many issues from different people. From the description it seems that not all issues are the same. I will need the following information in order to pinpoint the problem.

. Info of the log files (error, debug, warn, etc.)

. Are you using shared groups? Which is your configuration? Did you have this problem after modifying a shared group?

. Post the iq:roster packet that you are getting from the server and the sent and received presences too

If this thread is going to become super-size-me then we would need to split it based on each type of problem.

Thanks,

– Gato

A1: Too long ago, and didn’'t bother saving parts of logs

A2.1: No shared groups.

A2.2: Essentially default config + search + user export + embedded database + Py*-t transports + proxy65 on Mandriva 2006.0 x86.

A2.3: I’'ve never touched the shared groups config.

A3: Didn’'t really go into this either. Maybe next time.

Gato, I’'m working on clearing the logs and reproducing the errors.

I am not using shared groups even though I have 2, fairly default config, embedded DB (i’‘ve tried both but am currently running local), default exodus client but I’'ve also tried spark and trillian.

I’'ll post soon with the logs.

Thanks!

PM.

I think I figured out my own problem… Half of the entries in the jiveRoster table had sub = 0. This was only true for me, however… I know for sure that the entries with sub = 0 were not sending presence information when they logged in… This is correct behavior, of course. It seems that entries that had sub = 3 aren’‘t all sending presence information, though. Everyone other than me had sub = 3 for all their entries. I used the import plugin with an XML that set sub = 3 for all entries. Under what circumstances would this change? I haven’'t removed anyone from my roster or otherwise changed subscription.

On a side note, it looks like there are a number of entries in the jiveRoster table with no @domain following the username. I have seen a number of packets from clients sent to a username with no domain. I looked at the old jabberd2 database and I see some invalid entries there, too… Even though I have S2S disabled, Jive is allowing me to add invalid JIDs to my contact list such as "user@other-server.org" or “conference.my-server.org”. Is this correct behavior? Would it be best to store local contacts without the domain? Sorry for the slightly off-topic stuff… I’'m just thinking out loud.

Well, after setting ALL of my contacts to sub = 3 in the database and verifying that my contacts have my JID set as sub = 3, I still get no presence information from people. Not when they log on, not when they change status. I’'ve reconnected a few times, but not restarted JM. Would this info be cached anywhere?

Hey,

Yep, roster information is cached in memory. Try restarting the server and let is know how it goes. If the problem still persists, post the iq roster packet that the server is sending to the clients.

Thanks,

– Gato

2.4.2 is the answer