feat: slskd reconnect guard in downloaders_reset, mass v2 sync
- downloaders_reset: connection check block before slskd API sections; triggers PUT /api/v0/server reconnect if disconnected, polls 60s, gates Stuck Searches and Dead Transfer Records on SLSKD_CONNECTED - Sync all modified/new/deleted files from v2 refactor across Docker_Essentials, Media, Monitors, Partnership, Rsync, Tools, Transcodes, unRAID_Essentials, common.sh, master confs, and new Manual/README docs
This commit is contained in:
@@ -2,37 +2,116 @@
|
||||
# ==============================================================================================
|
||||
# ============================= Docker Container Stop ==========================================
|
||||
# ==============================================================================================
|
||||
# Stops all running Docker containers one at a time, verifying each is stopped before
|
||||
# moving to the next. Called by array_stopping.sh as part of a planned shutdown sequence.
|
||||
#
|
||||
# ── STOP SEQUENCE PER CONTAINER ──────────────────────────────────────────────────────────────
|
||||
# 1. docker stop -t 30 (SIGTERM + 30s grace period — docker sends SIGKILL if needed)
|
||||
# 2. Verify stopped — if still running, retry up to RETRY_COUNT times
|
||||
# 3. docker kill (SIGKILL) if all retries exhausted
|
||||
# 4. Final verify — error if still running after force-kill
|
||||
# Never moves to the next container until the current one is confirmed stopped.
|
||||
# PURPOSE
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Gracefully stops all running Docker containers in a verified sequential order.
|
||||
#
|
||||
# ── WHY SEQUENTIAL ────────────────────────────────────────────────────────────────────────────
|
||||
# Containers may have dependencies — stopping one at a time avoids abruptly severing a
|
||||
# service while its dependents are still running and trying to use it.
|
||||
# Called by array_stopping.sh during planned shutdowns, maintenance windows,
|
||||
# and controlled reboot operations.
|
||||
#
|
||||
# ── SAFEGUARDS ────────────────────────────────────────────────────────────────────────────────
|
||||
# Root check — docker requires root
|
||||
# Per-container verify — confirmed stopped before proceeding to next
|
||||
# Retry loop — RETRY_COUNT attempts before escalating to force-kill
|
||||
# SIGTERM → SIGKILL — graceful then forced, never skips graceful
|
||||
# DOCKER_TIMEOUT — all docker calls protected against hung daemon
|
||||
# notify on failures — alert if any container cannot be stopped
|
||||
# The script guarantees each container is fully stopped before moving to the
|
||||
# next one — preventing dependency breakage, partial shutdown states, and
|
||||
# abrupt service termination cascades.
|
||||
#
|
||||
# ── CONFIGURATION (master.conf) ───────────────────────────────────────────────────────────────
|
||||
# RETRY_COUNT — retry attempts before force-kill (default 3)
|
||||
# SLEEP — seconds between retries
|
||||
# ==============================================================================================
|
||||
# OPERATIONAL MODEL
|
||||
# ==============================================================================================
|
||||
#
|
||||
# Shutdown is processed one container at a time:
|
||||
#
|
||||
# 1. docker stop -t 30
|
||||
# → sends SIGTERM with graceful shutdown window
|
||||
#
|
||||
# 2. Verify container state
|
||||
# → confirm container fully stopped before continuing
|
||||
#
|
||||
# 3. Retry if still running
|
||||
# → up to RETRY_COUNT attempts
|
||||
#
|
||||
# 4. Escalate to docker kill
|
||||
# → SIGKILL only after graceful attempts exhausted
|
||||
#
|
||||
# 5. Final verification
|
||||
# → failure notification if container survives SIGKILL
|
||||
#
|
||||
# The script NEVER advances to the next container until the current one
|
||||
# is confirmed stopped or declared failed.
|
||||
#
|
||||
# ==============================================================================================
|
||||
# DESIGN PRINCIPLES
|
||||
# ==============================================================================================
|
||||
#
|
||||
# Sequential Shutdown
|
||||
# Containers may depend on upstream services still being available during
|
||||
# shutdown. Sequential processing reduces dependency severance during stop.
|
||||
#
|
||||
# Graceful First, Forced Last
|
||||
# SIGTERM is always attempted before SIGKILL. The script never force-kills
|
||||
# first unless Docker itself escalates internally after timeout expiration.
|
||||
#
|
||||
# Verification Over Assumption
|
||||
# Docker command success alone is not trusted. Container state is verified
|
||||
# after every stop attempt.
|
||||
#
|
||||
# Fail Loudly
|
||||
# Containers that cannot be stopped generate notifications and non-zero exit
|
||||
# status so orchestrators know shutdown integrity was compromised.
|
||||
#
|
||||
# ==============================================================================================
|
||||
# OPERATIONAL SAFEGUARDS
|
||||
# ==============================================================================================
|
||||
#
|
||||
# Root Enforcement
|
||||
# Docker operations require root privileges.
|
||||
#
|
||||
# Docker Presence Check
|
||||
# Verifies docker binary exists before execution.
|
||||
#
|
||||
# Timeout Protection
|
||||
# All docker commands wrapped in timeout protection to prevent daemon hangs
|
||||
# from stalling shutdown indefinitely.
|
||||
#
|
||||
# Retry Escalation
|
||||
# Graceful retries occur before SIGKILL escalation.
|
||||
#
|
||||
# Per-Container Validation
|
||||
# Every container state verified before progressing to the next.
|
||||
#
|
||||
# Deterministic Ordering
|
||||
# Running container list sorted before processing for stable execution order.
|
||||
#
|
||||
# Failure Notification
|
||||
# Containers surviving SIGKILL trigger operator notification.
|
||||
#
|
||||
# ==============================================================================================
|
||||
# CONFIGURATION
|
||||
# ==============================================================================================
|
||||
#
|
||||
# master.conf
|
||||
#
|
||||
# RETRY_COUNT
|
||||
# Graceful retry attempts before force-kill escalation
|
||||
#
|
||||
# SLEEP
|
||||
# Delay in seconds between retry attempts
|
||||
#
|
||||
# ==============================================================================================
|
||||
# RUNTIME MODES
|
||||
# ==============================================================================================
|
||||
#
|
||||
# docker_container_stop.sh
|
||||
# Stop all running containers in verified sequential order
|
||||
#
|
||||
# docker_container_stop.sh --dry-run
|
||||
# Preview shutdown actions without stopping containers
|
||||
#
|
||||
# docker_container_stop.sh --status
|
||||
# Show currently running containers and configuration state
|
||||
#
|
||||
# docker_container_stop.sh --log
|
||||
# Verbose per-container execution logging
|
||||
#
|
||||
# ── USAGE ─────────────────────────────────────────────────────────────────────────────────────
|
||||
# docker_container_stop.sh — stop all running containers
|
||||
# docker_container_stop.sh --dry-run — show which containers would be stopped
|
||||
# docker_container_stop.sh --status — show running containers and exit
|
||||
# docker_container_stop.sh --log — verbose output
|
||||
# ==============================================================================================
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
Reference in New Issue
Block a user