Github user tedxia commented on the pull request:

    https://github.com/apache/storm/pull/268#issuecomment-58614296
  
    In this patch, Client have TimeCacheMap for cache new messages that has't 
been send out. Worker only need add message to corresponding Client, and Client 
will decide when to send the new arrival message. At most time Client will send 
new arrival message as soon as possible, but when the connect had been lost or 
there are older message. So I removed "send" in worker.clj.
    
    For Client, there is a State machine stand for Client's current state, such 
as NEW, CONNECTED, DISCONNECTED and CLOSED. At first Client' state is NEW, then 
we will connect remote worker by start a timer that run connect logic (we call 
it connector) immediately. If connect success, Client't state will become 
CONNECTED, connector will start a  periodic timer for send message to remote 
worker (we call it flusher). If connect failed, it will retry a few times  
until success or Client's state become CLOSED. When Client's state become 
CLOSED, Client will be destoried. Flusher will send cached message 
periodically, and when flush failed Client's state will become DISCONNECTED and 
start connector immediately. For reduce message transfer delay, when some 
message arrival, we will start flusher immediately, and of course flusher only 
work when Client's state are CONNECTED.
    
    That it the main change for this patch. I am very sorry for all of this. As 
a new man for opensource, i will try my best to do better.
    Thanks all.



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to