Hey everybody,


I'm trying to convince myself that a flow I'm building with Akka Streams is 
deadlock-free. Here's what I'm trying to do:

   - I have an infinite source *s* of some kind of requests *r1, r2, ... *that 
I 
   need "execute". 
   - In case such an execution fails, I'd like to wait a bit (1s, say) and 
   try again. 
   - If a request cannot be executed for 10 times, it will be dropped. 

To keep resource consumption bounded, I thought I'd limit the number of 
requests (to 100, say). So when there are around 100 requests in the 
pipeline, the pipeline should not ask the source *s* for new elements but 
just continue retrying until we have again only 99 or fewer requests.


I implemented this pseudo code:


   s ~> PreferredMerge        ~> Delay ~> buffer(100) ~> ExecuteRequest ~> 
Broadcast ~> Report

        PreferredMerge.pref()  <~  RetriedOnceMore    <~  FilterFail    <~ 
Broadcast


Here, the source *s* emits Retry(request, retryCount) objects. These enter 
a PreferredMerge stage on the un-preferred port, get delayed (using a 
mapAsync) and then buffered. ExecuteRequest executes the request. The 
result of this goes to a broadcast, one of whose outputs emits results 
(succeeded or failed). In FilterFail, requests that failed for less than 10 
times are kept and get their retryCount incremented in RetriedOnceMore before 
they enter the PreferredMerge stage on the preferred port.


This works. But could it deadlock?


– Kaspar

-- 
>>>>>>>>>>      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 akka-user+unsubscr...@googlegroups.com.
To post to this group, send email to akka-user@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to