geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <>
Subject [jira] [Commented] (GEODE-2954) Old client gets null memberID in cache listener
Date Thu, 25 May 2017 14:46:04 GMT


ASF subversion and git services commented on GEODE-2954:

Commit e79d27d7e258d2a5f0d8a3155cc1911825a90493 in geode's branch refs/heads/develop from
[;h=e79d27d ]

GEODE-2954 Old client gets null memberID in cache listener

I've added a new test that demonstrates that a new-version server sends
an EventID to a client that the client is unable to deserialize
completely.  It gets an error when deserializing its member ID,
causing cache listeners to get a null when requesting the ID of
the member that effected the change.

The fix is to reserialize the member ID in EventID.toData if the
destination stream is for an older version, such as a 1.1.0 client.
This ensures the proper on-wire format is used for that version of Geode.

I've also bumped up the version ordinal for 1.2 since version 59 is
marked as unusable in

I've changed the Banner to show the version ordinal because the other
version information in the banner isn't completely trustworthy.  It
looks for a file on the classpath to get
this information and so it may not get it from the Geode jar file
as expected.

> Old client gets null memberID in cache listener
> -----------------------------------------------
>                 Key: GEODE-2954
>                 URL:
>             Project: Geode
>          Issue Type: Bug
>          Components: membership
>            Reporter: Bruce Schuchardt
>            Assignee: Bruce Schuchardt
>             Fix For: 1.2.0
> I was doing backward compatibility testing and found a 1.0 client was getting a null
memberID in a cache listener
> {noformat}
> [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
> {noformat}
> 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 you can see that it catches IOExceptions in deserializing
the memberID of the event and returns null without logging the problem.
> {code}
>     try {
>       result = InternalDistributedMember.readEssentialData(dis);
>     } catch (IOException e) {
>       // nothing can be done about this
>     } catch (ClassNotFoundException e) {
>       // ditto
>     }
> {code}

This message was sent by Atlassian JIRA

View raw message