Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ HM -> HM: Wakeup and check if the\ncheckpoints have been called
HM -> LM: Supervision failure notification

HM -X LM: Stop triggering alive
LM -> LM: Error reaction\n(notify State manager)
LM -> LM: Error reaction\n(Recovery Action)

hnote across: Use Case: Direct error report by the Application

App -> HM: Report error
HM -> LM: Supervision failure notification

HM -X LM: Stop triggering alive
LM -> LM: Error reaction\n(notify State manager)
LM -> LM: Error reaction\n(Recovery Action)

hnote across: Use Case: Crashed Application

Expand All @@ -61,7 +61,6 @@ destroy HM

LM -> LM: Wakeup and check if the\ncheckpoints have been called
LM -> LM: No alive notification seen
LM -> LM: Error reaction\n(notify State manager)

LM -> LM: Error reaction\n(Recovery Action)

@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
' *******************************************************************************
' Copyright (c) 2026 Contributors to the Eclipse Foundation
'
' See the NOTICE file(s) distributed with this work for additional
' information regarding copyright ownership.
'
' This program and the accompanying materials are made available under the
' terms of the Apache License Version 2.0 which is available at
' https://www.apache.org/licenses/LICENSE-2.0
'
' SPDX-License-Identifier: Apache-2.0
' *******************************************************************************

@startuml
title Launch Manager - Run Components in Parallel

autonumber "<b>[00]"

participant "Launch Manager" as LM
participant "OS (kernel)" as kernel
participant "Reporting App 1" as app1
participant "Reporting App 2" as app2
activate LM

LM -> LM: Analyze current state.
LM -> LM: Determine transition plan.

LM -> kernel: Start Reporting App 1.
LM -> kernel: Start Reporting App 2.
kernel -> app1 **: Start.
kernel -> app2 **: Start.

activate app1
activate app2

app1 -> app1: Internal User app initialization.
app1 -> LM: Signal ready state via Lifecycle API.
app2 -> app2: Internal User app initialization.
app2 -> LM: Signal ready state via Lifecycle API.
...
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
' *******************************************************************************
' Copyright (c) 2026 Contributors to the Eclipse Foundation
'
' See the NOTICE file(s) distributed with this work for additional
' information regarding copyright ownership.
'
' This program and the accompanying materials are made available under the
' terms of the Apache License Version 2.0 which is available at
' https://www.apache.org/licenses/LICENSE-2.0
'
' SPDX-License-Identifier: Apache-2.0
' *******************************************************************************

@startuml
title Launch Manager - Crash Recovery

autonumber "<b>[00]"

participant "Launch Manager" as LM
participant "OS (kernel)" as kernel
participant "Crashing Process" as app1


activate LM
activate app1

...


app1 -> app1: Random crash.
app1 -> kernel: Terminate.
destroy app1
kernel -> LM: Process terminated.

LM -> LM: Analyze current state.
LM -> LM: Determine transition plan.\nA recovery action has to be ran,\nthe recovery action is to switch to a different Run Target.
LM -> LM: Switch Run Target.

...

@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
' *******************************************************************************
' Copyright (c) 2026 Contributors to the Eclipse Foundation
'
' See the NOTICE file(s) distributed with this work for additional
' information regarding copyright ownership.
'
' This program and the accompanying materials are made available under the
' terms of the Apache License Version 2.0 which is available at
' https://www.apache.org/licenses/LICENSE-2.0
'
' SPDX-License-Identifier: Apache-2.0
' *******************************************************************************

@startuml
title Launch Manager - Components Depends on Each Other

autonumber "<b>[00]"

participant "Launch Manager" as LM
participant "OS (kernel)" as kernel
participant "Reporting App 1" as app1
participant "Reporting App 2" as app2
activate LM

LM -> LM: Analyze current state.
LM -> LM: Determine transition plan.

LM -> kernel: Start Reporting App 2.
kernel -> app2 **: Start.
activate app2
LM -> LM: Wait for Reporting App 2 ready condition.
app2 -> app2: Internal User app initialization.
app2 -> LM: Signal ready state via Lifecycle API.

LM -> LM: Analyze current state.
LM -> LM: Determine transition plan.

