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 ~~~