Status: Accepted
Owner: [email protected]
New issue 3967 by [email protected]: Announcement enhancement
http://code.google.com/p/pharo/issues/detail?id=3967
Both solutions lead to remaining subscribers being notified when an error
occurs.
So which is decided upon, depends on which of their respective benefits are
valued more.
For that, it'd be nice if more than 2 people chimed in on. :)
Short summary (not guaranteed to be 100% objective)
Curtailing ->
- Your image may crash in some cases, more specifically if you:
1) have errors in subscribers to announcements made in system-critical
processes, as they will be suspended while debugging.
2) deliver announcements in a separate thread from where they're announced,
and the announcing thread does so regularily.
+ Easy to debug. Entire call-chain available, no modification to state
caused by subsequent subscribers. Restart should always lead in bug being
reproduceable.
The remove-from-subscriptions part of Error-handling and ifCurtailed could
be combined as well, in which case #2 no longer applies.
Error handling ->
- Hard/impossible to debug because:
1) If your error was in ordering, debugger will step through flawlessly if
restarted.
2) You start at the context of the subscriptions action, no idea where it
came from.
+ More robust, none of the cases mentioned in Curtailing will crash your
image.
With the different pros/cons mentioned above in mind, here are .cs with
example implementations for what both Igor / I would like. (minus
remove-from-subscriptions for ifCurtailed: )
Attachments:
AnnouncementErrorHandling.zip 1.7 KB