reef-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Chung (JIRA)" <>
Subject [jira] [Commented] (REEF-1407) Catching exceptions in group communication are implemented incorrectly
Date Mon, 13 Jun 2016 23:54:57 GMT


Andrew Chung commented on REEF-1407:

I have come up with a proposed solution. It is as follows:

* Instead of injecting {{IObserver<NsMessage<T>>}} in {{StreamingNetworkService}},
inject a universal observer that invokes a {{NetworkObserverFactory}}. The universal observer
will create an observer from the {{NetworkObserverFactory}} and register the new observer
with {{ObserverContainer}} with an {{IPEndpoint}} for *each* new client.
* Delete {{IGroupCommNetworkObserver}} in favor of a {{CommunicationGroupContainer}}, as it
is nothing more than an {{IObserver}} that dispatches messages to communication groups. We
should split the function such that the actual {{GroupCommNetworkObserver}} does not need
to be injected into the {{CommunicationGroupClient}}, just the {{CommunicationGroupContainer}}.
* Restructuring common code into a common class for each {{IObserver}} created from a custom
{{NetworkObserverFactory}} such that the logic remains consistent when handling multiple clients
with multiple {{IObserver}} s, as opposed to handling multiple clients with a single {{IObserver}}.
The last bullet is a special case of this bullet.
* Removing use of {{_typeMap}} in {{ObserverContainer}}. Instead, use a set to hold multiple
universal observers. The type is always {{typeof(T)}} anyhow.

> Catching exceptions in group communication are implemented incorrectly
> ----------------------------------------------------------------------
>                 Key: REEF-1407
>                 URL:
>             Project: REEF
>          Issue Type: Bug
>            Reporter: Julia
>            Assignee: Dhruv Mahajan
>              Labels: FT
> Currently when a task fails, other tasks in the group are stuck in reading data by a
blocking call. We should be able to try and throw an exception and propagate the exception
to Task so that the task can handle it in a proper way. 

This message was sent by Atlassian JIRA

View raw message