Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
I was doing backward compatibility testing and found a 1.0 client was getting a null memberID in a cache listener
[info 2017/05/18 16:27:38.957 PDT <Cache Client Updater Thread on trout(bridgegemfire5_trout_2254:2254)<ec><v2>:1030 port 21051> tid=0x2f] Invoked util.SilenceListener for key Object_7399: afterDestroy in edge1, pid 2267, vmID 5, operation DESTROY whereIWasRegistered: 2267 event.getKey(): Object_7399 event.getOldValue(): <util.QueryObject util.QueryObject with id 12423 (contains 6 levels, aPrimitiveLong=6409636308677575978)> event.getNewValue(): null event.getOperation().isLoad(): false event.getOperation().isLocalLoad(): false event.getOperation().isNetLoad(): false event.getOperation().isNetSearch(): false event.isConcurrencyConflict(): false event.getDistributedMember(): null event.getCallbackArgument(): null event.getRegion(): /testRegion event.getOperation().isDistributed(): true event.getOperation().isExpiration(): false event.isOriginRemote(): true
This was in an old test suite whose testing infrastructure isn't in the Geode repo. I'm writing a unit test to reproduce the problem.
If you look at EventID.java you can see that it catches IOExceptions in deserializing the memberID of the event and returns null without logging the problem.
try { result = InternalDistributedMember.readEssentialData(dis); } catch (IOException e) { // nothing can be done about this } catch (ClassNotFoundException e) { // ditto }