Tasks #2317

Tasks #2233: Wait for confirmation when joining Spread groups

Wait for confirmation when joining Spread groups [Common Lisp]

Added by J. Moringen over 6 years ago. Updated over 6 years ago.

Status:ResolvedStart date:06/03/2015
Priority:NormalDue date:
Assignee:J. Moringen% Done:

100%

Category:Common Lisp
Target version:rsb-0.13

Related issues

Copied to Robotics Service Bus - Tasks #2434: Wait for confirmation when joining Spread groups [Java] Resolved 06/03/2015
Copied to Robotics Service Bus - Tasks #2435: Wait for confirmation when joining Spread groups [C++] Rejected 06/03/2015

Associated revisions

Revision 35dc7f6d
Added by J. Moringen over 6 years ago

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

Revision e2964d40
Added by J. Moringen over 6 years ago

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

Revision 4963a977
Added by J. Moringen over 6 years ago

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):

Revision 42caef2f
Added by J. Moringen over 6 years ago

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 over 6 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 over 6 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 over 6 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 0 to 100

#4 Updated by J. Wienke almost 6 years ago

  • Copied to Tasks #2433: Wait for confirmation when joining Spread groups [C++] added

#5 Updated by J. Wienke almost 6 years ago

  • Copied to Tasks #2434: Wait for confirmation when joining Spread groups [Java] added

#6 Updated by J. Wienke almost 6 years ago

  • Copied to Tasks #2435: Wait for confirmation when joining Spread groups [C++] added

#7 Updated by J. Moringen almost 6 years ago

  • Copied to deleted (Tasks #2433: Wait for confirmation when joining Spread groups [C++])

Also available in: Atom PDF