Tasks #2317
Tasks #2233: Wait for confirmation when joining Spread groups
Wait for confirmation when joining Spread groups [Common Lisp]
Status: | Resolved | Start date: | 06/03/2015 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | J. Moringen | % Done: | 100% | |
Category: | Common Lisp | |||
Target version: | rsb-0.13 |
Related issues
Associated revisions
ref-group allows waiting in src/transport/spread/{protocol,connection}.lisp
refs #2317
The operation of joining a Spread group can only be considered complete
once the connection that did the joining receives a membership message
corresponding to the join operation. Since it is sometimes necessary to
wait for the joining of a group, ref-group now supports waiting for the
operation's completion.
- src/transport/spread/protocol.lisp (ref-group): added waitable?
keyword parameter; extended documentation string accordingly - src/transport/spread/connection.lisp (ref-group connecting string):
accept waitable? keyword parameter; return number of group references,
number of groups and optionally promise waiting on the operation's
completion
Wait for join operations in src/transport/spread/in-*connector.lisp
fixes #2317
All in-direction connectors wait for corresponding Spread group joining
operations to complete when attaching to scopes. The in-pull-direction
connector has to drain queued messages while waiting.
- src/transport/spread/in-connector.lisp
(notify in-connector scope eql :attached): call notify t :attached
when joining the first group; wait for all join operations to complete - src/transport/spread/in-pull-connector.lisp (header): updated
copyright
(notify in-pull-connector scope eql :attached): new method; reference
group and, if necessary, wait for join operation to complete; drain
Spread mailbox as much as necessary in the process - src/transport/spread/in-push-connector.lisp (header): updated
copyright
(notify in-push-connector eql t eql :attached): changed specializer
scope -> eql t; comment change
(notify in-push-connector eql t eql :detached): comment change
unref-group allows waiting in src/transport/spread/{protocol,connection}.lisp
refs #2317
Like joining a Spread group, the operation of leaving a Spread group can
only be considered complete once the connection that did the leaving
receives a membership message corresponding to the leave
operation. Since it is sometimes necessary to wait for the leaving of a
group, unref-group now supports waiting for the operation's completion.
- src/transport/spread/protocol.lisp (unref-group): added waitable?
keyword parameter; extended documentation string accordingly
- src/transport/spread/connection.lisp (make-hook-promise):
(ref-group connection string):
(unref-group connection string):
Wait for leave operations in src/transport/spread/in-*connector.lisp
refs #2317
All in-direction connectors wait for corresponding Spread group
leaving operations to complete when detaching from scopes. The
in-pull-direction connector has to drain queued messages while
waiting.
- src/transport/spread/in-connector.lisp
(notify in-connector scope eql :detached): call notify t :detached
when leaving the final group; wait for all leave operations to
complete - src/transport/spread/in-pull-connector.lisp
(notify in-pull-connector scope eql :detached): new method;
dereference group and, if necessary, wait for leave operation to
complete; drain Spread mailbox as much as necessary in the process
History
#1 Updated by J. Wienke almost 8 years ago
In the listener pooling branch I also added this step for leaving groups. The same confirmation membership message is available there.
#2 Updated by J. Moringen almost 8 years ago
J. Wienke wrote:
In the listener pooling branch I also added this step for leaving groups. The same confirmation membership message is available there.
Makes sense, I will add that.
#3 Updated by J. Moringen almost 8 years ago
- Status changed from In Progress to Resolved
- % Done changed from 0 to 100
Applied in changeset rsb-cl|e2964d40c351a2da4f2722dc39b4ccf6d3566942.
#4 Updated by J. Wienke over 7 years ago
- Copied to Tasks #2433: Wait for confirmation when joining Spread groups [C++] added
#5 Updated by J. Wienke over 7 years ago
- Copied to Tasks #2434: Wait for confirmation when joining Spread groups [Java] added
#6 Updated by J. Wienke over 7 years ago
- Copied to Tasks #2435: Wait for confirmation when joining Spread groups [C++] added
#7 Updated by J. Moringen over 7 years ago
- Copied to deleted (Tasks #2433: Wait for confirmation when joining Spread groups [C++])