Openfire uses various caches. Typically, some value is looked up from the database (say, a Group) when it's not already in a cache, and is stored in the cache. The next time that that group is used, it is retrieved from the cache.
This works well, but only for data that exists. In the above example, a query for a non-existent Group will cause a database lookup each time (as the Group is not cached).
Openfire should cache the negative ("group does not exist"), to prevent unneeded look-ups.