Skip to content

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Jan 19, 2026

Bumps com.cedarsoftware:java-util from 4.81.0 to 4.83.0.

Changelog

Sourced from com.cedarsoftware:java-util's changelog.

4.83.0 - 2025-01-18

  • PERFORMANCE: LRUCache (THREADED strategy) - Major performance improvements reducing overhead from ~5x to ~1.4x vs ConcurrentHashMap
    • Replaced System.nanoTime() with logical clock (AtomicLong counter) for LRU ordering - ~5ns vs ~25ns per operation
    • Simplified probabilistic timestamp updates using timestamp low bits - eliminates atomic/ThreadLocal operations on most accesses
    • Removed extra get() call in put() since Node creation is now cheap with logical clock
    • Added amortized eviction (batch every 16 inserts) to spread eviction cost across operations
  • BUG FIX: LRUCache - Fixed hard cap enforcement to guarantee memory bounds under high-throughput scenarios
    • Split eviction into tryEvict() (skippable) and forceEvict() (blocks until complete)
    • Hard cap (2x capacity) now uses LockSupport.parkNanos(1000) for efficient spinning with low CPU usage
    • Fixes issue where rapid inserts could exceed memory bounds when eviction couldn't keep up
  • CHANGE: CaseInsensitiveMap - Default cache changed from ConcurrentHashMap to LRUCache (THREADED strategy)
    • Provides true LRU eviction (hot entries preserved) vs random eviction with ConcurrentHashMap
    • Guarantees bounded memory (max 2x capacity) vs loose bounds with ConcurrentHashMap
    • Performance is equivalent or better in benchmarks
    • Users can still use replaceCache() to configure ConcurrentHashMap if desired

4.82.0 - 2025-01-17

  • BUG FIX: TypeUtilities - Fixed WildcardType bounds array mutation bug
    • External WildcardType implementations return internal arrays from getUpperBounds()/getLowerBounds()
    • These arrays were being modified in-place during resolution, corrupting the original type
    • Fix: Clone arrays from external implementations before modification; skip cloning for internal WildcardTypeImpl
  • BUG FIX: TypeUtilities - Fixed unsafe cast for method-level TypeVariables
    • TypeVariable can be declared on Method or Constructor, not just Class
    • Casting getGenericDeclaration() to Class would throw ClassCastException for method-level type variables
    • Fix: Check declaration type and return first bound for non-class type variables
  • PERFORMANCE: TypeUtilities - Added array class cache to avoid repeated Array.newInstance() allocations in getRawClass()
  • PERFORMANCE: TypeUtilities - Use IdentitySet instead of HashSet for cycle detection (reference equality is sufficient and faster)
  • IMPROVED: TypeUtilities - Simplified hashCode() implementations using standard 31 * result pattern instead of EncryptionUtilities.finalizeHash()
  • IMPROVED: TypeUtilities.WildcardTypeImpl - Constructor now takes ownership of arrays without cloning (internal class only)
  • IMPROVED: DeepEquals - Fixed Javadoc formatting using {@code} blocks for proper HTML rendering of generic types
  • DEPRECATED: LRUCache(int capacity, int cleanupDelayMillis) - The cleanupDelayMillis parameter is no longer used; use LRUCache(int) instead
  • BUILD: Added @SuppressWarnings annotations to eliminate compile warnings across multiple classes:
    • CaseInsensitiveMap, ClassUtilities, ConcurrentNavigableSetNullSafe, ConcurrentSet
    • MultiKeyMap, ReflectionUtils, TTLCache, UrlUtilities, MapConversions
  • BUILD: Removed unused regex timeout methods from DateUtilities
  • BUILD: Cleaned up unused code in ObjectConversions
  • PERFORMANCE: MultiKeyMap - Significant hot path optimizations using Class identity checks
    • valueHashCode() - Reordered type checks to handle Integer/Long/Double first; uses Class identity (==) instead of instanceof for common types (55% CPU reduction in JFR profiling)
    • computeElementHash() - Added Class identity fast path for String/Integer/Long/Double, skipping 4+ instanceof checks for 75% of typical key elements
    • flattenKey() - Added fast path at method entry for String/Integer/Long/Double keys
    • flattenObjectArrayN() - Skip array/collection checks for known simple types
    • isArrayOrCollection() - Added Class identity short-circuit for common simple types
    • Result: Cedar MultiKeyMap win rate vs Apache Commons Collections improved from ~60% to ~71% in performance benchmarks, while providing thread-safety, null key/value support, unlimited key count, and value-based numeric equality that Apache lacks
  • PERFORMANCE: ClassValueSet - Optimized with Class identity checks
    • contains() and remove() now use o.getClass() == Class.class instead of instanceof
    • clear() no longer creates unnecessary HashSet copy before invalidating cache
  • NEW: IdentitySet<T> - High-performance generic Set using object identity (==) instead of equals()
    • Lightweight replacement for Collections.newSetFromMap(new IdentityHashMap<>())
    • Extends AbstractSet<T> and implements full Set<T> interface including iterator()
    • Uses open addressing with linear probing for excellent cache locality

