UnsupportedOperationException From Key-based MapListener

(Doc ID 2323538.1)

Last updated on NOVEMBER 15, 2017

Applies to:

Oracle Coherence - Version 12.2.1.0.0 and later
Information in this document applies to any platform.

Symptoms

On : 12.2.1.1.0 version, Oracle Coherence

UnsupportedOperationException from key-based MapListener

We have recently changed a filter-based MapListener to a key-based listener (functionally they are identical, the change was driven by performance considerations). Since then, we frequently see the following events.

CacheEvent: CacheEvent{RemoteNamedCache$BinaryCache updated: key=Binary(length=25, value=0x15807D0000584B10..., new value=Binary(length=1350, value=0x1205BF1415B8...)}
2017-02-13 10:50:50,630 +ERROR Logger@1468303011 12.2.1.1.0 Coherence - ExtendProxyClientService:TcpInitiator:EventDispatcher The following exception was caught by the event dispatcher:
2017-02-13 10:50:50,693 +ERROR Logger@1468303011 12.2.1.1.0 Coherence - ExtendProxyClientService:TcpInitiator:EventDispatcher

java.lang.UnsupportedOperationException: PofExtractor must be used with POF-encoded Binary entries; the Map Entry is not a BinaryEntry

  at com.tangosol.util.extractor.PofExtractor.extractInternal(PofExtractor.java:179)
  at com.tangosol.util.extractor.PofExtractor.extractFromEntry(PofExtractor.java:146)
[...]
The exception seems to be called when the MapEvent happens, not when the Listener is added to the cache. Events do not arrive at the MapListener
These errors happen frequently but are not deterministically reproducible and so far, I have not been able to find any observable criteria that will set off this error. Immediately after the listener is set up in the cache, a get request is made to the cache, using exactly the same key object as the one that was used for setting up the MapListener and this get is processed fine and returns a map entry, as expected.
It may be useful to add that the key that is being listened to is essentially a GUID and the listener is set up in Java but the entries will be written to the grid from a C++ application. However, the application is fairly mature and so far, we have not seen any issues with asymmetric serialization of this field with Java and C++ based libraries
Can you advise me on the cause and how to fix it ?

ERROR
-----------------------
java.lang.UnsupportedOperationException: PofExtractor must be used with POF-encoded Binary entries; the Map Entry is not a BinaryEntry




STEPS
-----------------------
The issue can be reproduced at will with the following steps:

NA

BUSINESS IMPACT
-----------------------
The issue has the following business impact:

Needs to be fixed prior to next release, ie in the next few weeks.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms