You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2021/02/22 05:26:05 UTC
[dubbo] branch master updated: move the check of timeToLiveMillis
out of the loop (#7171)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new 4679ffb move the check of timeToLiveMillis out of the loop (#7171)
4679ffb is described below
commit 4679ffb3e53879fe51db18d165aa44cc831a4954
Author: tangcent <sw...@foxmail.com>
AuthorDate: Mon Feb 22 13:25:48 2021 +0800
move the check of timeToLiveMillis out of the loop (#7171)
---
.../dubbo/cache/support/expiring/ExpiringMap.java | 6 ++---
.../support/expiring/ExpiringCacheFactoryTest.java | 31 ++++++++++++++++++++--
2 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/support/expiring/ExpiringMap.java b/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/support/expiring/ExpiringMap.java
index 895f114..2758bed 100644
--- a/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/support/expiring/ExpiringMap.java
+++ b/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/support/expiring/ExpiringMap.java
@@ -282,10 +282,10 @@ public class ExpiringMap<K, V> implements Map<K, V> {
private void processExpires() {
long timeNow = System.currentTimeMillis();
+ if (timeToLiveMillis <= 0) {
+ return;
+ }
for (ExpiryObject o : delegateMap.values()) {
- if (timeToLiveMillis <= 0) {
- continue;
- }
long timeIdle = timeNow - o.getLastAccessTime();
if (timeIdle >= timeToLiveMillis) {
delegateMap.remove(o.getKey());
diff --git a/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/expiring/ExpiringCacheFactoryTest.java b/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/expiring/ExpiringCacheFactoryTest.java
index 23484c6..877faf4 100644
--- a/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/expiring/ExpiringCacheFactoryTest.java
+++ b/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/expiring/ExpiringCacheFactoryTest.java
@@ -19,18 +19,45 @@ package org.apache.dubbo.cache.support.expiring;
import org.apache.dubbo.cache.Cache;
import org.apache.dubbo.cache.support.AbstractCacheFactory;
import org.apache.dubbo.cache.support.AbstractCacheFactoryTest;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.rpc.Invocation;
+import org.apache.dubbo.rpc.RpcInvocation;
import org.junit.jupiter.api.Test;
-import static org.hamcrest.core.Is.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
public class ExpiringCacheFactoryTest extends AbstractCacheFactoryTest {
@Test
- public void testLruCacheFactory() throws Exception {
+ public void testExpiringCacheFactory() throws Exception {
Cache cache = super.constructCache();
assertThat(cache instanceof ExpiringCache, is(true));
}
+ @Test
+ public void testExpiringCacheGetExpired() throws Exception {
+ URL url = URL.valueOf("test://test:12/test?cache=expiring&cache.seconds=1&cache.interval=1");
+ AbstractCacheFactory cacheFactory = getCacheFactory();
+ Invocation invocation = new RpcInvocation();
+ Cache cache = cacheFactory.getCache(url, invocation);
+ cache.put("testKey", "testValue");
+ Thread.sleep(2100);
+ assertNull(cache.get("testKey"));
+ }
+
+ @Test
+ public void testExpiringCacheUnExpired() throws Exception {
+ URL url = URL.valueOf("test://test:12/test?cache=expiring&cache.seconds=0&cache.interval=1");
+ AbstractCacheFactory cacheFactory = getCacheFactory();
+ Invocation invocation = new RpcInvocation();
+ Cache cache = cacheFactory.getCache(url, invocation);
+ cache.put("testKey", "testValue");
+ Thread.sleep(1100);
+ assertNotNull(cache.get("testKey"));
+ }
+
@Override
protected AbstractCacheFactory getCacheFactory() {
return new ExpiringCacheFactory();