The following combination of features cannot be safely configured when using pure Geode Java API:
- Replicated Region.
- Serial Gateway Sender or Serial Asynchronous Event Queue.
- Serial Gateway Sender / Serial Asynchronous Event Queue is Persistent.
- Conflation is Enabled for the Serial Gateway Sender / Serial Asynchronous Event Queue.
The problem is that, after a restart, events left-over in the persistent queue begin processing before their source Region is instantiated, causing a NullPointerExceptions while executing the conflation logic.
The Region is only required because internally we need its name, but the name itself is already stored within the actual event so it should be safe to replace gsEvent.getRegion().getFullPath() by gsEvent.getRegionToConflate() or gsEvent.getRegionPath().