Re: Dependencies in S6

From: Laurent Bercot <ska-supervision_at_skarnet.org>
Date: Wed, 21 Oct 2020 13:26:25 +0000

  Hi Amaresh,

  As long as service B depends on service A, A and B will never start
in parallel; B will always start when A is ready.

  "A is ready" means:
   - if A is a oneshot: when the script has completed
   - if A is a longrun:
     * if there is a notification-fd file in the service definition
directory: when the daemon has notified readiness
     * if there is no such file: as soon as the run script has started
(which is not a good readiness indicator; it is akin to starting B
_right after A_, essentially in parallel, so you may have race
conditions here - which is why you should always use readiness
notifications.)


>Secnario 1:
>1. A & B are one shot services in a s6-rc bundle. Service B is dependent on
>A. ( added in dependency file).
>2. I think Service B will start after the completion of service A ( A then
>B, in serial manner ) is it correct ? or
>3. Service B will start immediately after the service A as started (in a
>parallel manner) ?

  Serial manner, A then B.


>Secnario 2:
>1. A is one shot service and B is a long run service. Service B is
>dependent on Service A.
>2. Service B will start, once th service A as completed (in serial manner)
>? or
>3. Service B will start immediately after the service A as started (in a
>parallel manner) ?

  Serial manner, A then B.


>Secnario 3:
>1. A is a long run service and B is a one shot service. Service B is
>dependent on Service A.
>2. Service B will start immediately after the service A as started (in a
>parallel manner) ?
>3. Do I need to use notification mechanism if I want to start service B
>after A service as reached particular point in execution

  Yes, you need notification; if you don't, then B will start
immediately after A.


>Secnario 4:
>1. A & B both are long run services. Service B is dependent on Service A.
>2. Service B will start immediately after the service A as started (in a
>parallel manner) ?

  Same as above: almost-parallel manner if A does not use notification,
serial manner if it does.


> If one shot service are dependent on other one shot services. They will be
>started in serial manner one after the other ?

  That is your Scenario 1 above.

  If the case is: "C depends on A and B, but A and B are independent",
then:
  * A and B are started in parallel
  * when both A and B are ready, then C is started.

  Hope this helps,

--
  Laurent
Received on Wed Oct 21 2020 - 13:26:25 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC