I ran into an issue with Akka getting into a state where it can't 
reconnect.  It shouldn't be related to deathwatch/quarantine, since I have 
set watch-failure-detector.acceptable-heartbeat-pause to 24h.  I'm using 
Akka 2.3.0.

I have my SuspendableTransportAdapter, which allows me to suspend() and 
resume() at will.  The adapter's behavior is pretty simple:  (1) when 
suspend() is called, all existing associations are immediately 
disassociated; (2) while suspended, all write requests are dropped, and all 
incoming associations are immediately disassociated.  I used the 
FailureInjectorTransportAdapter as a guide.

I have a very simple test in which a Ping actor periodically sends messages 
to an Echo actor (running in a different process), which then echoes the 
messages back to the Ping actor.  In the Ping actor's actor system, I 
alternate suspending/resuming the transport every 10 seconds.  If 
everything is working right, i expect to see about 10 pings, then nothing 
for 10 seconds, then about 10 pings, etc.  It appears to work for a while 
-- when suspended, Akka will detect the closed association and attempt to 
re-establish the connection, which will eventually succeed when the 
transport is resumed.  However, after a while, Akka will get into a state 
where something is stuck and it will not reconnect again.

In my transport adapter, when an inbound association comes in while 
suspended, I am dropping the assocation (by calling handle.disassociate()). 
 I found that if I simply ignore the association instead of dropping it, 
Akka doesn't get into the hung state.  But on the other hand, it takes much 
longer for Akka to re-establish communication.  Instead of getting ~10 
pings every 20 seconds, I get ~10 pings every 40 seconds (it misses an 
entire cycle).

So, naively, it seems that dropping the associations is causing the 
problem.  However, FailureInjectorTransportAdapter drops associations too, 
and this seems to be a reasonable operation.  As far as I know, I'm playing 
by the rules regarding the transport adapter.

Any ideas?

Thanks!
Jim

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to