Skip to content

FOUR-32319: Prevent publishing unchanged bundle versions#8926

Open
eiresendez wants to merge 1 commit into
developfrom
bugfix/FOUR-32319
Open

FOUR-32319: Prevent publishing unchanged bundle versions#8926
eiresendez wants to merge 1 commit into
developfrom
bugfix/FOUR-32319

Conversation

@eiresendez

@eiresendez eiresendez commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Issue & Reproduction Steps

Publishing a new DevLink Bundle version currently increments the version unconditionally, even when its exportable assets and settings have not changed.

To reproduce:

  1. Create and publish a DevLink Bundle.
  2. Return to the Bundle without adding, removing, or modifying any content.
  3. Click "Publish New Version" and confirm the action.
  4. Observe that an identical version is created and connected instances are notified.

Solution

  • Added a deterministic fingerprint for the Bundle's exportable assets, settings, and exported payloads.
  • Reject unchanged publications with a 422 warning without incrementing the version or sending webhooks.
  • Added backward-compatible handling for Bundle setting configurations stored as arrays, JSON strings, or null.
  • Serialized publication and supported Bundle membership mutations using a Bundle row lock.
  • Preserved a one-time baseline publication for legacy Bundles without a stored fingerprint.
  • Updated the DevLink UI to keep the confirmation modal open and display the backend warning when there are no changes.

How to Test

  1. Create a new Bundle and attempt to publish it without changes; verify that a warning is displayed and its version remains unchanged.
  2. Add or modify an asset or setting and publish; verify that the version increments exactly once and connected instances are notified once.
  3. Publish the same content again; verify that the request returns 422, the version does not change, and no additional notification is sent.
  4. Verify that settings stored as JSON objects and historical JSON strings can be fingerprinted and published without a server error.
  5. Verify that a legacy Bundle with a null fingerprint can publish once to establish its baseline and that an identical second attempt is rejected.
  6. Verify that simultaneous publication attempts result in one successful increment and one unchanged-content validation response.

Automated verification:

  • Focused PHPUnit suites: 25 tests, 87 assertions passing.
  • Multiprocess MySQL concurrency regression passing.
  • npm run development compiled successfully.
  • PHP syntax and diff whitespace checks passing.

Related Tickets & Packages

ci:deploy

@eiresendez eiresendez self-assigned this Jul 22, 2026
@processmaker-sonarqube

Copy link
Copy Markdown

@vladyrichter

Copy link
Copy Markdown

QA server K8S was successfully deployed https://ci-11b840d223.engk8s.processmaker.net

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.

2 participants