RosterItemProvider is not updated in cached Roster after a provider update


We are using Openfire to evaluate a technique to find potential bugs in software that supports updates of configuration while the program is still running. One such bug we found in Openfire is found in the Roster system.

Specifically, when a Roster is created it caches an instance of the current RosterItemProvider in the field rosterItemProvider. When the provider.roster.className property is updated new Roster objects will see this new provider. However, Roster instances that were instantiated when the property had an older value will retain a reference to the old provider. It seems like this could cause bugs to occur where old Roster object see roster updates drop for some time period.

Let me know if there is any other information I can provide.