rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwoodd64180458d014e47dfe7944c9d50cd6f5fc6df1b
{
"request": "trigger",
"version": 1,
"event_type": "patch",
"repository": {
"id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
"name": "heartwood",
"description": "Radicle Heartwood Protocol & Stack",
"private": false,
"default_branch": "master",
"delegates": [
"did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
"did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Created",
"patch": {
"id": "e49446f4112159781639b6df0adcb696b2b7ba91",
"author": {
"id": "did:key:z6Mko5mivMvNtheBHB67cSJeMG6BbCn7Xk6MKY9VegkAbgMH",
"alias": "Derick"
},
"title": "node: Fix \"signals\" thread to continue upon other signal",
"state": {
"status": "merged",
"conflicts": []
},
"before": "123f7eb6bbb3cb3f39257b325b2256ecd415fbe4",
"after": "d64180458d014e47dfe7944c9d50cd6f5fc6df1b",
"commits": [
"d64180458d014e47dfe7944c9d50cd6f5fc6df1b"
],
"target": "7e1cb406bb935c3de008d2171e8961f57b4336ea",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "e49446f4112159781639b6df0adcb696b2b7ba91",
"author": {
"id": "did:key:z6Mko5mivMvNtheBHB67cSJeMG6BbCn7Xk6MKY9VegkAbgMH",
"alias": "Derick"
},
"description": "Otherwise, previously, when one of the non-shutdown signals was\nreceived, that would cause the \"signals\" thread to finish, but then a\nsubsequent signal that should cause shutdown would not because the\nthread no longer existed to do so. E.g. when SIGHUP or SIGWINCH was\nreceived first and ignored and then SIGTERM or SIGINT was received next,\nthe program should still be shutdown, but it wouldn't be. This is now\nfixed by simply looping to continue handling subsequent signals.\n\nLogging is now done for:\n- Receiving of SIGHUP, at log level `debug`, because the default action\n for that signal would be to terminate the process but that is not done\n by `radicle_signals`. Someone sending that signal might want to debug\n why the process isn't being terminated.\n- Disconnection of the signal-notifications channel, at log level\n `warn`, because, even though that should be impossible, if it somehow\n occurs then a warning is warranted.\n\nLogging is not done for receiving of SIGWINCH, because the default\naction for that signal would be to ignore it, which is what\n`radicle-node` does.\n\nA wildcard pattern is not used in the match arms, so that any future\nchanges to the `Signal` variants will require reviewing their handling\nin the \"signals\" thread.\n\nSigned-off-by: Derick Eddington <kcired@pm.me>",
"base": "4a497fa66f8293c81bc7cb2b10f4653ad7f9f7df",
"oid": "70571ee1233fee38b42afb16d36776aca4ab54eb",
"timestamp": 1721268379
},
{
"id": "a6e492f3a916d75df918c5aeb98d8e6f4b27e944",
"author": {
"id": "did:key:z6Mko5mivMvNtheBHB67cSJeMG6BbCn7Xk6MKY9VegkAbgMH",
"alias": "Derick"
},
"description": "Rebase",
"base": "123f7eb6bbb3cb3f39257b325b2256ecd415fbe4",
"oid": "d64180458d014e47dfe7944c9d50cd6f5fc6df1b",
"timestamp": 1721358048
},
{
"id": "71915b0d0b20417ac6bd399d672651f50ac10ff7",
"author": {
"id": "did:key:z6Mko5mivMvNtheBHB67cSJeMG6BbCn7Xk6MKY9VegkAbgMH",
"alias": "Derick"
},
"description": "Rebase, logging tweaks.",
"base": "123f7eb6bbb3cb3f39257b325b2256ecd415fbe4",
"oid": "6f8d75a00daac96ee4b375b4a7e93cfb8988820c",
"timestamp": 1721637606
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "10af8c5d-af8b-4c2a-aa72-89344d6f50ee"
},
"info_url": "https://cci.rad.levitte.org//10af8c5d-af8b-4c2a-aa72-89344d6f50ee.html"
}
Started at: 2026-09-08 23:15:52.554278+02:00
Commands:
$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 .
✓ Creating checkout in ./...
✓ Remote cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT added
✓ Remote-tracking branch cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/master created for z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT
✓ Remote fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM added
✓ Remote-tracking branch fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/master created for z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM
✓ Remote lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz added
✓ Remote-tracking branch lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz/master created for z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz
✓ Repository successfully cloned under /opt/radcis/ci.rad.levitte.org/cci/state/10af8c5d-af8b-4c2a-aa72-89344d6f50ee/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 189 issues · 39 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout e49446f4112159781639b6df0adcb696b2b7ba91
✓ Switched to branch patch/e49446f at revision a6e492f
✓ Branch patch/e49446f setup to track rad/patches/e49446f4112159781639b6df0adcb696b2b7ba91
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout d64180458d014e47dfe7944c9d50cd6f5fc6df1b
HEAD is now at d6418045 node: Fix "signals" thread to continue upon other signal
Exit code: 0
$ rad patch show e49446f4112159781639b6df0adcb696b2b7ba91 -p
╭────────────────────────────────────────────────────────────────────────────────╮
│ Title node: Fix "signals" thread to continue upon other signal │
│ Patch e49446f4112159781639b6df0adcb696b2b7ba91 │
│ Author Derick z6Mko5m…gkAbgMH │
│ Head d64180458d014e47dfe7944c9d50cd6f5fc6df1b │
│ Base 123f7eb6bbb3cb3f39257b325b2256ecd415fbe4 │
│ Target master │
│ Branches patch/e49446f │
│ Commits ahead 1, behind 1247 │
│ Status merged │
│ │
│ Otherwise, previously, when one of the non-shutdown signals was │
│ received, that would cause the "signals" thread to finish, but then a │
│ subsequent signal that should cause shutdown would not because the │
│ thread no longer existed to do so. E.g. when SIGHUP or SIGWINCH was │
│ received first and ignored and then SIGTERM or SIGINT was received next, │
│ the program should still be shutdown, but it wouldn't be. This is now │
│ fixed by simply looping to continue handling subsequent signals. │
│ │
│ Logging is now done for: │
│ - Receiving of SIGHUP, at log level `debug`, because the default action │
│ for that signal would be to terminate the process but that is not done │
│ by `radicle_signals`. Someone sending that signal might want to debug │
│ why the process isn't being terminated. │
│ - Disconnection of the signal-notifications channel, at log level │
│ `warn`, because, even though that should be impossible, if it somehow │
│ occurs then a warning is warranted. │
│ │
│ Logging is not done for receiving of SIGWINCH, because the default │
│ action for that signal would be to ignore it, which is what │
│ `radicle-node` does. │
│ │
│ A wildcard pattern is not used in the match arms, so that any future │
│ changes to the `Signal` variants will require reviewing their handling │
│ in the "signals" thread. │
│ │
│ Signed-off-by: Derick Eddington <kcired@pm.me> │
├────────────────────────────────────────────────────────────────────────────────┤
│ d641804 node: Fix "signals" thread to continue upon other signal │
├────────────────────────────────────────────────────────────────────────────────┤
│ ● Revision e49446f @ 4a497fa..70571ee by Derick z6Mko5m…gkAbgMH 2 years ago │
│ ↑ Revision a6e492f @ 123f7eb..d641804 by Derick z6Mko5m…gkAbgMH 2 years ago │
│ ↑ Revision 71915b0 @ 123f7eb..6f8d75a by cloudhead z6MksFq…bS9wzpT 2 years ago │
│ └─ ✓ merged by cloudhead z6MksFq…bS9wzpT │
╰────────────────────────────────────────────────────────────────────────────────╯
commit d64180458d014e47dfe7944c9d50cd6f5fc6df1b
Author: Derick Eddington <kcired@pm.me>
Date: Wed Jul 17 18:58:01 2024 -0700
node: Fix "signals" thread to continue upon other signal
Otherwise, previously, when one of the non-shutdown signals was
received, that would cause the "signals" thread to finish, but then a
subsequent signal that should cause shutdown would not because the
thread no longer existed to do so. E.g. when SIGHUP or SIGWINCH was
received first and ignored and then SIGTERM or SIGINT was received next,
the program should still be shutdown, but it wouldn't be. This is now
fixed by simply looping to continue handling subsequent signals.
Logging is now done for:
- Receiving of SIGHUP, at log level `debug`, because the default action
for that signal would be to terminate the process but that is not done
by `radicle_signals`. Someone sending that signal might want to debug
why the process isn't being terminated.
- Disconnection of the signal-notifications channel, at log level
`warn`, because, even though that should be impossible, if it somehow
occurs then a warning is warranted.
Logging is not done for receiving of SIGWINCH, because the default
action for that signal would be to ignore it, which is what
`radicle-node` does.
A wildcard pattern is not used in the match arms, so that any future
changes to the `Signal` variants will require reviewing their handling
in the "signals" thread.
Signed-off-by: Derick Eddington <kcired@pm.me>
diff --git a/radicle-node/src/runtime.rs b/radicle-node/src/runtime.rs
index dae86c082f..4ff64a1467 100644
--- a/radicle-node/src/runtime.rs
+++ b/radicle-node/src/runtime.rs
@@ -289,10 +289,21 @@ impl Runtime {
let handle = self.handle.clone();
|| control::listen(self.control, handle)
});
- let _signals = thread::spawn(&self.id, "signals", move || {
- if let Ok(Signal::Terminate | Signal::Interrupt) = self.signals.recv() {
- log::info!(target: "node", "Termination signal received; shutting down..");
- self.handle.shutdown().ok();
+ let _signals = thread::spawn(&self.id, "signals", move || loop {
+ match self.signals.recv() {
+ Ok(Signal::Terminate | Signal::Interrupt) => {
+ log::info!(target: "node", "Termination signal received; shutting down..");
+ self.handle.shutdown().ok();
+ break;
+ }
+ Ok(Signal::Hangup) => {
+ log::debug!(target: "node", "Ignoring received SIGHUP");
+ }
+ Ok(Signal::WindowChanged) => {}
+ Err(_) => {
+ log::warn!(target: "node", "Signal-notifications channel disconnected");
+ break;
+ }
}
});
Exit code: 0
shell: 'cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny clippy::all cargo build --all-targets --workspace cargo doc --workspace cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name 10af8c5d-af8b-4c2a-aa72-89344d6f50ee -v /opt/radcis/ci.rad.levitte.org/cci/state/10af8c5d-af8b-4c2a-aa72-89344d6f50ee/s:/10af8c5d-af8b-4c2a-aa72-89344d6f50ee/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/10af8c5d-af8b-4c2a-aa72-89344d6f50ee/w:/10af8c5d-af8b-4c2a-aa72-89344d6f50ee/w -w /10af8c5d-af8b-4c2a-aa72-89344d6f50ee/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:trixie bash /10af8c5d-af8b-4c2a-aa72-89344d6f50ee/s/script.sh
+ cargo --version
info: syncing channel updates for '1.77-x86_64-unknown-linux-gnu'
info: latest update on 2024-04-09, rust version 1.77.2 (25ef9e3d8 2024-04-09)
info: downloading component 'cargo'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: installing component 'cargo'
info: installing component 'rust-std'
info: installing component 'rustc'
cargo 1.77.2 (e52e36006 2024-03-26)
+ rustc --version
rustc 1.77.2 (25ef9e3d8 2024-04-09)
+ cargo fmt --check
error: 'cargo-fmt' is not installed for the toolchain '1.77-x86_64-unknown-linux-gnu'.
To install, run `rustup component add --toolchain 1.77-x86_64-unknown-linux-gnu rustfmt`
Exit code: 1
{
"response": "finished",
"result": "failure"
}