Skip to content

Manage JC compression on cluster update - #1258

Open
Hamdy-khader wants to merge 2 commits into
mainfrom
main-comp-susp-on-update
Open

Manage JC compression on cluster update #1258
Hamdy-khader wants to merge 2 commits into
mainfrom
main-comp-susp-on-update

Conversation

@Hamdy-khader

Copy link
Copy Markdown
Collaborator

What has changed:

  • fix(cluster_ops): suspend JC compression on leader nodes during cluster update
  • fix(cluster_ops): ensure all storage nodes are online and updated before resuming JC compression

schmidt-scaled pushed a commit that referenced this pull request Aug 20, 2026
…d across cluster update

Rewrite of PR #1258 per the agreed design:

* New simplyblock_core/release_upgrades/ package: a thin registry of
  release-specific upgrade plug-ins (mandatory to_release, optional
  from_release). update_cluster runs their pre_update step as its very
  first action; a new 'sbctl cluster upgrade-complete' command runs their
  completion step and stamps cluster.installed_release.

* jc_compression_upgrade plugin (ships with 19.3, DELETE next release):
  pre_update refuses unless every storage node is ONLINE (before touching
  anything), suspends JC compression on every member of every LVS group
  (primary/secondary/tertiary), waits for running compression to drain
  per member (rolls back and aborts on timeout), then persists a hold
  flag in cluster.release_upgrade_state.

* While the hold is set, every JC resume path is a no-op via one-line
  resume_is_held guards (restart recreate, create_lvstore, jc_comp task
  runner, migration runner, lvol monitor, cluster_activate), so node
  restarts during the roll never re-activate compression.

* upgrade-complete clears the hold and resumes compression on every LVS
  group member; members with active node tasks (data migration) get a
  FN_JC_COMP_RESUME task instead, preserving the resume-only-after-
  migration behavior.

Unlike PR #1258 this keeps the normal restart-path inline resume for
non-upgrade restarts, drops the fragile cluster-wide spdk_version
equality gate, fails the upgrade cleanly before suspending anything if a
node is offline, and isolates all release-specific code for removal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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