Skip to content

feat(plugins): coordinate definition delete with the plugin lifecycle - #105

Merged
fronzec merged 2 commits into
mainfrom
feat/plugin-safe-delete
Oct 17, 2026
Merged

fronzec merged 2 commits into
mainfrom
feat/plugin-safe-delete

Conversation

@fronzec

@fronzec fronzec commented Oct 17, 2026

Copy link
Copy Markdown
Owner

style(docs): apply mdformat to plugin lifecycle docs

Formatting-only change (mdformat --wrap 100) so the following behavior
change carries a content-only docs diff.

feat(plugins): coordinate definition delete with the plugin lifecycle

DELETE /jobs/definitions/{id} now runs DynamicJobLoaderService.deleteJob
under the per-definition lifecycle lock:

  • refuse with 409 when the definition has execution history (force does
    not bypass it; disable the definition instead)
  • unload first, refusing with 409 on running executions unless force=true
  • delete parameter templates and the definition in one transaction
  • delete the JAR only after commit; a failure leaves a logged orphan JAR
    named in the audit instead of failing the request
  • audit JOB_DELETED SUCCESS only after completion, FAILURE otherwise
  • unknown ids return 404 through the global error handler

Closes #94

Formatting-only change (mdformat --wrap 100) so the following behavior
change carries a content-only docs diff.
DELETE /jobs/definitions/{id} now runs DynamicJobLoaderService.deleteJob
under the per-definition lifecycle lock:

- refuse with 409 when the definition has execution history (force does
  not bypass it; disable the definition instead)
- unload first, refusing with 409 on running executions unless force=true
- delete parameter templates and the definition in one transaction
- delete the JAR only after commit; a failure leaves a logged orphan JAR
  named in the audit instead of failing the request
- audit JOB_DELETED SUCCESS only after completion, FAILURE otherwise
- unknown ids return 404 through the global error handler

Closes #94
@coderabbitai

coderabbitai Bot commented Oct 17, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 19 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 80dbbc43-8ee5-4bf7-ac9f-56bf2da7fbc3
📥 Commits

Reviewing files that changed from the base of the PR and between 746f885 and 845b5cb.

📒 Files selected for processing: 12
  • fr-batch-service/docs/ADR/001-dynamic-job-loading-system.md
  • fr-batch-service/docs/job-plugins/developer-guide.md
  • fr-batch-service/docs/production-checklist.md
  • fr-batch-service/docs/runbook.md
  • fr-batch-service/src/main/java/com/fronzec/frbatchservice/batchjobs/plugins/loader/DynamicJobLoaderService.java
  • fr-batch-service/src/main/java/com/fronzec/frbatchservice/batchjobs/plugins/loader/JobDeleteConflictException.java
  • fr-batch-service/src/main/java/com/fronzec/frbatchservice/batchjobs/plugins/repository/JobExecutionAuditRepository.java
  • fr-batch-service/src/main/java/com/fronzec/frbatchservice/web/GlobalExceptionHandler.java
  • fr-batch-service/src/main/java/com/fronzec/frbatchservice/web/JobManagementController.java
  • fr-batch-service/src/test/java/com/fronzec/frbatchservice/batchjobs/plugins/loader/DynamicJobLoaderServiceTest.java
  • fr-batch-service/src/test/java/com/fronzec/frbatchservice/batchjobs/plugins/loader/DynamicJobLoadingIntegrationTest.java
  • fr-batch-service/src/test/java/com/fronzec/frbatchservice/web/PluginManagementIntegrationTest.java
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

fronzec commented Oct 17, 2026

Copy link
Copy Markdown
Owner Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@fronzec fronzec changed the title style(docs): apply mdformat to plugin lifecycle docs feat(plugins): coordinate definition delete with the plugin lifecycle Oct 17, 2026
@fronzec
fronzec merged commit 8e06fe2 into main Oct 17, 2026
8 checks passed
@fronzec
fronzec deleted the feat/plugin-safe-delete branch October 17, 2026 01:55
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.

feat(plugin): define safe DELETE and unload semantics

1 participant