[
https://issues.apache.org/jira/browse/GEODE-2064?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Anilkumar Gingade resolved GEODE-2064.
--------------------------------------
Resolution: Fixed
Fix Version/s: 1.1.0-incubating
> Unable to detect system shutdown during message delivery.
> ---------------------------------------------------------
>
> Key: GEODE-2064
> URL: https://issues.apache.org/jira/browse/GEODE-2064
> Project: Geode
> Issue Type: Bug
> Components: messaging
> Reporter: Anilkumar Gingade
> Assignee: Anilkumar Gingade
> Fix For: 1.1.0-incubating
>
>
> While message send in progress, if the system gets shutdown (forced
> disconnect), the send (message delivery to peers) reports connect exception
> and ignores detecting/throwing SystemDisconnect exception.
> In "DirectChannel.getConnection()" it checks for "mgr.shutdownInProgress()"
> and returns ConnectException to the caller
> "GMSMembershipManager.directChannelSend()"
> In client/server scenario, if the client is performing cache operation, the
> cache operation may succeed in server that is getting down and failure to
> deliver the message to other peers/servers. The client will see the operation
> getting successfully completed.
> The above scenario could result in client missing an event and resulting in
> data mismatch between client and server.
> Consider scenario:
> -- 2 servers, server1 and server2 in distributed system.
> -- client1 has subscribed for events, with its primary queue on server1 and
> secondary queue on server2.
> -- client2 does an put with Key1 on server1.
> -- the server1 sends the event to client1 (client1 now has key1) and while
> sending the message to server 2, it gets disconnected. While shutdown in
> progress, its unable to deliver the message to server2 and instead of
> throwing the exception to client, it responds to client with success. The
> client1 now fails-over to server1; its out of sync with server1 cache (which
> doesn't has key1).
> Solution: By throwing the disconnect exception back to the caller. This
> enables the caller (client) to retry the operation on the live server.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)