I add and remove user to shared group and wait notification in client.
After login it's nice work, but after some time (cache.username2roster.maxLifetime) openfire does stop to send this notification.
The problem in RosterManager.java
In lines (in many cases)
roster = rosterCache.get(userToUpdate.getNode());
This give roster only from cache in memory, but roster is clean after maxLifetime and does not allowed again.
I think it's shuld be:
roster = getRoster(userToUpdate.getNode());
In 4 lines in try/catch