Skip to content

Conversation

@Hell1213
Copy link
Contributor

@Hell1213 Hell1213 commented Jan 6, 2026

The current job queue was volatile and jobs would be lost on backend restarts. This implements a bbolt-based persistent queue that stores jobs to disk and restores them on startup. Also added a cron-based maintenance worker that automatically cleans up old completed and failed job logs to prevent unbounded disk usage. All existing functionality is preserved and the new features are fully configurable via environment variables.

Description

Added persistent job queue using bbolt database to store jobs on disk. Jobs now survive backend restarts and are automatically restored on startup. Implemented maintenance worker with cron scheduler to clean up old job logs and prevent disk usage issues.

Checklist

  • Ran npx prettier --write . (for formatting)
  • Ran gofmt -w . (for Go backend)
  • Ran npm test (for JS/TS testing)
  • Added unit tests, if applicable
  • Verified all tests pass
  • Updated documentation, if needed

Terminal Screenshot
Screenshot from 2026-01-06 00-44-17

Additional Notes

New environment variables added for configuration:

  • CLEANUP_CRON_SCHEDULE - Schedule for maintenance worker (default: daily at midnight)
  • CLEANUP_RETENTION_DAYS - How long to keep job logs (default: 7 days)
  • QUEUE_DB_PATH - Database file location (default: /app/data/queue.db)

The implementation gracefully falls back to in-memory queue if persistent storage fails, ensuring no breaking changes.

@github-actions
Copy link

github-actions bot commented Jan 6, 2026

Thank you for opening this PR!

Before a maintainer takes a look, it would be really helpful if you could walk through your changes using GitHub's review tools.

Please take a moment to:

  • Check the "Files changed" tab
  • Leave comments on any lines for functions, comments, etc. that are important, non-obvious, or may need attention
  • Clarify decisions you made or areas you might be unsure about and/or any future updates being considered.
  • Finally, submit all the comments!

More information on how to conduct a self review:
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request

This helps make the review process smoother and gives us a clearer understanding of your thought process.

Once you've added your self-review, we'll continue from our side. Thank you!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added required dependencies for bbolt and cron

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added required dependencies for bbolt and cron

Copy link
Contributor Author

@Hell1213 Hell1213 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR solves the job persistence issue cleanly. Jobs were getting lost on backend restarts, now they're saved to disk with bbolt and restored automatically. Added a maintenance worker to clean up old logs so disk doesn't fill up. Everything is configurable and backward compatible - existing code keeps working even if the database fails. Tested live and confirmed jobs survive restarts.

@Hell1213
Copy link
Contributor Author

Hell1213 commented Jan 6, 2026

hey @its-me-abhishek , PR is ready for Review , open to any further changes required.

@its-me-abhishek
Copy link
Collaborator

@Hell1213, the implementation looks great. will review it once locally first and then here.

@Hell1213
Copy link
Contributor Author

Hell1213 commented Jan 12, 2026

Hey @its-me-abhishek, should we keep Go 1.23 or downgrade bbolt to v1.3.7 (works with Go 1.19)? The Go 1.23 bump is because bbolt v1.4.3 requires it - the link you mentioned in the issue points to use bbolt v1.4.3.

The current job queue was volatile and jobs would be lost on backend restarts.
This implements a bbolt-based persistent queue that stores jobs to disk and
restores them on startup. Also added a cron-based maintenance worker that
automatically cleans up old completed and failed job logs to prevent unbounded
disk usage. All existing functionality is preserved and the new features are
fully configurable via environment variables.

Resolves CCExtractor#367
@Hell1213 Hell1213 force-pushed the feat/persistent-job-queue-maintenance-worker branch from 95da0ee to de09939 Compare January 15, 2026 06:27
@Hell1213
Copy link
Contributor Author

Hell1213 commented Jan 15, 2026

hey @its-me-abhishek ,
I have downgraded bbolt to v1.3.7 to keep Go 1.19 consistent with the main app. Also added cron schedule comments,
pls take a look when you got time .

@Hell1213
Copy link
Contributor Author

hey @its-me-abhishek ,pls check the pr ,its ready I have implemented those changes as requested

@its-me-abhishek
Copy link
Collaborator

@Hell1213 there seems to be some misunderstanding, please do add those updated creds to
production/example.backend.env and the related Docs to production/README along with their default values. Since that is the ideal way to run the backend.

Additionally, just checked that this PR will probably require to update the Kubernetes config, as well, in order to keep that working

@Hell1213
Copy link
Contributor Author

@Hell1213 there seems to be some misunderstanding, please do add those updated creds to production/example.backend.env and the related Docs to production/README along with their default values. Since that is the ideal way to run the backend.

Additionally, just checked that this PR will probably require to update the Kubernetes config, as well, in order to keep that working

thanks , apologies for misunderstanding ,I'm on it will make those changes as told .

Fixed job restoration to prevent duplicates and added queue environment variables to production files for Docker/Kubernetes deployments.
@Hell1213 Hell1213 force-pushed the feat/persistent-job-queue-maintenance-worker branch from 3715a97 to 546cf7c Compare January 17, 2026 19:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Persistent Job Queue & Maintenance Worker for backend

2 participants