The problem was showing up even with a simple "String" or "Integer" key.
I updated Coherence from 220.127.116.11 to 18.104.22.168 and this behavior is corrected. The erase now waits for any pending store/storeAll operation that is being executed on the CacheStore. On 22.214.171.124 you can replicate this just by:
- execute a cache put at 0s;
- execute a cache erase of the same entry at 10s;
- set write behind delay to 5s;
- cachestore store/storeall operations with sleep for 10s before storing the entries;
When finding a workaround for this problem in 126.96.36.199 we identified another possible issue, which still remains in 188.8.131.52:
- if you execute a flush operation on the RWBackingMap, it does wait for the cachestore to store all the entries in the write behind queue, BUT, if there is a ongoing store/storeAll operation when you call the flush, it does not wait for that specific operation (seems that the backingmap looses track of the ongoing operation).
We're trying to confirm this with Oracle support, waiting for feedback on the issue.