This commit is contained in:
Balena CI 2023-01-31 19:43:30 +00:00
parent 11952fd266
commit 8b7cecfd3e
No known key found for this signature in database
GPG Key ID: E2ADEC9754128402
6 changed files with 52 additions and 6 deletions

View File

@ -1,3 +1,44 @@
- commits:
- subject: Add SIGTERM listener on application start
hash: 6683bca07da0e6b8f822dfcb22211b24a182dc16
body: >
As reported by issue #2100, the supervisor was not correctly reacting to
`SIGTERM` sent by the engine when terminating the process (for instance
before a reboot). This would lead to the supervisor requiring an
additional 10 seconds to terminate (after which the engine will send a
`SIGKILL`).
The reason for this is explained by the following info coming from Node
> Node.js was not designed to run as PID 1 which leads to unexpected behaviour when running inside of Docker. For example, a Node.js process running as PID 1 will not respond to `SIGINT` (`CTRL-C`) and similar signals. [reference](https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#handling-kernel-signals)
On internal testing, it was discovered that simply adding a listener for
the signal on the Node process was enough to handle the signal, even
when the process runs as PID 1.
This adds a listener for `SIGTERM` before starting the supervisor main
loop.
footer:
Closes: "#2100"
closes: "#2100"
Change-type: patch
change-type: patch
author: Felipe Lalanne
nested: []
version: 14.6.4
title: ""
date: 2023-01-31T19:43:26.722Z
- commits: - commits:
- subject: Update deploy-to-balena action to 0.26.0 - subject: Update deploy-to-balena action to 0.26.0
hash: 2bd2879cc580cd5b6a7cba73bc10d8ba55a3cf4c hash: 2bd2879cc580cd5b6a7cba73bc10d8ba55a3cf4c

View File

@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY! automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
This project adheres to [Semantic Versioning](http://semver.org/). This project adheres to [Semantic Versioning](http://semver.org/).
# v14.6.4
## (2023-01-31)
* Add SIGTERM listener on application start [Felipe Lalanne]
# v14.6.3 # v14.6.3
## (2023-01-30) ## (2023-01-30)

View File

@ -1 +1 @@
14.6.3 14.6.4

View File

@ -2,6 +2,6 @@ name: balena-supervisor
description: 'Balena Supervisor: balena''s agent on devices.' description: 'Balena Supervisor: balena''s agent on devices.'
joinable: false joinable: false
type: sw.application type: sw.application
version: 14.6.3 version: 14.6.4
provides: provides:
- slug: sw.compose.long-volume-syntax - slug: sw.compose.long-volume-syntax

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "balena-supervisor", "name": "balena-supervisor",
"version": "14.6.3", "version": "14.6.4",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "balena-supervisor", "name": "balena-supervisor",
"version": "14.6.3", "version": "14.6.4",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@balena/happy-eyeballs": "0.0.6", "@balena/happy-eyeballs": "0.0.6",

View File

@ -1,7 +1,7 @@
{ {
"name": "balena-supervisor", "name": "balena-supervisor",
"description": "This is balena's Supervisor, a program that runs on IoT devices and has the task of running user Apps (which are Docker containers), and updating them as the balena API informs it to.", "description": "This is balena's Supervisor, a program that runs on IoT devices and has the task of running user Apps (which are Docker containers), and updating them as the balena API informs it to.",
"version": "14.6.3", "version": "14.6.4",
"license": "Apache-2.0", "license": "Apache-2.0",
"repository": { "repository": {
"type": "git", "type": "git",
@ -146,6 +146,6 @@
} }
}, },
"versionist": { "versionist": {
"publishedAt": "2023-01-30T18:59:38.829Z" "publishedAt": "2023-01-31T19:43:27.427Z"
} }
} }