Celebration time - JobRunr Release Candidate v7.0.0-RC.0 is now available 🖥️

Are we ready to press ‘UPDATE’ button and go to celebrate?🥳

Our developers have been working hard these past months to provide you with new improved version. We would like thank all the companies that tested the beta version before this release to give you these features.

As we are about to launch the new v7.0.0 in the upcoming weeks, we want to have your input and your feedback before releasing the final version. Be the first one to try out and see if it runs smoothly for your use case. As always, your input is very important for releasing the final version.

The release candidate is now available via Maven Central and GitHub/JobRunr. Update now and explore new features in JobRunr Pro and JobRunr OSS!

👉 please be aware that we’re still in the process of updating our documentation. Thank you for your understanding.

What is new?

Pro Version:

New Features

  • Improved OpenId authentication with authorization: Add full authorization support in the dashboard based on rules #188
  • Dashboard GDPR support: Allow to redact jobs so that no confidential information (e.g. job parameters) can be leaked. #194
  • Rate Limiting: Rate Limit the amount of jobs using a ConcurrentJobRateLimiter and the SlidingTimeWindowRateLimiter #202
  • Support for Virtual Threads: Add support for Virtual Threads if on Java 21 or higher #906
  • Dashboard: Add extra columns to job tables and allow to configure columns visibility #250
  • Cursor based Job Page: Add initial support for Cursor Based Paging to support multi dashboard #212
  • InMemoryStorageProvider now allows for a pollInterval as small as 200ms (useful for testing purposes) (issue #619) #909
  • Dynamic can reserve a certain amount of the total workers using FixedSizeWorkerPoolDynamicQueuePolicy #237
  • Allow updating labels (issue #239) #251
  • Allow to delete recurring jobs automatically using a deleteAt hint #257
  • Add support for JobProgressFilter to get notified on job progress #282

Enhancements

  • BackgroundJobServer Master Tasks are now spread over multiple threads for smooth processing. #280
  • Java 8 compatibility guaranteed #882
  • Use time-based UUID’s which are better for database performance #890
  • Significantly decrease JSON size. #892
  • Improve Dynamic Queue Policy in combination with rate limiters by slowly phasing out unused dynamic queues #216
  • Refactor the StorageProvider and cleanup deprecated methods #893
  • Workflow improvement: jobs within batch jobs can now use continuations while batch jobs themselves have continuations #201
  • Workflow improvement: jobs can now continueOn success and continueOn failure or just onFailure in #260
  • Performance improvement: prevent Optimistic Locking Exceptions and use select for update skip locked if the database supports it #904:
  • Performance improvement: improved SQL indexes (thanks to the customers who where willing to share their data)
  • Support for unlimited batch jobs (issue #254) #265
  • Dashboard: batch jobs are now directly visible on the jobs page #250
  • [Micrometer] Improve Job Metrics (issue #242) #274
  • Wait for database migrations to finish before starting background job processing #266
  • Fetch all jobs SCHEDULED at the same Instant #273
  • JobRunr let’s you know when your JobFilters are too slow via a warning. #961

Fixed bugs

  • [Micronaut] Fix Bug Micronaut Integration fails if multiple servers are used #852
  • [MicroMeter] Make sure MicroMeter Job metrics is also working with Fluent configuration #207
  • Fix when moving from JobRunr OSS v4 to JobRunr Pro v6 #880
  • Refactor batch jobs to not use metadata for succeeded child jobs. (issue #217)
  • Fix bug inMigrateFromV5toV6Task related RecurringJobs migration #238
  • Allow to gracefully stop the BackgroundJobServer #272
  • Fix enqueueOrReplace and scheduleOrReplace now update server tags (issue #164) #267

Breaking changes

  • Drop support for StorageProviders still in Beta (e.g., ElasticSearchStorageProvider, JedisStorageProvider, etc.)
  • @Recurring has been moved to core org.jobrunr.jobs.annotation.Recurring
  • JobScheduler.delete(String id) has been renamed to JobScheduler.deleteRecurringJob(String id)
  • The interface StorageProvider has been updated
  • Page and PageRequest have been updated
  • Overall BatchJobs logic has been rewritten, make sure MigrateFromV6toV7Task is run

OSS version:

New features

  • JobRunr now has builtin support for Virtual Threads! They are enabled by default for JDK 21 and higher. PR #906
  • InMemoryStorageProvider now allows for a pollInterval as small as 200ms (useful for testing purposes). Issue #619, PR #909

Enhancements

  • Use Time-based UUID’s as ID’s for jobs instead of UUID.randomUUID() for lower disk usage in databases, issue #891, PR #890
  • Significantly decrease JSON size, PR #892
  • Reduce load on database by reducing the amount of ConcurrentModificationExceptions. #904
  • BackgroundJobServer Master Tasks are now spread over multiple threads for smooth processing. #954
  • JobRunr let’s you know when your JobFilters are too slow via a warning. #961
  • [Quarkus] Separate build time and runtime configuration. PR #845
  • [Quarkus] Update Quarkus related settings to ConfigMapping. PR #876
  • [Elasticsearch] Update to new Java API. Issue #499, PR #850
  • Wait for database migrations to finish before starting background job processing

Fixed bugs

  • Make database migrations work on WildFly, PR #883
  • Fix Bug ApplyStateFilter is called before save resulting in multiple calls to onStateApplied., issue #902, PR #903
  • [Quarkus] As a workaround to issue #887, JobRunr will now first look Jackson capabilities and use it when available. PR #913.
  • Fix Bug JobServerFilter.onProcessingFailed is not called when a job orphans (e.g. if background job server dies). Issue #920, PR #921
  • Fix Bug IllegalStateException: Can not find variable 3 in stack. Issue #942, PRs #941, #945
  • [Micronaut] Fix Bug Integration with Micronaut fails when multiple servers are started. Issue #847, PR #852
  • Fix Bug CronExpression.validateSchedule() does not correctly check for interval size. Issue #858, PR #859

Misc

Breaking changes

  • @Recurring has been moved to core org.jobrunr.jobs.annotation.Recurring
  • JobScheduler.delete(String id) has been renamed to JobScheduler.deleteRecurringJob(String id)
  • The StorageProvider has been updated
  • Page and PageRequest have been updated

Contributors

We thank the following contributors for their help with JobRunr v7!

Try it out now and let us know your feedback! Your input is very important, so we can provide you smooth v7.0.0 JobRunr!

Best,
Friends of developers
The JobRunr Team