We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
docs: update rate limit metric names from locksmith.ratelimit to locksmith.rate.limit Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs: fix wiki issues — link casing, version ref, RateLimitConfigurationException, migration risk - Fix WikiSpelExamplesTest link text to match actual filename WikiSpELExamplesTest.java - Update Troubleshooting version reference from v2.1+ to v3.0+ - Add RateLimitConfigurationException troubleshooting section covering invalid permits/interval and cross-deployment config mismatches - Document transition window risk when changing semaphore permit counts in both Distributed-Semaphores and Troubleshooting pages Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs: update wiki for v3.0.3 release - Bump versions to Locksmith 3.0.3, Redisson 4.3.0, Spring Boot 4.0.3 - Fix SpEL key syntax in annotation reference (use #{#orderId}) - Clarify RateType is from Redisson, not Locksmith - Add RateLimitConfigurationException documentation - Fix Auto-Renew page title formatting - Add semaphore lease expiration detection section - Update skip handlers and metrics docs to include rate limit - Simplify configuration validation description
docs: update wiki for builder-only template API with try-with-resources Update Programmatic-Templates and Micrometer-Metrics pages to reflect the new builder-only API: withKey() entry point, LockHandle/PermitHandle for try-with-resources, and removal of simple methods (tryLock, forKey, executeWithLock, tryAcquirePermit, executeWithPermit, executeWithRateLimit).
docs: fix debug log format and autoRenew onLeaseExpired description - Update Troubleshooting debug log examples to match actual code output (INFO level, includes type/mode/leaseTime/waitTime fields) - Clarify that autoRenew only warns for THROW_EXCEPTION, not the default LOG_WARNING which is silently ignored - Fix debug log examples in Auto-Renew-Lease-Time page
docs: update wiki for v3.0.0 release Update all version references from 2.1.0 to 3.0.0 and Redisson from 4.1.0 to 4.2.0. Add v3.0.x to compatibility matrix. Update verification log output to match actual format. Add v2.x to v3.0 migration guide covering new @RateLimit annotation and rate-limit properties. Fix AcquisitionMode description to include @RateLimit.
fixed documentation
Updated Documentation
fix: update Spring Boot version to 4.0.2 in example pom.xml
fix: restore Maven POM schema version to 4.0.0
docs: add rate limiting documentation for v2.1.0 - Add new Rate-Limiting.md with comprehensive @RateLimit documentation - Update Home.md with rate limiting overview and quick examples - Update Installation.md with v2.1.0 and Redisson 4.1.0 versions - Update Configuration.md with rate-limit properties and enabled flags - Update Annotation-Reference.md with @RateLimit, RateType, RateLimitContext - Update Skip-Handlers.md with rate limit handlers section - Update Programmatic-Templates.md with LocksmithRateLimitTemplate - Update Micrometer-Metrics.md with rate limit metrics - Update Troubleshooting.md with rate limit issues section - Update Lock-Acquisition-Modes.md to include rate limits - Update Dynamic-Keys-with-SpEL.md with rate limit examples - Update High-Concurrency-Best-Practices.md to mention rate limiters
docs: add Micrometer metrics integration documentation
docs: add Programmatic Templates documentation Add wiki page for LocksmithLockTemplate and LocksmithSemaphoreTemplate programmatic API for distributed locks and semaphores. Features documented: - Simple tryLock/unlock and tryAcquirePermit/releasePermit methods - Callback pattern with executeWithLock/executeWithPermit - Builder API for custom wait time, lease time, lock types - Auto-renewal support for locks - Comparison between annotations and templates Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add High Concurrency Best Practices
feat: add support for Optional in default return values and update README
docs: add Spring bean dependency injection support for skip handlers - Update Skip-Handlers.md with new Spring Bean Integration section - Document handler resolution order: Spring bean lookup first, reflection fallback - Add examples for @Component handlers with constructor injection - Update Annotation-Reference.md skipHandler sections for both locks and semaphores - Remove outdated "Current Limitation" note about reflection-only instantiation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updated documentation for semaphore context permit id
Updated documentation
Fix outdated config in Lock-Acquisition-Modes.md Update wait-time configuration to use new nested structure (locksmith.lock.wait-time and locksmith.semaphore.wait-time)
Rename LockAcquisitionMode to AcquisitionMode The enum is now simply called AcquisitionMode since it's used by both @DistributedLock and @DistributedSemaphore annotations.
Updated _Footer (markdown)
Created _Footer (markdown)
Add distributed semaphore support and update wiki structure - Update Home.md to be an overview page with links to both lock and semaphore docs - Rename Basic-Usage.md to Distributed-Locks.md with enhanced content - Create Distributed-Semaphores.md with comprehensive semaphore documentation - Update Configuration.md with new nested structure (locksmith.lock.*/semaphore.*) - Update Installation.md with v2.0.0 and migration guide - Update Annotation-Reference.md with @DistributedSemaphore annotation - Update Skip-Handlers.md with semaphore handlers (SemaphoreSkipHandler, SemaphoreContext) - Update Troubleshooting.md with semaphore-specific issues Breaking changes documented: - Configuration now uses locksmith.lock.* and locksmith.semaphore.* prefixes - Previous locksmith.lease-time now locksmith.lock.lease-time
Update all wiki pages with correct SpEL syntax and remove emojis - Update Home.md, Basic-Usage.md, Annotation-Reference.md, Lock-Types.md with #{...} wrapper - Remove emojis from Dynamic-Keys-with-SpEL.md and Lock-Types.md - All SpEL expressions now correctly show #{#param} syntax - Literal keys examples clarified
Remove emojis from Troubleshooting guide
Update Troubleshooting guide for v1.4.3+ SpEL syntax - Update all SpEL examples to use #{...} wrapper syntax - Add clarification about literal keys vs SpEL expressions - Rewrite "Forgetting SpEL quotes" section to explain #{...} requirement - Add documentation for onLeaseExpired behavior options - Add Read/Write lock troubleshooting section - Add version note at the top of the guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated Dynamic Keys with SpEL (markdown)
Add WikiSpelExamplesTest reference to SpEL documentation - Add new "Test Examples" section before "Next Steps" - Link to WikiSpelExamplesTest.java in main branch - List all SpEL features demonstrated in the test file - Provide comprehensive reference for developers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update SpEL documentation to require #{} syntax - Add prominent warning about #{} syntax requirement - Update all code examples to use #{...} wrapper - Add comparison table showing SpEL vs literal keys - Add section on literal keys with # character - Add migration guide for upgrading from old syntax - Add parameter-by-position examples (#p0, #a0) - Add more conditional expression examples - Clarify benefits of new syntax Fixes #13 - Literal keys with # now work correctly 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add comprehensive wiki documentation