This is an automated email from the ASF dual-hosted git repository.

timoninmaxim pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 42b3285bbbf IGNITE-22420 Fix expireTime setting for thin client 
replication (#11376)
42b3285bbbf is described below

commit 42b3285bbbf1b7c423b380c4b30b8c77f7f64ddb
Author: Maksim Timonin <timoninma...@apache.org>
AuthorDate: Thu Jun 13 09:01:19 2024 +0300

    IGNITE-22420 Fix expireTime setting for thin client replication (#11376)
---
 .../cache/ClientCachePutAllConflictRequest.java    |  8 +---
 .../client/thin/DataReplicationOperationsTest.java | 51 ++++++++++------------
 2 files changed, 23 insertions(+), 36 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/cache/ClientCachePutAllConflictRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/cache/ClientCachePutAllConflictRequest.java
index ac3182b751b..ba133bbbadb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/cache/ClientCachePutAllConflictRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/cache/ClientCachePutAllConflictRequest.java
@@ -33,8 +33,6 @@ import 
org.apache.ignite.internal.processors.platform.client.tx.ClientTxAwareReq
 import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.internal.util.typedef.internal.U;
 
-import static 
org.apache.ignite.internal.processors.cache.GridCacheUtils.EXPIRE_TIME_CALCULATE;
-import static 
org.apache.ignite.internal.processors.cache.GridCacheUtils.TTL_NOT_CHANGED;
 import static 
org.apache.ignite.internal.processors.platform.utils.PlatformUtils.readCacheObject;
 
 /**
@@ -53,8 +51,6 @@ public class ClientCachePutAllConflictRequest extends 
ClientCacheDataRequest imp
     public ClientCachePutAllConflictRequest(BinaryReaderExImpl reader, 
ClientConnectionContext ctx) {
         super(reader);
 
-        boolean expPlc = cachex(ctx).configuration().getExpiryPolicyFactory() 
!= null;
-
         int cnt = reader.readInt();
 
         map = new LinkedHashMap<>(cnt);
@@ -67,9 +63,7 @@ public class ClientCachePutAllConflictRequest extends 
ClientCacheDataRequest imp
 
             GridCacheDrInfo info = expireTime != CU.EXPIRE_TIME_ETERNAL ?
                 new GridCacheDrExpirationInfo(val, ver, CU.TTL_ETERNAL, 
expireTime) :
-                (expPlc
-                    ? new GridCacheDrExpirationInfo(val, ver, TTL_NOT_CHANGED, 
EXPIRE_TIME_CALCULATE)
-                    : new GridCacheDrInfo(val, ver));
+                new GridCacheDrInfo(val, ver);
 
             map.put(key, info);
         }
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/client/thin/DataReplicationOperationsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/client/thin/DataReplicationOperationsTest.java
index c0c78101d9e..3405d3563be 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/client/thin/DataReplicationOperationsTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/client/thin/DataReplicationOperationsTest.java
@@ -27,7 +27,6 @@ import org.apache.ignite.client.ClientCacheConfiguration;
 import org.apache.ignite.client.IgniteClient;
 import org.apache.ignite.client.Person;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
-import 
org.apache.ignite.internal.processors.platform.cache.expiry.PlatformExpiryPolicy;
 import org.apache.ignite.internal.util.typedef.T3;
 import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.junit.Test;
@@ -139,33 +138,6 @@ public class DataReplicationOperationsTest extends 
AbstractThinClientTest {
         map.keySet().forEach(key -> assertFalse(cache.containsKey(key)));
     }
 
-    /** @throws Exception If fails. */
-    @Test
-    public void testWithExpiryPolicy() throws Exception {
-        PlatformExpiryPolicy expPlc = new PlatformExpiryPolicy(TTL, TTL, TTL);
-
-        ClientCacheConfiguration ccfgWithExpPlc = new 
ClientCacheConfiguration()
-            .setName("cache-with-expiry-policy")
-            .setAtomicityMode(mode)
-            .setExpiryPolicy(expPlc);
-
-        TcpClientCache<Object, Object> cache = (TcpClientCache<Object, 
Object>)client.getOrCreateCache(ccfgWithExpPlc);
-
-        TcpClientCache<Object, Object> cacheWithExpPlc = binary ?
-            (TcpClientCache<Object, Object>)cache.withKeepBinary() : cache;
-
-        Map<Object, T3<Object, GridCacheVersion, Long>> data = 
createPutAllData(CU.EXPIRE_TIME_ETERNAL);
-
-        cacheWithExpPlc.putAllConflict(data);
-
-        assertTrue(cacheWithExpPlc.containsKeys(data.keySet()));
-
-        assertTrue(waitForCondition(
-            () -> 
data.keySet().stream().noneMatch(cacheWithExpPlc::containsKey),
-            2 * expPlc.getExpiryForCreation().getDurationAmount()
-        ));
-    }
-
     /** @throws Exception If fails. */
     @Test
     public void testWithPerEntryExpiry() throws Exception {
@@ -184,11 +156,32 @@ public class DataReplicationOperationsTest extends 
AbstractThinClientTest {
         assertTrue(waitForCondition(() -> 
data.keySet().stream().noneMatch(cache::containsKey), 2 * TTL));
     }
 
+    /** */
+    @Test
+    public void testMixedExpiryTime() {
+        Map<Object, T3<Object, GridCacheVersion, Long>> put0 = 
createPutAllData(System.currentTimeMillis() + TTL);
+        Map<Object, T3<Object, GridCacheVersion, Long>> put1 = 
createPutAllData(KEYS_CNT, CU.EXPIRE_TIME_ETERNAL);
+
+        Map<Object, T3<Object, GridCacheVersion, Long>> drMap = new 
HashMap<>();
+        drMap.putAll(put0);
+        drMap.putAll(put1);
+
+        cache.putAllConflict(drMap);
+
+        assertTrue(cache.containsKeys(put0.keySet()));
+        assertTrue(cache.containsKeys(put1.keySet()));
+    }
+
     /** */
     private Map<Object, T3<Object, GridCacheVersion, Long>> 
createPutAllData(long expireTime) {
+        return createPutAllData(0, expireTime);
+    }
+
+    /** */
+    private Map<Object, T3<Object, GridCacheVersion, Long>> 
createPutAllData(int startKey, long expireTime) {
         Map<Object, T3<Object, GridCacheVersion, Long>> map = new HashMap<>();
 
-        for (int i = 0; i < KEYS_CNT; i++) {
+        for (int i = startKey; i < startKey + KEYS_CNT; i++) {
             Person key = new Person(i, "Person-" + i);
             Person val = new Person(i, "Person-" + i);
 

Reply via email to