If you provide an error handler on the agent -- or just specify the error
mode as :continue -- it does not hang. That makes me think that what you're
seeing is "expected behavior" although it does seem a bit strange...?

On Wed, Jun 10, 2020 at 1:49 AM Ernesto Garcia <titogar...@gmail.com> wrote:

> I have discovered that, in the case of an agent action exception, the
> behavior of agent await depends on timing:
> - If your await happens to execute after the action is completed, it will
> happily throw an exception that the agent is in a failed state.
> - If your await happens to execute before the action is completed, it will
> dangerously block. (!!!)
>
> Shouldn't await behave the same in both cases?
>
> Code example:
>
> (defn await-agent-after-fail []
>   (let [agt (agent nil)]
>     (send-off agt (fn [_]
>                     (println "Agent throws exception now")
>                     (throw (ex-info "fail!" {}))))
>     (Thread/sleep 1000)
>     (println "Agent is awaited now...")
>     (println "Await timed out?" (not (await-for 10000 agt)))))
>
> (comment
>   (await-agent-after-fail))
>
>
> (defn await-agent-before-fail []
>   (let [agt (agent nil)]
>     (send-off agt (fn [_]
>                     (Thread/sleep 1000)
>                     (println "Agent throws exception now")
>                     (throw (ex-info "fail!" {}))))
>     (println "Agent is awaited now...")
>     (println "Await timed out?" (not (await-for 10000 agt)))))
>
> (comment
>   (await-agent-before-fail))
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/clojure/9cf9a5c3-1dcb-4d4a-b180-a2cd6568853do%40googlegroups.com
> <https://groups.google.com/d/msgid/clojure/9cf9a5c3-1dcb-4d4a-b180-a2cd6568853do%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>


-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- https://corfield.org/
World Singles Networks, LLC. -- https://worldsinglesnetworks.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/CAD4thx_jjdO29_rLrDZmxdeot0VcQksa4RjDBm10NGB3SmwMHA%40mail.gmail.com.

Reply via email to