LM -> kernel: Start Reporting App 1.
kernel -> app1 **: Start.
activate app1
LM -> LM: Wait for Reporting App 1 ready condition.
app1 -> app1: Internal User app initialization.
app1 -> LM: Signal ready state via Lifecycle API.

LM -> LM: Analyze current state.
LM -> LM: Update current run target state to active.

...
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
' *******************************************************************************
' Copyright (c) 2026 Contributors to the Eclipse Foundation
'
' See the NOTICE file(s) distributed with this work for additional
' information regarding copyright ownership.
'
' This program and the accompanying materials are made available under the
' terms of the Apache License Version 2.0 which is available at
' https://www.apache.org/licenses/LICENSE-2.0
'
' SPDX-License-Identifier: Apache-2.0
' *******************************************************************************

@startuml
title Launch Manager - Components Depends on Termination

autonumber "<b>[00]"

participant "Launch Manager" as LM
participant "OS (kernel)" as kernel
participant "Reporting App 1" as app1
participant "Reporting App 2" as app2
activate LM
activate app1

== Switch Run Target ==

LM -> LM: Analyze current state.
LM -> LM: Determine transition plan.

LM -> app1: SIGTERM
app1 -> kernel: Termination.
destroy app1


destroy app1
kernel -> LM: Reporting App 1 terminated.
Comment thread
MaciejKaszynski marked this conversation as resolved.
deactivate app1

LM -> LM: Analyze current state.
LM -> LM: Determine transition plan.

LM -> kernel: Start Reporting App 2.
kernel -> app2 **: Start.
activate app2
LM -> LM: Wait for Reporting App 2 ready condition.
app2 -> app2: Internal User app initialization.
app2 -> LM: Signal ready state via Lifecycle API.
...
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
' *******************************************************************************
' Copyright (c) 2026 Contributors to the Eclipse Foundation
'
' See the NOTICE file(s) distributed with this work for additional
' information regarding copyright ownership.
'
' This program and the accompanying materials are made available under the
' terms of the Apache License Version 2.0 which is available at
' https://www.apache.org/licenses/LICENSE-2.0
'
' SPDX-License-Identifier: Apache-2.0
' *******************************************************************************

@startuml
title Launch Manager - Termination Request

autonumber "<b>[00]"

participant "Launch Manager" as LM
participant "OS (kernel)" as kernel
participant "User App 1 (well behaving)" as app1
participant "User App 2 (badly behaving)" as app2

activate LM
activate app1
activate app2

== Switch Run Target ==

LM -> LM: Analyze current state.
LM -> LM: Determine transition plan.


LM -> app1: SIGTERM.
app1 -> kernel: Terminate.
destroy app1

LM -> app2: SIGTERM.
app2 -> app2: Ignore.
LM -> app2: SIGKILL.
app2 -> kernel: Terminate.
destroy app2

@enduml
61 changes: 61 additions & 0 deletions docs/features/lifecycle/architecture/alive.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
..
# *******************************************************************************
# Copyright (c) 2025 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************

:orphan:

Alive
#####

The Alive Interface provides a basic watchdog functionality interface that
delivers essential monitoring capabilities for system health and responsiveness
tracking.
It implements core watchdog operations including heartbeat signals to ensure
reliable operation and automatic recovery from unresponsive states.

**SCORE Application Liveliness Reporting**

SCORE applications can periodically signal their liveliness to the
:term:`Launch Manager` through the Alive Interface.
This mechanism allows the :term:`Launch Manager` to:

- Detect application failures or hangs
- Trigger recovery actions when liveliness is lost
- Maintain accurate process health status

The liveliness mechanism includes:

- Configurable heartbeat intervals per application
- Timeout detection and failure handling

The alive interface is defined here: :need:`logic_arc_int__lifecycle__alive_if`


Dynamic architecture
====================

.. feat_arc_dyn:: Alive Monitoring
:id: feat_arc_dyn__lifecycle__alive_monitor
:security: YES
:status: valid
:version: 1
:safety: ASIL_B
:fulfils: feat_req__lifecycle__liveliness_detection[version==1]
:includes:
:belongs_to: feat__lifecycle[version==1]

.. uml:: _assets/alive_monitoring_dynamic.puml
:scale: 50
:align: center


Loading
Loading