- #2272 Don't fail on startup if LockProvider not found
- Dependency updates
- Support for multiple LockProviders
- cdi-vintage module removed
- Micronaut 3 support removed
- micronaut-jdbc built on top of Micronaut 4
- PROXY_SCHEDULER mode deprecated
- Cassandra lock provider stated to use the org.apache.cassandra driver
- Dependency updates
- Support for custome partition key for Dynamo #2128 (thanks @kumar-himans)
- Upgrade OpenSearch rest-high-level-client #2115 - Breaking change due to rest-high-level-client backward incompatibility
- Dependency updates
- Fix for Neo4j Enterprise #2099 (thanks @tle130475c)
- Dependency updates
- Dependency updates
- ElasticSearch updated to 8.15.0 containing backward incompatible change (thanks @mputz86)
- RedisLockProvider made extensible (thanks @shubhajyoti-bagchi-groww)
- Dependency updates
- #1779 Ability to rethrow unexpected exception in JdbcTemplateStorageAccessor
- Dependency updates
- #1800 Enable lower case for database type when using usingDbTime()
- #1804 Startup error with Neo4j 5.17.0
- Dependency updates
- #1800 Enable lower case for database type when using usingDbTime() (thanks @yuagu1)
- #1753 Fix SpEL for methods with parameters
- Dependency updates
- #1635 fix makeAllAssertsPass locks only once
- Dependency updates
- #1635 fix makeAllAssertsPass(false) throws NoSuchElementException
- Dependency updates
- SpannerLockProvider added (thanks @pXius)
- Dependency updates
- QuarkusRedisLockProvider supports Redis 6.2 (thanks @ricardojlrufino)
- Support Quarkus 2 Redis client (thanks @ricardojlrufino)
- Better handling of timeouts in ReactiveStreamsMongoLockProvider
- Dependency updates
- Support for Micronaut 4
- Use Merge instead of Insert for Oracle #1528 (thanks @xmojsic)
- Dependency updates
- JedisLockProvider supports extending (thanks @shotmk)
- Better behavior when locks are nested #1493
- JedisLockProvider (version 3) supports extending (thanks @shotmk)
- JedisLockProvider supports extending (thanks @shotmk)
- Ability to explicitly set database product in JdbTemplateLockProvider (thanks @metron2)
- Removed forgotten versions from BOM
- Dependency updates
- Datastore support (thanks @mmastika)
- Dependency updates
- Handle uncategorized SQL exceptions (thanks @jaam)
- Dependency updates
- Added shedlock-cdi module (supports newest CDI version)
- Dependency updates
- Uppercase in JdbcTemplateProvider (thanks @Ragin-LundF)
- Dependency updates
- Added SpEL support to @SchedulerLock name attribute (thanks @ipalbeniz)
- Dependency updates
- Work around broken Spring 6 exception translation #1272
- Insert ignore for MySQL https://github.com/lukas-krecan/ShedLock/commit/8a4ae7ad8103bb47f55d43bccf043ca261c24d7a
- Requires JDK 17
- Tested with Spring 6 (Spring Boot 3)
- Micronaut updated to 3.x.x
- R2DBC 1.x.x (still sucks)
- Spring Data 3.x.x
- Rudimentary support for CDI (tested with quarkus)
- New jOOQ lock provider
- SLF4j 2
- Deleted all deprecated code and support for old versions of libraries
- Better logging in JdbcTemplateProvider
- Dependency updates
- Deprecate old Couchbase lock provider
- Dependency updates
- Couchbase collection support (thanks @mesuutt)
- Dependency updates
- Fixed caching issues when the app is started by the DB does not exist yet (#1129)
- Dependency updates
- Introduced elasticsearch8 LockProvider and deperecated the orignal one (thanks @MarAra)
- Dependency updates
- ReactiveRedisLockProvider added (thanks @ericwcc)
- Dependency updates
- OpenSearch provider (thanks @Pinny3)
- Fix wrong reference to reactive Mongo in BOM #1048
- Dependency updates
- shedlock-bom module added
- Dependency updates
- Neo4j allows to specify database thanks @SergeyPlatonov
- Dependency updates
- Dropped support for Hazelcast <= 3 as it has unfixed vulnerability
- Dropped support for Spring Data Redis 1 as it is not supported
- Dependency updates
- memcached provider added (thanks @pinkhello)
- Dependency updates
- JDBC provider does not change autocommit attribute
- Dependency updates
- Jedis 4 lock provider
- Dependency updates
- In-memory lock provider added (thanks @kkocel)
- Dependency updates
- R2DBC support added (thanks @sokomishalov)
- Library upgrades
- Neo4j lock provider added (thanks @thimmwork)
- Library upgrades
- Ability to set transaction isolation in JdbcTemplateLockProvider
- Library upgrades
- KeepAliveLockProvider introduced
- Library upgrades
- LockExtender added
- Support for Apache Ignite (thanks @wirtsleg)
- Library upgrades
- Ability to set serialConsistencyLevel in Cassandra (thanks @DebajitKumarPhukan)
- Introduced shedlock-provider-jdbc-micronaut module (thanks @drmaas)
- Catching and logging Cassandra exception
- Support for custom keyspace in Cassandra provider
- Elastic unlock using IMMEDIATE refresh policy #422
- DB2 JDBC lock provider uses microseconds in DB time
- Various library upgrades
- Fixed DB JDBC server time #378
- Support for etcd (thanks grofoli)
- Fixed devtools compatibility #368
- Support for enhanced configuration in Cassandra provider (thanks DebajitKumarPhukan)
- LockConfigurationExtractor exposed as a Spring bean #359
- Handle CannotSerializeTransactionException #364
- Fixed Consul support for tokens and added enhanced Consul configuration (thanks DrWifey)
- Consul support for tokens
- Spring - EnableSchedulerLock.order param added to specify AOP proxy order
- JDBC - Log unexpected exceptions at ERROR level
- Hazelcast upgraded to 4.1
- Fix session leak in Consul provider #340 (thanks @haraldpusch)
- ArangoDB lock provider added (thanks @patrick-birkle)
- Support for Couchbase 3 driver (thanks @blitzenzzz)
- Removed forgotten configuration files form micronaut package (thanks @drmaas)
- Shutdown hook for Consul (thanks @kaliy)
- Support for Consul (thanks @kaliy)
- Various dependencies updated
- Deprecated default LockConfiguration constructor
- Lazy initialization of SqlStatementsSource #258
- MongoLockProvider uses mongodb-driver-sync
- Removed deprecated constructors from MongoLockProvider
- New Mongo reactive streams driver (thanks @codependent)
- Fixed JdbcTemplateLockProvider useDbTime() locking #244 thanks @gjorgievskivlatko
- Do not fail on DB type determining code if DB connection is not available
- Support for server time in DB2
- removed shedlock-provider-jdbc-internal module
- Support for server time in JdbcTemplateLockProvider
- Using custom non-null annotations
- Trimming time precision to milliseconds
- Micronaut upgraded to 1.3.4
- Add automatic DB tests for Oracle, MariaDB and MS SQL.
- DynamoDB 2 module introduced (thanks Mark Egan)
- JDBC template code refactored to not log error on failed insert in Postgres
- INSERT .. ON CONFLICT UPDATE is used for Postgres
- Make LockAssert.TestHelper public
- New module for Hazelcasts 4
- Ability to switch-off LockAssert in unit tests
- Support for Meta annotations and annotation inheritance in Spring
- Made compatible with PostgreSQL JDBC Driver 42.2.11
- Inject redis template
- ClockProvider introduced
- MongoLockProvider(MongoDatabase) introduced
- Support for non-void returning methods when PROXY_METHOD interception is used
- Introduced shedlock-provider-redis-spring-1 to make it work around Spring Data Redis 1 issue #105 (thanks @rygh4775)
- Jedis dependency upgraded to 3.2.0
- Support for JedisCluster
- Tests upgraded to JUnit 5
- Cassandra provider (thanks @mitjag)
- More configuration option for JdbcTemplateProvider
- Allow configuration of key prefix in RedisLockProvider #181 (thanks @krm1312)
- Fixed junit dependency scope #179
- Fix NPE caused by Redisson #178
- DefaultLockingTaskExecutor made reentrant #175
Version 4.0.0 is a major release changing quite a lot of stuff
net.javacrumbs.shedlock.core.SchedulerLock
has been replaced bynet.javacrumbs.shedlock.spring.annotation.SchedulerLock
. The original annotation has been in wrong module and was too complex. Please use the new annotation, the old one still works, but in few years it will be removed.- Default intercept mode changed from
PROXY_SCHEDULER
toPROXY_METHOD
. The reason is that there were a lot of issues withPROXY_SCHEDULER
(for example #168). You can still usePROXY_SCHEDULER
mode if you specify it manually. - Support for more readable duration strings
- Support for lock assertion
LockAssert.assertLocked()
- Support for Micronaut added
- Fixed bean definition configuration #171
EnableSchedulerLock.mode
renamed tointerceptMode
- Use standard Spring AOP configuration to honor Spring Boot config (supports
proxyTargetClass
flag) - Removed deprecated SpringLockableTaskSchedulerFactoryBean and related classes
- Removed support for XML configuration
- Updated dependency to Spring 2.1.9
- Support for lock extensions (beta)
- Zookeeper supports lockAtMostFor and lockAtLeastFor params
- Better debug logging
- Fixed potential deadlock in Hazelcast (thanks @HubertTatar)
- Finding class level annotation in proxy method mode (thanks @volkovs)
- ScheduledLockConfigurationBuilder deprecated
- LockProvides is initialized lazilly so it does not change DataSource initialization order
- MongoLockProvider accepts MongoCollection as a constructor param
- DynamoDBLockProvider added
- MongoLockProvider rewritten to use upsert
- ElasticsearchLockProvider added
- AOP proxy and annotation configuration support
- Can set Timezone to JdbcTemplateLock provider
- Support for Couchbase (thanks to @MoranVaisberg)
- Spring RedisLockProvider refactored to use RedisTemplate
- Support for transaction manager in JdbcTemplateLockProvider (thanks to @grmblfrz)
- Upgraded dependencies to Spring 5 and Spring Data 2
- Removed deprecated net.javacrumbs.shedlock.provider.jedis.JedisLockProvider (use net.javacrumbs.shedlock.provider.redis.jedis.JedisLockProvide instead)
- Removed deprecated SpringLockableTaskSchedulerFactory (use ScheduledLockConfigurationBuilder instead)
- ablility to clean lock cache
- shedlock-provider-redis-spring made compatible with spring-data-redis 1.x.x
- Added shedlock-provider-redis-spring (thanks to @siposr)
- shedlock-provider-jedis moved to shedlock-provider-redis-jedis
- Support for SPEL in lock name annotation
- Automatically closing TaskExecutor on Spring shutdown
- Removed spring-test from shedlock-spring compile time dependencies
- Added Automatic-Module-Names
- Hazelcast works with remote cluster
- Fixed ScheduledLockConfigurationBuilder interfaces #32
- Hazelcast code refactoring
- Support for Hazelcast (thanks to @peyo)
- Jedis constructor made more generic (thanks to @mgrzeszczak)
- Support for property placeholders in annotation lockAtMostForString/lockAtLeastForString
- Support for composed annotations
- ScheduledLockConfigurationBuilder introduced (deprecating SpringLockableTaskSchedulerFactory)
- Support for Redis (thanks to @clamey)
- Checking that lockAtMostFor is in the future
- Checking that lockAtMostFor is larger than lockAtLeastFor
- jdbc-template-provider does not participate in task transaction
- Support for @SchedulerLock annotations on proxied classes
- LockableTaskScheduler made AutoClosable so it's closed upon Spring shutdown
- Support for lockAtLeastFor
- Possible to configure defaultLockFor time so it does not have to be repeated in every annotation
- ZooKeeper nodes created under /shedlock by default
- JdbcLockProvider insert does not fail on DataIntegrityViolationException
- Extracted LockingTaskExecutor
- LockManager.executeIfNotLocked renamed to executeWithLock
- Default table name in JDBC lock providers
@ShedlulerLock.name
made obligatory@ShedlulerLock.lockForMillis
renamed to lockAtMostFor- Adding plain JDBC LockProvider
- Adding ZooKeepr LockProvider