Skip to content

Stop reporting a closed console as a user abort, and shield the host's own work - #172

Merged
MickLesk merged 1 commit into
mainfrom
fix/hangup-followups
Oct 27, 2026
Merged

MickLesk merged 1 commit into
mainfrom
fix/hangup-followups

Conversation

@MickLesk

Copy link
Copy Markdown
Member

✍️ Description

The telemetry service decides what a user abort is by searching the log text for sigint, ctrl+c, sighup and a few phrases. Our hangup message said SIGHUP, so every run that lost its console was filed as "the operator pressed Ctrl-C": of 300 aborted records in the thirteen hours after the fix shipped, 81 were this message. Twenty of those were real failures -- apt errors, containers that would not start -- which left the failure rate understated and the bugs invisible. The message now says the terminal closed, and a test keeps every hangup message clear of the words the classifier reads.

The shield that kept apt and npm alive only covered commands run through silent(). pct create and the four pveam download calls run bare on the host, so a console closed during the template download still killed the run with 129. They go through the same helper now, which is named for what it does rather than for silent().

🔗 Related Issue

Fixes #

✅ Prerequisites (X in brackets)

  • Self-review completed – Code follows project standards.
  • Tested thoroughly – Changes work as expected (Proxmox VE and/or Incus, as applicable).
  • No security risks – No hardcoded secrets, unnecessary privilege escalations, or permission issues.
  • API.txt regenerated – If a function signature or behavior changed, API.txt was updated to match.

🤖 AI Assistance (X in brackets)

If you used an AI tool (GitHub Copilot, Claude, ChatGPT, etc.) to write or generate any code in this PR, you must confirm compliance below.
Select exactly one option.

  • No AI used – Code was written without AI assistance.
  • AI was used – The output has been reviewed and corrected, and I take responsibility for it matching this repo's conventions.

🛠️ Type of Change (X in brackets)

  • 🐞 Bug fix – Resolves an issue without breaking functionality.
  • ✨ New feature – Adds new, non-breaking functionality.
  • 💥 Breaking change – Alters existing behavior in a way that may require updates in every downstream script.
  • 🔧 Refactoring / Code Cleanup – Improves readability or maintainability without changing functionality.
  • 📝 Documentation update – Changes to README, docs/, CONTRIBUTING.md, or other docs.

…s own work

The telemetry service decides what a user abort is by searching the log
text for sigint, ctrl+c, sighup and a few phrases. Our hangup message
said SIGHUP, so every run that lost its console was filed as "the
operator pressed Ctrl-C": of 300 aborted records in the thirteen hours
after the fix shipped, 81 were this message. Twenty of those were real
failures -- apt errors, containers that would not start -- which left
the failure rate understated and the bugs invisible. The message now
says the terminal closed, and a test keeps every hangup message clear of
the words the classifier reads.

The shield that kept apt and npm alive only covered commands run through
silent(). pct create and the four pveam download calls run bare on the
host, so a console closed during the template download still killed the
run with 129. They go through the same helper now, which is named for
what it does rather than for silent().
@github-actions

Copy link
Copy Markdown
Contributor

Try this branch

The engine and the scripts resolve independently, so a production script can
be run against the engine from this PR by setting one variable:

COMMUNITY_SCRIPTS_CORE_URL=https://raw.githubusercontent.com/community-scripts/core/fix/hangup-followups \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/debian.sh)"

Swap ct/debian.sh for whatever exercises the change.

This PR touches both backends. Worth running on a Proxmox VE and an Incus host.

Run a script from a fork as well
curl -fsSL https://raw.githubusercontent.com/community-scripts/core/fix/hangup-followups/tools/run.sh |
  bash -s -- https://raw.githubusercontent.com/YOU/DevScripts/your-branch ct/debian.sh \
             https://raw.githubusercontent.com/community-scripts/core/fix/hangup-followups

Note that run.sh is reached through a pipe, so the script it starts inherits
an exhausted stdin. Whiptail is fine — it opens /dev/tty — but a plain read
would see EOF. The single-variable form above does not have that problem.

Useful flags while testing

dev_mode=net logs every engine fetch with status and duration, which is the
quickest way to confirm the branch is really being used. dev_mode=keep stops a
failed build from deleting the container along with the evidence.

@MickLesk
MickLesk merged commit e5b84a2 into main Oct 27, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant