Bug 1243671
| Summary: | Null is returned for a not expired entry in Hot Rod client | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [JBoss] JBoss Data Grid 6 | Reporter: | Osamu Nagano <onagano> | ||||
| Component: | Infinispan | Assignee: | William Burns <wburns> | ||||
| Status: | CLOSED UPSTREAM | QA Contact: | Martin Gencur <mgencur> | ||||
| Severity: | high | Docs Contact: | |||||
| Priority: | high | ||||||
| Version: | 6.4.0 | CC: | chuffman, jdg-bugs, ttarrant | ||||
| Target Milestone: | ER1 | ||||||
| Target Release: | 6.5.1 | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: |
When using the HotRod client to update the lifespan of an expirable entry so that it will be immortal (i.e. performing <methodname>put</methodname> with <parameter>lifespan</parameter> set to -1), the entry was unexpectedly removed from the cache.
This issue is resolved as of Red Hat JBoss Data Grid 6.5.1.
|
Story Points: | --- | ||||
| Clone Of: | |||||||
| : | 1253052 (view as bug list) | Environment: | |||||
| Last Closed: | 2025-02-10 03:47:53 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Bug Depends On: | |||||||
| Bug Blocks: | 1253052 | ||||||
| Attachments: |
|
||||||
This product has been discontinued or is no longer tracked in Red Hat Bugzilla. |
Created attachment 1052542 [details] expiration-test.zip Description of problem: For a mortal entry (lifespan > -1), overwriting it with lifespan=-1 (make it immortal) unexpectedly removes the entry like follows. ~~~ cache.put(key, "value1", 100, TimeUnit.SECONDS, 100, TimeUnit.SECONDS); cache.get(key); // returns "value1" cache.put(key, "value2", -1, TimeUnit.SECONDS, 100, TimeUnit.SECONDS); cache.get(key); // returns null, expected "value2" cache.put(key, "value3", -1, TimeUnit.SECONDS, 100, TimeUnit.SECONDS); cache.get(key); // returns "value3" ~~~ In library mode, the 2nd get returns non-null as expected. The same behaviour is observed for a transient (maxIdle > -1) entry also. Steps to Reproduce: 1. Start a standalone JDG server. 2. Run the attached reproducer. ~~~ $ unzip expiration-test.zip $ cd expiration-test $ mvn compile dependency:copy-dependencies $ java -cp 'target/dependency/*:target/classes' \ -Djava.util.logging.manager=org.jboss.logmanager.LogManager \ -Dlogging.configuration=file:logging.properties \ com.example.App ~~~