Roster not updating after a major change

We've been running an ejabberd server for a host of Windows machines running Pandion as our company's internal IM service. Recently we reorganized the company, so we also to reorganized the groups in the server. We did this by removing every user from every roster and starting from scratch. However, since we did it, a handful of users' machines will not take the new roster (they just come up blank, since we emptied them beforehand). We've tried a number of clients (Pandion, Gaim, Psi and Coccinella) and none of them will update.

Any suggestions?

Re: Roster not updating after a major change

erronen wrote:

We've been running an ejabberd server for a host of Windows machines running Pandion as our company's internal IM service. Recently we reorganized the company, so we also to reorganized the groups in the server. We did this by removing every user from every roster and starting from scratch. However, since we did it, a handful of users' machines will not take the new roster (they just come up blank, since we emptied them beforehand). We've tried a number of clients (Pandion, Gaim, Psi and Coccinella) and none of them will update.

Do you use Shared Roster Groups?

Yeah, we use Shared Roster

Yeah, we use Shared Roster Groups. We had a few groups that were being reshuffled, a few that were being deleted altogether and some new ones to create. So we made the changes we needed to and it was all peachy, but the changes weren't being pushed out to the clients. If you were online while the changes were being made or you logged on afterwards, it would still display the old roster.

We found that by deleting every user's roster (one user at a time, I'd kill for a "remove all button :), the next time that user connects they'll get the new roster. It worked for everybody except about six random users. I've tried deleting the user from ejabberd and recreating them, but when I click "Remove User" they still show up on the active user list (even if they aren't online)... this is probably because they're still on some active user lists, I'll try removing them from those first.

Well, that was easy.

Removing them and adding them to their proper lists one more time seems to have fixed the problem.

Thanks for pointing my brain in the right direction. :) The solution was simpler than I thought.

Roster not updating properly for me either

Just to throw my hat in the ring, am running the following config:

* MS Windows XP SP2
* Erlang R10B-10
* ejabberd 1.0.0 (Windows binary)
* OpenLDAP 2.2.29 for Win (Matthias Mohr build)
* Pandion 2.5 (Windows client)

I am also experiencing oddities with regards to rosters.

Quickly regarding background, I have ejabberd configured to only allow TLS/SSL connections (no unencrypted traffic). Authentication is done via LDAP. I have been testing with about 5-6 users. My JID is the only one tagged as an admin.

All authentication/logins work just fine, never had issues there. I can login to the Web admin interface. Basic IM, as well as conference room creation/use seems to work fine.

Regarding rosters, I created one shared roster of the form

________________________________________
Shared group: groupname
Name: GroupName
Description: ...
Members:
* user1@mydomain.com
* user2@mydomain.com
...
(one per line, all users)
Displayed Groups: groupname
________________________________________

The idea is that everyone in the group sees everyone else.

Initially, this seemed to work fine. I would see all the other users sign on/off as we tested.

The one thing I noticed in Pandion was that all the users showed up as "userX@mydomain.com". So from the Pandion menu, I selected Actions | Edit My Profile... and changed my name and nickname to something more familiar looking. I assumed this would "push" my profile up to the server.

This is when problems started. Initially I was kidding around and made my nickname "Chucky". When I checked on two of the other guys' rosters, my name kept showing up as "userX@mydomain.com" If _I_ logged out, back in, no change. So I thought, "Ok, the roster doesn't get updated when a user on your roster changes his/her info, but only when you yourself sign out/in afterwards."

I then had these two log out/back in, and the first time each did, I simply disappeared from their roster! I was tagged 'offline' (even though I wasn't). I had them log out/back in again, and the 2nd time I showed up as "Chucky".

I then went back and changed my nickname to something normal like "Frank". I logged out/in, and as before, their rosters did not reflect this change. If they logged out/back in, they continued to see "Chucky". I could not get this to reflect the new nickname "Frank", no matter what.

At one point I had someone--who had not yet logged out/in since I changed my nickname--log in, and with first logout/in they did not see me (even though I remained online the whole time). The second time they saw me as "Frank." But the other clients still showed "Chucky".

So next I tried using a different client (Exodus). Exodus showed all the users online as it should, only using the long form "userX@mydomain.com". This made me think the issue might be Pandion.

However, as I continued toying around, I found at one point that, regardless of which client I used, the roster would not accurately reflect presence.

In truth, I have not done enough meticulous testing to fully ascertain where the fault lies. It is clear something is not updating properly. Either ejabberd is not pushing roster changes when one might think it would (but this may be according to the RFCs, I honestly haven't checked yet), or setting a nickname is an issue, or Pandion is not updating its roster properly, or something.

An interesting thing just happened. At this point note the following:

* user1 (me) and user3 had nicknames
* user2, user4, and user5 were just "as is"

While typing this, user5 (who had never signed on before) signed on. I received a popup notice in Pandion that user5 signed on, but when I checked the roster, they were not there (they showed as being 'offline'!). user5 then sent me a message, causing a chat window to appear.

Seems user5, upon signing on for the first time, saw just user2 and user4. Neither user1 (myself) nor user3 showed up in his roster. We were the two with nicknames.

Thus user5 MANUALLY added me (user1) to his roster, and then sent me a message. I received it, could chat with him, etc., but he continued to show as 'offline' to me. If I signed off/on, didn't make a difference. He still showed as offline. I had to click his 'offline' JID to send him a message. At this point, I could see the Pandion popup indicating the other user was typing, which to me indicates that Pandion is receiving notification of such typing from the server (which also means user5's Pandion was sending such notice). So information was flowing from him, through the server, to me. Yet he still showed as offline!!

Suddenly, after 10-15 minutes give or take, he suddenly appeared as online! Even though neither of us had done anything, BAM! There he was.

Now I don't know if this is some sort of bizarre Pandion flakiness, or some kind of ejabberd timing/cleanup/garbage collection issue or what, but that's what I saw. I have read other postings (will have to search now) of ejabberd users indicating similar experiences of "and suddenly after 15 minutes, it just started working." Which begins to make me wonder whether this isn't some kind of Erlang garbage collection routine kicking in, though I'm really shooting in the dark here as my understanding of Erlang is severely limited.

Anyway, maybe something in all this rambling will be of use in tracking this down. Just note I'm in the same boat with you, using ejabberd 1.0.0 on Windows and Pandion as our "official" client. So if you find out anything else, please post here so others can learn as well.

Roster update issues w/ ejabberd 1.0.0 for Win,Pandion client

To add to my original posting, I've run into something that is extremely consistent and reproducible. With the setup described earlier, it seems that we are experiencing the following:

1. userX changes their nickname using Actions | Edit My Profile....

2. For userA and userB, who are both online and both have userX in their roster (keep in mind this is a shared group roster), the nickname is not pushed to their rosters. This may be as intended, as I suspect a roster push in XMPP only occurs on sign in.

3. The problem is that, if userA or userB sign off and then back on, userX will disappear from the roster. The default Pandion behavior is that 'offline' users do not show up, and that's what's happening. userX is showing as 'offline' to userA and userB.

4. If userA and userB sign off and back on a second time, NOW userX will appear with their nickname.

5. If userC is offline when userX changes their nickname, it appears that userC will see userX by their nickname on userC's next login.

I still can't tell if this is an ejabberd issue, a Pandion issue, or somehow expected behaviour, though I find that hard to believe.

Syndicate content