... (truncated)

Commits
  • 357a0aa Update version references and temporarily exclude test
  • 1d9af20 Use resetCacheToDefault() in test cleanup methods
  • 8322996 Optimize LRUCache performance and make it default for CaseInsensitiveMap
  • e719110 Change BigInteger/BigDecimal to Map to store string values
  • 9881be0 Fix Atomic → Map to store primitive values, not wrappers
  • 1d3d8e0 Add comprehensive BitSet conversions to Converter
  • f5537bc Remove json-io round-trip skips for BitSet, AtomicIntegerArray, AtomicLongArr...
  • 18bc60b Enhance Enum conversions and improve EnumSet handling in Converter
  • e4042f5 Fix flaky test: increase buffer for concurrent cache measurement race
  • e6681d6 Release 4.82.0 - Update version numbers and release date
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [com.cedarsoftware:java-util](https://github.com/jdereg/java-util) from 4.81.0 to 4.83.0.
- [Changelog](https://github.com/jdereg/java-util/blob/master/changelog.md)
- [Commits](jdereg/java-util@4.81.0...v4.83.0)

---
updated-dependencies:
- dependency-name: com.cedarsoftware:java-util
  dependency-version: 4.83.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file java Pull requests that update Java code labels Jan 19, 2026
@github-actions
Copy link
Contributor

🌟 Thank you for your contribution to the Apache Camel project! 🌟

🤖 CI automation will test this PR automatically.

🐫 Apache Camel Committers, please review the following items:

  • First-time contributors require MANUAL approval for the GitHub Actions to run

  • You can use the command /component-test (camel-)component-name1 (camel-)component-name2.. to request a test from the test bot.

  • You can label PRs using build-all, build-dependents, skip-tests and test-dependents to fine-tune the checks executed by this PR.

  • Build and test logs are available in the Summary page. Only Apache Camel committers have access to the summary.

  • ⚠️ Be careful when sharing logs. Review their contents before sharing them publicly.

@oscerd oscerd merged commit 7615fbc into main Jan 19, 2026
5 checks passed
@dependabot dependabot bot deleted the dependabot/maven/com.cedarsoftware-java-util-4.83.0 branch January 19, 2026 08:42
Croway pushed a commit to Croway/camel that referenced this pull request Jan 19, 2026
…pache#20894)

Bumps [com.cedarsoftware:java-util](https://github.com/jdereg/java-util) from 4.81.0 to 4.83.0.
- [Changelog](https://github.com/jdereg/java-util/blob/master/changelog.md)
- [Commits](jdereg/java-util@4.81.0...v4.83.0)

---
updated-dependencies:
- dependency-name: com.cedarsoftware:java-util
  dependency-version: 4.83.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Croway pushed a commit that referenced this pull request Jan 19, 2026
…20894)

Bumps [com.cedarsoftware:java-util](https://github.com/jdereg/java-util) from 4.81.0 to 4.83.0.
- [Changelog](https://github.com/jdereg/java-util/blob/master/changelog.md)
- [Commits](jdereg/java-util@4.81.0...v4.83.0)

---
updated-dependencies:
- dependency-name: com.cedarsoftware:java-util
  dependency-version: 4.83.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

camel-4 core-build-and-dependencies dependencies Pull requests that update a dependency file java Pull requests that update Java code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant