It appears that various implementations of Cache have different behavior, regarding null keys (DefaultCache allows them, while the Hazelcast-backed cache does not).
Behavior should be consistent (and documented).
This fix introduced instability, as discussed in the original pull request: https://github.com/igniterealtime/Openfire/pull/609
I've created a PR to revert the original change here: https://github.com/igniterealtime/Openfire/pull/625
As far as I'm concerned, a change similar to this is still desirable. We should revisit the proposed solution.
Perhaps emitting a warning log message would be preferable to throwing an exception. Specifically it would be helpful to know which caches are using this currently undocumented "feature" and for what purpose.
In addition, the modified behavior should be configurable via system property (e.g. allowNullCacheKeys = true|false).
Setting this to a blocker as it is something that needs straightened out/resolved prior to release.