zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Antonio Rafael Rodrigues (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-3015) Publish the value of getIdleRecv() in WatchedEvent of Disconnected
Date Sun, 01 Apr 2018 15:50:00 GMT

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-3015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16421698#comment-16421698

Antonio Rafael Rodrigues commented on ZOOKEEPER-3015:

Actually, I don't know for sure as I'm not familiarized with zookeeper's design. But I've
got some thoughts.

1 - If we introduce a new KeeperState ClientSessionTimeout, we would have to emmit WatchedEvent(ClientSessionTimeout)
instead of the WatchedEvent(Disconnected) and there are current clients that expect WatchedEvent(Disconnected)
for the case of session timeout. 

2 - I'm thinking about some options:
    a) we could add a field, some kind of EventInfo, to WatchedEvent. Of course we'd have
to come up with a way to have different information on EventInfo, depending on the KeeperState.

    b) another way would be to have a subclass of WatchedEvent, that subclass would hold
the details about the event. The clients, verifies if the KeeperState==Disconect, if so it
could make a cast of WatchedEvent to WatchedEventDisconect and get some valueable information.
    c) we could have a field with some key-value structure in WatchedEvent, so we could
add values to this field depending on the KeeperState. The client would have to verify the
KeeperState in order to know what informations are available in the key-value structure

> Publish the value of getIdleRecv() in WatchedEvent of Disconnected
> ------------------------------------------------------------------
>                 Key: ZOOKEEPER-3015
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3015
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: java client
>    Affects Versions: 3.5.3
>            Reporter: Antonio Rafael Rodrigues
>            Priority: Minor
> In the class ClientCnxn, at the line 1247:
> eventThread.queueEvent(new WatchedEvent(
>                                     Event.EventType.None,
>                                     Event.KeeperState.Disconnected,
>                                     null));
> The current value of getIdleRecv() could be published inside the WatchedEvent, so that
the clients that are listening to this event could know exactly how many time has been elapsed.
> This would be specially useful in the case of the message "Client session timed out,
have not heard from server in " . When the client receive a WatchedEvent with Event.KeeperState.Disconnected,
it doesn't know if it was due to a immediate loss of connection or a lack of heart beats.
Publishing the value of getIdleRecv() would give a clue on that.

This message was sent by Atlassian JIRA

View raw message