Packages
spawn
2.0.0-RC5
2.0.0-RC9
2.0.0-RC8
2.0.0-RC7
2.0.0-RC6
2.0.0-RC5
2.0.0-RC4
2.0.0-RC3
2.0.0-RC2
2.0.0-RC14
2.0.0-RC13
2.0.0-RC12
2.0.0-RC11
2.0.0-RC10
2.0.0-RC1
1.4.3
1.4.2
1.4.1
1.4.0
1.3.3
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-rc3
1.0.0-rc16
1.0.0-rc1
1.0.0-rc.38
1.0.0-rc.37
1.0.0-rc.36
1.0.0-rc.35
1.0.0-rc.34
1.0.0-rc.33
1.0.0-rc.32
1.0.0-rc.31
1.0.0-rc.30
1.0.0-rc.29
1.0.0-rc.28
1.0.0-rc.27
1.0.0-rc.26
1.0.0-rc.25
1.0.0-rc.24
1.0.0-rc.23
1.0.0-rc.22
1.0.0-rc.21
1.0.0-rc.20
1.0.0-rc.19
1.0.0-rc.18
1.0.0-rc.17
1.0.0-rc.2
0.6.3
0.6.2
0.6.1
0.6.0
0.5.5
0.5.4
0.5.3
0.5.1
0.5.0
0.5.0-rc.13
0.5.0-rc.12
0.5.0-rc.11
0.5.0-rc.10
0.5.0-rc.9
0.5.0-rc.8
0.5.0-rc.7
0.5.0-rc.6
0.5.0-rc.5
0.5.0-rc.3
0.5.0-alpha.13
0.5.0-alpha.12
0.5.0-alpha.11
0.5.0-alpha.10
0.5.0-alpha.9
0.5.0-alpha.8
0.5.0-alpha.7
0.5.0-alpha.6
0.5.0-alpha.5
0.5.0-alpha.4
0.5.0-alpha.3
0.5.0-alpha.2
0.5.0-alpha.1
0.1.0
Spawn is the core lib for Spawn Actors System
Current section
Files
Jump to
Current section
Files
lib/sidecar/process_supervisor.ex
defmodule Sidecar.ProcessSupervisor do
@moduledoc false
use Supervisor
require Logger
alias Actors.Config.PersistentTermConfig, as: Config
alias Spawn.Actors.Actor
alias Spawn.Actors.ActorId
alias Spawn.Actors.ActorDeactivationStrategy
alias Spawn.Actors.ActorSettings
alias Spawn.Actors.ActorSystem
alias Spawn.Actors.Metadata
alias Spawn.Actors.Registry
alias Spawn.Actors.TimeoutStrategy
alias Spawn.RegistrationRequest
alias Spawn.ServiceInfo
import Spawn.Utils.Common, only: [supervisor_process_logger: 1]
@impl true
def init(opts) do
children =
[
supervisor_process_logger(__MODULE__),
{Sidecar.MetricsSupervisor, opts},
Spawn.Supervisor.child_spec(opts),
statestores(),
Actors.Supervisors.ActorSupervisor.child_spec(opts),
Actors.Supervisors.ProtocolSupervisor.child_spec(opts),
%{
id: :healthcheck_actor_init,
start:
{Task, :start,
[
fn ->
Process.flag(:trap_exit, true)
Logger.info("[SUPERVISOR] HealthCheckActor is up")
registration_internal_system = %RegistrationRequest{
service_info: %ServiceInfo{
service_name: "",
service_version: "",
service_runtime: "",
support_library_name: "",
support_library_version: ""
},
actor_system: %ActorSystem{
name: "#{Config.get(:actor_system_name)}-internal",
registry: %Registry{
actors: %{
"HealthCheckActor" => %Actor{
id: %ActorId{
system: "#{Config.get(:actor_system_name)}-internal",
name: "HealthCheckActor"
},
metadata: %Metadata{},
settings: %ActorSettings{
kind: :NAMED,
stateful: false,
deactivation_strategy: %ActorDeactivationStrategy{
strategy: {:timeout, %TimeoutStrategy{timeout: 120_000}}
}
}
}
}
}
}
}
Actors.register(registration_internal_system)
receive do
{:EXIT, _pid, reason} ->
Logger.info(
"[SUPERVISOR] HealthCheckActor:#{inspect(self())} is successfully down with reason #{inspect(reason)}"
)
:ok
end
end
]}
}
]
|> Enum.reject(&is_nil/1)
Supervisor.init(children, strategy: :one_for_one)
end
def start_link(opts) do
Supervisor.start_link(
__MODULE__,
opts,
name: __MODULE__,
strategy: :one_for_one
)
end
if Code.ensure_loaded?(Statestores.Supervisor) do
defp statestores, do: Statestores.Supervisor.child_spec()
else
defp statestores, do: nil
end
end