dependabot[bot] opened a new pull request, #20930:
URL: https://github.com/apache/camel/pull/20930

   Bumps [com.cedarsoftware:java-util](https://github.com/jdereg/java-util) 
from 4.83.0 to 4.84.0.
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/jdereg/java-util/blob/master/changelog.md";>com.cedarsoftware:java-util's
 changelog</a>.</em></p>
   <blockquote>
   <h4>4.84.0  - 2025-01-19</h4>
   <ul>
   <li><strong>BUG FIX</strong>: <code>ClassValueMap</code> - Fixed race 
condition in <code>putIfAbsent(null, value)</code> for null key handling
   <ul>
   <li>Previously used separate <code>volatile boolean hasNullKeyMapping</code> 
+ <code>AtomicReference&lt;V&gt; nullKeyValue</code> fields</li>
   <li>Race: thread A could see <code>hasNullKeyMapping=true</code> but read 
stale <code>nullKeyValue</code> before thread B's write completed</li>
   <li>Fix: Combined into single <code>AtomicReference&lt;Object&gt; 
nullKeyStore</code> with sentinel values (<code>NO_NULL_KEY_MAPPING</code>, 
<code>NULL_FOR_NULL_KEY</code>)</li>
   <li>Eliminates volatile read on common <code>get()</code> path - now pure 
AtomicReference.get()</li>
   </ul>
   </li>
   <li><strong>BUG FIX</strong>: <code>TTLCache</code> - Fixed thread-safety 
issue in <code>put()</code> that could corrupt LRU chain
   <ul>
   <li>Previously used <code>tryLock()</code> and skipped LRU updates if lock 
unavailable</li>
   <li>Under contention, cache map and LRU chain could become inconsistent</li>
   <li>Fix: Now acquires lock for entire put operation; moves cache map update 
inside lock</li>
   <li>Added safety check in <code>moveToTail()</code> to skip already-evicted 
nodes</li>
   </ul>
   </li>
   <li><strong>BUG FIX</strong>: <code>UniversalConversions</code> - Fixed NPE 
in bridge methods when source value is null
   <ul>
   <li><code>integerToAtomicInteger()</code>, <code>longToAtomicLong()</code>, 
<code>booleanToAtomicBoolean()</code> now return null for null input</li>
   <li>Previously threw NullPointerException on <code>new 
AtomicXxx(null)</code></li>
   </ul>
   </li>
   <li><strong>PERFORMANCE</strong>: <code>LRUCache</code> (THREADED strategy) 
- Removed unnecessary volatile from <code>Node.value</code> and 
<code>Node.timestamp</code>
   <ul>
   <li><code>value</code> is never modified after construction</li>
   <li><code>timestamp</code> is used for approximate LRU only - stale reads 
acceptable given existing approximations</li>
   <li>ConcurrentHashMap publish provides necessary memory barriers for initial 
visibility</li>
   </ul>
   </li>
   <li><strong>PERFORMANCE</strong>: <code>LRUCache</code> (LOCKING strategy) - 
GC improvements
   <ul>
   <li>Made <code>Node.key</code> final</li>
   <li>Null out <code>node.prev</code>/<code>node.next</code> links on removal 
to avoid GC nepotism</li>
   <li>Null out <code>node.value</code> on eviction to release value reference 
promptly</li>
   </ul>
   </li>
   <li><strong>PERFORMANCE</strong>: 
<code>StringUtilities.hashCodeIgnoreCase()</code> - Single-pass algorithm 
optimization
   <ul>
   <li>Previously made two passes: first to check ASCII, then to compute 
hash</li>
   <li>Now computes hash while checking for non-ASCII, falling back only when 
non-ASCII detected</li>
   </ul>
   </li>
   <li><strong>PERFORMANCE</strong>: <code>Converter</code> - Removed ~50 
redundant conversion entries now handled by surrogate system
   <ul>
   <li>Entries like <code>Byte → AtomicBoolean</code>, <code>String → 
AtomicInteger</code>, etc. are now automatic via surrogate bridges</li>
   <li>Example: <code>String → AtomicInteger</code> now goes <code>String → 
Integer → AtomicInteger</code> via surrogate system</li>
   <li>Reduces CONVERSION_DB size and maintenance burden without losing any 
functionality</li>
   </ul>
   </li>
   <li><strong>NEW</strong>: <code>Converter</code> - Added <code>Boolean ↔ 
BitSet</code> conversions
   <ul>
   <li><code>BitSet → Boolean</code>: returns <code>true</code> if any bit set, 
<code>false</code> if empty</li>
   <li><code>Boolean → BitSet</code>: <code>true</code> creates BitSet with bit 
0 set, <code>false</code> creates empty BitSet</li>
   <li>Primitive <code>boolean ↔ BitSet</code> works automatically via 
surrogate system</li>
   </ul>
   </li>
   <li><strong>IMPROVED</strong>: <code>LRUCache</code> (THREADED strategy) - 
Fixed scheduler shutdown to properly clear reference
   <ul>
   <li><code>shutdownScheduler()</code> now sets <code>scheduler = null</code> 
after shutdown to allow recreation</li>
   <li>Previously, shutdown scheduler reference remained, preventing new cache 
instances from starting cleanup</li>
   </ul>
   </li>
   <li><strong>BUILD</strong>: Updated json-io test dependency from 4.81.0 to 
4.83.0</li>
   <li><strong>BUILD</strong>: Re-enabled <code>ConverterEverythingTest</code> 
(was temporarily excluded)</li>
   <li><strong>DOCS</strong>: Updated README to reflect 1600+ conversions (was 
1000+)</li>
   </ul>
   </blockquote>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/jdereg/java-util/commit/c20abd1659c403976f54904edf84b4f1bb8cce71";><code>c20abd1</code></a>
 Release 4.84.0</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/266d36829f738773a0f0c1c152226e24ae1c1925";><code>266d368</code></a>
 Bug fixes, performance improvements, and Converter cleanup</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/db2b31a6be366b51660f19d2245921902957861c";><code>db2b31a</code></a>
 Performance: Remove volatile from CompactMap templateBytecode</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/b42d97c797f8c459b54756e6a7c23d484a9ddfcf";><code>b42d97c</code></a>
 Performance: Remove volatile from CaseInsensitiveMap cache settings</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/cb38f24d810528bf63c37755fe4e6ee9cea1de64";><code>cb38f24</code></a>
 Performance: Remove volatile from TypeUtilities.TYPE_RESOLVE_CACHE</li>
   <li>See full diff in <a 
href="https://github.com/jdereg/java-util/compare/v4.83.0...4.84.0";>compare 
view</a></li>
   </ul>
   </details>
   <br />
   
   
   [![Dependabot compatibility 
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.cedarsoftware:java-util&package-manager=maven&previous-version=4.83.0&new-version=4.84.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
   
   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-automerge-start)
   [//]: # (dependabot-automerge-end)
   
   ---
   
   <details>
   <summary>Dependabot commands and options</summary>
   <br />
   
   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)
   
   
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to