From 09701010547ed5047205dbde1754c16ef1fe595f Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 23 Feb 2018 10:55:02 +0300 Subject: [PATCH 01/15] Update README.md --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ca8bf8e00..1a2a1c1a6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ Redisson: Redis based In-Memory Data Grid for Java. ==== -[Quick start](https://github.com/redisson/redisson#quick-start) | [Documentation](https://github.com/redisson/redisson/wiki) | [Javadocs](http://www.javadoc.io/doc/org.redisson/redisson/3.5.7) | [Changelog](https://github.com/redisson/redisson/blob/master/CHANGELOG.md) | [Code examples](https://github.com/redisson/redisson-examples) | [Support chat](https://gitter.im/mrniko/redisson) | **[PRO version](https://redisson.pro)** +[Quick start](https://github.com/redisson/redisson#quick-start) | [Documentation](https://github.com/redisson/redisson/wiki) | [Javadocs](http://www.javadoc.io/doc/org.redisson/redisson/3.5.7) | [Changelog](https://github.com/redisson/redisson/blob/master/CHANGELOG.md) | [Code examples](https://github.com/redisson/redisson-examples) | [Support chat](https://gitter.im/mrniko/redisson) | **[Redisson PRO](https://redisson.pro)** Based on high-performance async and lock-free Java Redis client and [Netty](http://netty.io) framework. @@ -53,13 +53,16 @@ Features Used by ================================ +[![Jeppesen](https://redisson.org/assets/logos/client24.png "Jeppesen")](https://www.jeppesen.com/)     +[![AIG](https://redisson.org/assets/logos/client24.png "AIG")](https://www.aig.com/)     +[![Adobe](https://redisson.org/assets/logos/client23.png "Adobe")](https://www.adobe.com/)     [![S&P Global](https://redisson.org/assets/logos/client20.png "S&P Global")](https://www.spglobal.com/)     [![SAP](https://redisson.org/assets/logos/client12.png "SAP")](http://www.sap.com/)     [![EA](https://redisson.org/assets/logos/client1.png "EA")](http://ea.com/)     [![BROOKHAVEN](https://redisson.org/assets/logos/client6.png "Brookhaven National Laboratory")](http://bnl.gov/)     [![New Relic Synthetics](https://redisson.org/assets/logos/client3.png "New Relic Synthetics")](http://newrelic.com/synthetics)     -[![Singtel](https://redisson.org/assets/logos/client5.png "New Relic Synthetics")](http://singtel.com/)     -[![Netflix](https://redisson.org/assets/logos/client10.png "Netflix")](https://netflix.com/) +[![Singtel](https://redisson.org/assets/logos/client5.png "New Relic Synthetics")](http://singtel.com/) +[![Netflix](https://redisson.org/assets/logos/client10.png "Netflix")](https://netflix.com/)     [![Baidu](https://redisson.org/assets/logos/client2.png "Baidu")](http://baidu.com/)     [![Infor](https://redisson.org/assets/logos/client4.png "Infor")](http://www.infor.com/)     [![Crimson Hexagon](https://redisson.org/assets/logos/client7.png "Crimson Hexagon")](https://www.crimsonhexagon.com/)     @@ -72,6 +75,7 @@ Used by [![Alibaba](https://redisson.org/assets/logos/client19.png "Alibaba")](http://www.alibaba-inc.com)    [![Flipkart](https://redisson.org/assets/logos/client21.png "Flipkart")](https://www.flipkart.com/)    [![SULAKE](https://redisson.org/assets/logos/client17.png "SULAKE")](http://www.sulake.com/)    +[![BBK](https://redisson.org/assets/logos/client22.png "BBK")](http://www.gdbbk.com/)    Success stories From b898e139c42c10b744b39dcf6e90587777d4982a Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 23 Feb 2018 10:55:30 +0300 Subject: [PATCH 02/15] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1a2a1c1a6..69f874423 100644 --- a/README.md +++ b/README.md @@ -53,15 +53,15 @@ Features Used by ================================ -[![Jeppesen](https://redisson.org/assets/logos/client24.png "Jeppesen")](https://www.jeppesen.com/)     +[![Jeppesen](https://redisson.org/assets/logos/client25.png "Jeppesen")](https://www.jeppesen.com/)     [![AIG](https://redisson.org/assets/logos/client24.png "AIG")](https://www.aig.com/)     [![Adobe](https://redisson.org/assets/logos/client23.png "Adobe")](https://www.adobe.com/)     [![S&P Global](https://redisson.org/assets/logos/client20.png "S&P Global")](https://www.spglobal.com/)     [![SAP](https://redisson.org/assets/logos/client12.png "SAP")](http://www.sap.com/)     [![EA](https://redisson.org/assets/logos/client1.png "EA")](http://ea.com/)     [![BROOKHAVEN](https://redisson.org/assets/logos/client6.png "Brookhaven National Laboratory")](http://bnl.gov/)     -[![New Relic Synthetics](https://redisson.org/assets/logos/client3.png "New Relic Synthetics")](http://newrelic.com/synthetics)     -[![Singtel](https://redisson.org/assets/logos/client5.png "New Relic Synthetics")](http://singtel.com/) +[![New Relic Synthetics](https://redisson.org/assets/logos/client3.png "New Relic Synthetics")](http://newrelic.com/synthetics) +[![Singtel](https://redisson.org/assets/logos/client5.png "New Relic Synthetics")](http://singtel.com/)     [![Netflix](https://redisson.org/assets/logos/client10.png "Netflix")](https://netflix.com/)     [![Baidu](https://redisson.org/assets/logos/client2.png "Baidu")](http://baidu.com/)     [![Infor](https://redisson.org/assets/logos/client4.png "Infor")](http://www.infor.com/)     From 396a53a1a39a3f9f1b10904ca018e934f00aa55f Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 23 Feb 2018 10:56:24 +0300 Subject: [PATCH 03/15] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 69f874423..303babc32 100644 --- a/README.md +++ b/README.md @@ -59,20 +59,20 @@ Used by [![S&P Global](https://redisson.org/assets/logos/client20.png "S&P Global")](https://www.spglobal.com/)     [![SAP](https://redisson.org/assets/logos/client12.png "SAP")](http://www.sap.com/)     [![EA](https://redisson.org/assets/logos/client1.png "EA")](http://ea.com/)     -[![BROOKHAVEN](https://redisson.org/assets/logos/client6.png "Brookhaven National Laboratory")](http://bnl.gov/)     -[![New Relic Synthetics](https://redisson.org/assets/logos/client3.png "New Relic Synthetics")](http://newrelic.com/synthetics) +[![BROOKHAVEN](https://redisson.org/assets/logos/client6.png "Brookhaven National Laboratory")](http://bnl.gov/) +[![New Relic Synthetics](https://redisson.org/assets/logos/client3.png "New Relic Synthetics")](http://newrelic.com/synthetics)     [![Singtel](https://redisson.org/assets/logos/client5.png "New Relic Synthetics")](http://singtel.com/)     [![Netflix](https://redisson.org/assets/logos/client10.png "Netflix")](https://netflix.com/)     [![Baidu](https://redisson.org/assets/logos/client2.png "Baidu")](http://baidu.com/)     [![Infor](https://redisson.org/assets/logos/client4.png "Infor")](http://www.infor.com/)     -[![Crimson Hexagon](https://redisson.org/assets/logos/client7.png "Crimson Hexagon")](https://www.crimsonhexagon.com/)     +[![Crimson Hexagon](https://redisson.org/assets/logos/client7.png "Crimson Hexagon")](https://www.crimsonhexagon.com/) [![Datorama](https://redisson.org/assets/logos/client8.png "Datorama")](https://datorama.com/)    [![Invaluable](https://redisson.org/assets/logos/client13.png "Invaluable")](http://www.invaluable.com/)    -[![Ticketmaster](https://redisson.org/assets/logos/client14.png "Ticketmaster")](http://www.ticketmaster.com/) +[![Ticketmaster](https://redisson.org/assets/logos/client14.png "Ticketmaster")](http://www.ticketmaster.com/)    [![PANDORA](https://redisson.org/assets/logos/client15.png "PANDORA")](http://www.pandora.com/)    [![ContaAzul](https://redisson.org/assets/logos/client18.png "ContaAzul")](https://contaazul.com/)    [![NAB](https://redisson.org/assets/logos/client11.png "NAB")](https://www.nab.com.au/)    -[![Alibaba](https://redisson.org/assets/logos/client19.png "Alibaba")](http://www.alibaba-inc.com)    +[![Alibaba](https://redisson.org/assets/logos/client19.png "Alibaba")](http://www.alibaba-inc.com) [![Flipkart](https://redisson.org/assets/logos/client21.png "Flipkart")](https://www.flipkart.com/)    [![SULAKE](https://redisson.org/assets/logos/client17.png "SULAKE")](http://www.sulake.com/)    [![BBK](https://redisson.org/assets/logos/client22.png "BBK")](http://www.gdbbk.com/)    From 8cecd4f9f1a51759e34e523388e2425fea60992d Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 23 Feb 2018 10:57:28 +0300 Subject: [PATCH 04/15] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 303babc32..aa79e4943 100644 --- a/README.md +++ b/README.md @@ -65,8 +65,8 @@ Used by [![Netflix](https://redisson.org/assets/logos/client10.png "Netflix")](https://netflix.com/)     [![Baidu](https://redisson.org/assets/logos/client2.png "Baidu")](http://baidu.com/)     [![Infor](https://redisson.org/assets/logos/client4.png "Infor")](http://www.infor.com/)     -[![Crimson Hexagon](https://redisson.org/assets/logos/client7.png "Crimson Hexagon")](https://www.crimsonhexagon.com/) -[![Datorama](https://redisson.org/assets/logos/client8.png "Datorama")](https://datorama.com/)    +[![Crimson Hexagon](https://redisson.org/assets/logos/client7.png "Crimson Hexagon")](https://www.crimsonhexagon.com/)    +[![Datorama](https://redisson.org/assets/logos/client8.png "Datorama")](https://datorama.com/) [![Invaluable](https://redisson.org/assets/logos/client13.png "Invaluable")](http://www.invaluable.com/)    [![Ticketmaster](https://redisson.org/assets/logos/client14.png "Ticketmaster")](http://www.ticketmaster.com/)    [![PANDORA](https://redisson.org/assets/logos/client15.png "PANDORA")](http://www.pandora.com/)    @@ -74,8 +74,8 @@ Used by [![NAB](https://redisson.org/assets/logos/client11.png "NAB")](https://www.nab.com.au/)    [![Alibaba](https://redisson.org/assets/logos/client19.png "Alibaba")](http://www.alibaba-inc.com) [![Flipkart](https://redisson.org/assets/logos/client21.png "Flipkart")](https://www.flipkart.com/)    +[![BBK](https://redisson.org/assets/logos/client22.png "BBK")](http://www.gdbbk.com/) [![SULAKE](https://redisson.org/assets/logos/client17.png "SULAKE")](http://www.sulake.com/)    -[![BBK](https://redisson.org/assets/logos/client22.png "BBK")](http://www.gdbbk.com/)    Success stories From f05980417436464b2e9dc474140f86f97900877b Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 23 Feb 2018 10:58:02 +0300 Subject: [PATCH 05/15] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index aa79e4943..7acdc9ea0 100644 --- a/README.md +++ b/README.md @@ -65,14 +65,14 @@ Used by [![Netflix](https://redisson.org/assets/logos/client10.png "Netflix")](https://netflix.com/)     [![Baidu](https://redisson.org/assets/logos/client2.png "Baidu")](http://baidu.com/)     [![Infor](https://redisson.org/assets/logos/client4.png "Infor")](http://www.infor.com/)     -[![Crimson Hexagon](https://redisson.org/assets/logos/client7.png "Crimson Hexagon")](https://www.crimsonhexagon.com/)    -[![Datorama](https://redisson.org/assets/logos/client8.png "Datorama")](https://datorama.com/) +[![Crimson Hexagon](https://redisson.org/assets/logos/client7.png "Crimson Hexagon")](https://www.crimsonhexagon.com/) +[![Datorama](https://redisson.org/assets/logos/client8.png "Datorama")](https://datorama.com/)    [![Invaluable](https://redisson.org/assets/logos/client13.png "Invaluable")](http://www.invaluable.com/)    [![Ticketmaster](https://redisson.org/assets/logos/client14.png "Ticketmaster")](http://www.ticketmaster.com/)    [![PANDORA](https://redisson.org/assets/logos/client15.png "PANDORA")](http://www.pandora.com/)    [![ContaAzul](https://redisson.org/assets/logos/client18.png "ContaAzul")](https://contaazul.com/)    -[![NAB](https://redisson.org/assets/logos/client11.png "NAB")](https://www.nab.com.au/)    -[![Alibaba](https://redisson.org/assets/logos/client19.png "Alibaba")](http://www.alibaba-inc.com) +[![NAB](https://redisson.org/assets/logos/client11.png "NAB")](https://www.nab.com.au/) +[![Alibaba](https://redisson.org/assets/logos/client19.png "Alibaba")](http://www.alibaba-inc.com)    [![Flipkart](https://redisson.org/assets/logos/client21.png "Flipkart")](https://www.flipkart.com/)    [![BBK](https://redisson.org/assets/logos/client22.png "BBK")](http://www.gdbbk.com/) [![SULAKE](https://redisson.org/assets/logos/client17.png "SULAKE")](http://www.sulake.com/)    From 44457f7fca45b810d99703154fe6a4f9f166d762 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 23 Feb 2018 10:58:32 +0300 Subject: [PATCH 06/15] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7acdc9ea0..2133829ea 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Used by [![Ticketmaster](https://redisson.org/assets/logos/client14.png "Ticketmaster")](http://www.ticketmaster.com/)    [![PANDORA](https://redisson.org/assets/logos/client15.png "PANDORA")](http://www.pandora.com/)    [![ContaAzul](https://redisson.org/assets/logos/client18.png "ContaAzul")](https://contaazul.com/)    -[![NAB](https://redisson.org/assets/logos/client11.png "NAB")](https://www.nab.com.au/) +[![NAB](https://redisson.org/assets/logos/client11.png "NAB")](https://www.nab.com.au/)    [![Alibaba](https://redisson.org/assets/logos/client19.png "Alibaba")](http://www.alibaba-inc.com)    [![Flipkart](https://redisson.org/assets/logos/client21.png "Flipkart")](https://www.flipkart.com/)    [![BBK](https://redisson.org/assets/logos/client22.png "BBK")](http://www.gdbbk.com/) From 5a02b7b99bff94b90d1eb3a8f347ad8aaf5e12c0 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 23 Feb 2018 11:00:17 +0300 Subject: [PATCH 07/15] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2133829ea..4b3a6f6fd 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ Used by [![SAP](https://redisson.org/assets/logos/client12.png "SAP")](http://www.sap.com/)     [![EA](https://redisson.org/assets/logos/client1.png "EA")](http://ea.com/)     [![BROOKHAVEN](https://redisson.org/assets/logos/client6.png "Brookhaven National Laboratory")](http://bnl.gov/) + [![New Relic Synthetics](https://redisson.org/assets/logos/client3.png "New Relic Synthetics")](http://newrelic.com/synthetics)     [![Singtel](https://redisson.org/assets/logos/client5.png "New Relic Synthetics")](http://singtel.com/)     [![Netflix](https://redisson.org/assets/logos/client10.png "Netflix")](https://netflix.com/)     @@ -69,8 +70,8 @@ Used by [![Datorama](https://redisson.org/assets/logos/client8.png "Datorama")](https://datorama.com/)    [![Invaluable](https://redisson.org/assets/logos/client13.png "Invaluable")](http://www.invaluable.com/)    [![Ticketmaster](https://redisson.org/assets/logos/client14.png "Ticketmaster")](http://www.ticketmaster.com/)    -[![PANDORA](https://redisson.org/assets/logos/client15.png "PANDORA")](http://www.pandora.com/)    -[![ContaAzul](https://redisson.org/assets/logos/client18.png "ContaAzul")](https://contaazul.com/)    +[![ContaAzul](https://redisson.org/assets/logos/client18.png "ContaAzul")](https://contaazul.com/) + [![NAB](https://redisson.org/assets/logos/client11.png "NAB")](https://www.nab.com.au/)    [![Alibaba](https://redisson.org/assets/logos/client19.png "Alibaba")](http://www.alibaba-inc.com)    [![Flipkart](https://redisson.org/assets/logos/client21.png "Flipkart")](https://www.flipkart.com/)    From 86ed5c0a3e4f5bc1a9f344c83705cd92cbcdbbeb Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 23 Feb 2018 11:00:34 +0300 Subject: [PATCH 08/15] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4b3a6f6fd..4b118fcdc 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ Used by [![Baidu](https://redisson.org/assets/logos/client2.png "Baidu")](http://baidu.com/)     [![Infor](https://redisson.org/assets/logos/client4.png "Infor")](http://www.infor.com/)     [![Crimson Hexagon](https://redisson.org/assets/logos/client7.png "Crimson Hexagon")](https://www.crimsonhexagon.com/) + [![Datorama](https://redisson.org/assets/logos/client8.png "Datorama")](https://datorama.com/)    [![Invaluable](https://redisson.org/assets/logos/client13.png "Invaluable")](http://www.invaluable.com/)    [![Ticketmaster](https://redisson.org/assets/logos/client14.png "Ticketmaster")](http://www.ticketmaster.com/)    From 6d3209e088e26b72bdd1d6bed2cf22ac19065124 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 23 Feb 2018 11:01:23 +0300 Subject: [PATCH 09/15] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4b118fcdc..182b9b6e9 100644 --- a/README.md +++ b/README.md @@ -71,9 +71,9 @@ Used by [![Datorama](https://redisson.org/assets/logos/client8.png "Datorama")](https://datorama.com/)    [![Invaluable](https://redisson.org/assets/logos/client13.png "Invaluable")](http://www.invaluable.com/)    [![Ticketmaster](https://redisson.org/assets/logos/client14.png "Ticketmaster")](http://www.ticketmaster.com/)    -[![ContaAzul](https://redisson.org/assets/logos/client18.png "ContaAzul")](https://contaazul.com/) +[![ContaAzul](https://redisson.org/assets/logos/client18.png "ContaAzul")](https://contaazul.com/)    +[![NAB](https://redisson.org/assets/logos/client11.png "NAB")](https://www.nab.com.au/) -[![NAB](https://redisson.org/assets/logos/client11.png "NAB")](https://www.nab.com.au/)    [![Alibaba](https://redisson.org/assets/logos/client19.png "Alibaba")](http://www.alibaba-inc.com)    [![Flipkart](https://redisson.org/assets/logos/client21.png "Flipkart")](https://www.flipkart.com/)    [![BBK](https://redisson.org/assets/logos/client22.png "BBK")](http://www.gdbbk.com/) From bf68267931e0c744528e7bbf358c78b54ea8e2d7 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 1 Mar 2018 14:03:17 +0300 Subject: [PATCH 10/15] timeout for get operation and mode details for RedisTimeoutExection added --- .../redisson/command/CommandAsyncService.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java index eab855f5c..caa46a81a 100644 --- a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java +++ b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java @@ -149,7 +149,12 @@ public class CommandAsyncService implements CommandAsyncExecutor { boolean interrupted = false; while (!future.isDone()) { try { - l.await(); + MasterSlaveServersConfig config = connectionManager.getConfig(); + int timeout = config.getTimeout() + config.getRetryInterval() * config.getRetryAttempts(); + if (!l.await(timeout, TimeUnit.MILLISECONDS)) { + ((RPromise)future).tryFailure(new RedisTimeoutException("Command timeout: (" + timeout + " ms)")); + break; + } } catch (InterruptedException e) { interrupted = true; } @@ -531,7 +536,10 @@ public class CommandAsyncService implements CommandAsyncExecutor { if (details.getAttempt() == connectionManager.getConfig().getRetryAttempts()) { if (details.getWriteFuture() != null && details.getWriteFuture().cancel(false)) { if (details.getException() == null) { - details.setException(new RedisTimeoutException("Unable to send command: " + command + " with params: " + LogHelper.toString(details.getParams()) + " after " + connectionManager.getConfig().getRetryAttempts() + " retry attempts")); + details.setException(new RedisTimeoutException("Unable to send command! " + + "Node source: " + source + ", connection: " + details.getConnectionFuture().getNow().getChannel() + + ", command: " + command + ", command params: " + LogHelper.toString(details.getParams()) + + " after " + connectionManager.getConfig().getRetryAttempts() + " retry attempts")); } details.getAttemptPromise().tryFailure(details.getException()); } @@ -559,7 +567,9 @@ public class CommandAsyncService implements CommandAsyncExecutor { if (details.getAttempt() == connectionManager.getConfig().getRetryAttempts()) { if (details.getException() == null) { - details.setException(new RedisTimeoutException("Unable to send command: " + command + " with params: " + LogHelper.toString(details.getParams()) + " after " + connectionManager.getConfig().getRetryAttempts() + " retry attempts")); + details.setException(new RedisTimeoutException("Unable to send command! Node source: " + source + + ", command: " + command + ", command params: " + LogHelper.toString(details.getParams()) + + " after " + connectionManager.getConfig().getRetryAttempts() + " retry attempts")); } details.getAttemptPromise().tryFailure(details.getException()); return; From 9d845c11724513b1b38b1d6151d84db6b99a3fd4 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 1 Mar 2018 15:22:38 +0300 Subject: [PATCH 11/15] refactoring --- .../java/org/redisson/RedissonListMultimapCache.java | 8 ++++++-- redisson/src/main/java/org/redisson/RedissonMap.java | 6 +++--- .../src/main/java/org/redisson/RedissonMapCache.java | 12 ++++++------ .../src/main/java/org/redisson/RedissonObject.java | 10 +++++----- .../java/org/redisson/RedissonSetMultimapCache.java | 8 ++++++-- 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/redisson/src/main/java/org/redisson/RedissonListMultimapCache.java b/redisson/src/main/java/org/redisson/RedissonListMultimapCache.java index f06233b55..adc06604f 100644 --- a/redisson/src/main/java/org/redisson/RedissonListMultimapCache.java +++ b/redisson/src/main/java/org/redisson/RedissonListMultimapCache.java @@ -42,13 +42,17 @@ public class RedissonListMultimapCache extends RedissonListMultimap RedissonListMultimapCache(EvictionScheduler evictionScheduler, CommandAsyncExecutor connectionManager, String name) { super(connectionManager, name); - evictionScheduler.scheduleCleanMultimap(name, getTimeoutSetName()); + if (evictionScheduler != null) { + evictionScheduler.scheduleCleanMultimap(name, getTimeoutSetName()); + } baseCache = new RedissonMultimapCache(connectionManager, this, getTimeoutSetName(), prefix); } RedissonListMultimapCache(EvictionScheduler evictionScheduler, Codec codec, CommandAsyncExecutor connectionManager, String name) { super(codec, connectionManager, name); - evictionScheduler.scheduleCleanMultimap(name, getTimeoutSetName()); + if (evictionScheduler != null) { + evictionScheduler.scheduleCleanMultimap(name, getTimeoutSetName()); + } baseCache = new RedissonMultimapCache(connectionManager, this, getTimeoutSetName(), prefix); } diff --git a/redisson/src/main/java/org/redisson/RedissonMap.java b/redisson/src/main/java/org/redisson/RedissonMap.java index 825ec0698..89d884458 100644 --- a/redisson/src/main/java/org/redisson/RedissonMap.java +++ b/redisson/src/main/java/org/redisson/RedissonMap.java @@ -237,7 +237,7 @@ public class RedissonMap extends RedissonExpirable implements RMap { return options == null || options.getLoader() == null; } - protected RFuture> getAllOperationAsync(Set keys) { + public RFuture> getAllOperationAsync(Set keys) { List args = new ArrayList(keys.size() + 1); args.add(getName()); encodeMapKeys(args, keys); @@ -624,7 +624,7 @@ public class RedissonMap extends RedissonExpirable implements RMap { Collections.singletonList(getName(key)), encodeMapKey(key), encodeMapValue(value)); } - protected RFuture getOperationAsync(K key) { + public RFuture getOperationAsync(K key) { return commandExecutor.readAsync(getName(key), codec, RedisCommands.HGET, getName(key), encodeMapKey(key)); } @@ -973,7 +973,7 @@ public class RedissonMap extends RedissonExpirable implements RMap { return get(fastRemoveAsync(keys)); } - MapScanResult scanIterator(String name, RedisClient client, long startPos, String pattern) { + public MapScanResult scanIterator(String name, RedisClient client, long startPos, String pattern) { if (pattern == null) { RFuture> f = commandExecutor.readAsync(client, name, new MapScanCodec(codec), RedisCommands.HSCAN, name, startPos); diff --git a/redisson/src/main/java/org/redisson/RedissonMapCache.java b/redisson/src/main/java/org/redisson/RedissonMapCache.java index b5e23bb42..d5816630e 100644 --- a/redisson/src/main/java/org/redisson/RedissonMapCache.java +++ b/redisson/src/main/java/org/redisson/RedissonMapCache.java @@ -210,7 +210,7 @@ public class RedissonMapCache extends RedissonMap implements RMapCac } @Override - protected RFuture> getAllOperationAsync(Set keys) { + public RFuture> getAllOperationAsync(Set keys) { List args = new ArrayList(keys.size() + 1); List plainKeys = new ArrayList(keys.size()); @@ -448,7 +448,7 @@ public class RedissonMapCache extends RedissonMap implements RMapCac } @Override - protected RFuture getOperationAsync(K key) { + public RFuture getOperationAsync(K key) { return commandExecutor.evalWriteAsync(getName(key), codec, RedisCommands.EVAL_MAP_VALUE, "local value = redis.call('hget', KEYS[1], ARGV[2]); " + "if value == false then " @@ -618,7 +618,7 @@ public class RedissonMapCache extends RedissonMap implements RMapCac } @Override - public RFuture addAndGetOperationAsync(K key, Number value) { + protected RFuture addAndGetOperationAsync(K key, Number value) { ByteBuf keyState = encodeMapKey(key); return commandExecutor.evalWriteAsync(getName(key), StringCodec.INSTANCE, new RedisCommand("EVAL", new NumberConvertor(value.getClass())), @@ -1100,7 +1100,7 @@ public class RedissonMapCache extends RedissonMap implements RMapCac @Override - public RFuture removeOperationAsync(K key) { + protected RFuture removeOperationAsync(K key) { return commandExecutor.evalWriteAsync(getName(key), codec, RedisCommands.EVAL_MAP_VALUE, "local value = redis.call('hget', KEYS[1], ARGV[2]); " + "if value == false then " @@ -1198,7 +1198,7 @@ public class RedissonMapCache extends RedissonMap implements RMapCac } @Override - MapScanResult scanIterator(String name, RedisClient client, long startPos, String pattern) { + public MapScanResult scanIterator(String name, RedisClient client, long startPos, String pattern) { return get(scanIteratorAsync(name, client, startPos, pattern)); } @@ -1635,7 +1635,7 @@ public class RedissonMapCache extends RedissonMap implements RMapCac } @Override - public RFuture putAllOperationAsync(Map map) { + protected RFuture putAllOperationAsync(Map map) { List params = new ArrayList(map.size()*2 + 1); params.add(System.currentTimeMillis()); for (java.util.Map.Entry t : map.entrySet()) { diff --git a/redisson/src/main/java/org/redisson/RedissonObject.java b/redisson/src/main/java/org/redisson/RedissonObject.java index 40e0862b1..c999e032e 100644 --- a/redisson/src/main/java/org/redisson/RedissonObject.java +++ b/redisson/src/main/java/org/redisson/RedissonObject.java @@ -56,14 +56,14 @@ public abstract class RedissonObject implements RObject { return commandExecutor.await(future, timeout, timeoutUnit); } - protected static String prefixName(String prefix, String name) { + public static String prefixName(String prefix, String name) { if (name.contains("{")) { return prefix + ":" + name; } return prefix + ":{" + name + "}"; } - protected static String suffixName(String name, String suffix) { + public static String suffixName(String name, String suffix) { if (name.contains("{")) { return name + ":" + suffix; } @@ -194,7 +194,7 @@ public abstract class RedissonObject implements RObject { } } - protected ByteBuf encode(Object value) { + public ByteBuf encode(Object value) { if (commandExecutor.isRedissonReferenceSupportEnabled()) { RedissonReference reference = RedissonObjectFactory.toReference(commandExecutor.getConnectionManager().getCfg(), value); if (reference != null) { @@ -209,7 +209,7 @@ public abstract class RedissonObject implements RObject { } } - protected ByteBuf encodeMapKey(Object value) { + public ByteBuf encodeMapKey(Object value) { if (commandExecutor.isRedissonReferenceSupportEnabled()) { RedissonReference reference = RedissonObjectFactory.toReference(commandExecutor.getConnectionManager().getCfg(), value); if (reference != null) { @@ -224,7 +224,7 @@ public abstract class RedissonObject implements RObject { } } - protected ByteBuf encodeMapValue(Object value) { + public ByteBuf encodeMapValue(Object value) { if (commandExecutor.isRedissonReferenceSupportEnabled()) { RedissonReference reference = RedissonObjectFactory.toReference(commandExecutor.getConnectionManager().getCfg(), value); if (reference != null) { diff --git a/redisson/src/main/java/org/redisson/RedissonSetMultimapCache.java b/redisson/src/main/java/org/redisson/RedissonSetMultimapCache.java index aa7f3d713..40d5f8939 100644 --- a/redisson/src/main/java/org/redisson/RedissonSetMultimapCache.java +++ b/redisson/src/main/java/org/redisson/RedissonSetMultimapCache.java @@ -41,13 +41,17 @@ public class RedissonSetMultimapCache extends RedissonSetMultimap im RedissonSetMultimapCache(EvictionScheduler evictionScheduler, CommandAsyncExecutor connectionManager, String name) { super(connectionManager, name); - evictionScheduler.scheduleCleanMultimap(name, getTimeoutSetName()); + if (evictionScheduler != null) { + evictionScheduler.scheduleCleanMultimap(name, getTimeoutSetName()); + } baseCache = new RedissonMultimapCache(connectionManager, this, getTimeoutSetName(), prefix); } RedissonSetMultimapCache(EvictionScheduler evictionScheduler, Codec codec, CommandAsyncExecutor connectionManager, String name) { super(codec, connectionManager, name); - evictionScheduler.scheduleCleanMultimap(name, getTimeoutSetName()); + if (evictionScheduler != null) { + evictionScheduler.scheduleCleanMultimap(name, getTimeoutSetName()); + } baseCache = new RedissonMultimapCache(connectionManager, this, getTimeoutSetName(), prefix); } From 6803dd29cbf747d9a5b437bb34108dd9bab9f388 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 1 Mar 2018 15:50:21 +0300 Subject: [PATCH 12/15] error info extended --- .../main/java/org/redisson/command/CommandAsyncService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java index caa46a81a..c4b07928b 100644 --- a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java +++ b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java @@ -668,9 +668,9 @@ public class CommandAsyncService implements CommandAsyncExecutor { } if (!future.isSuccess()) { - log.trace("Can't write {} to {}", details.getCommand(), connection); details.setException(new WriteRedisConnectionException( - "Can't write command: " + details.getCommand() + ", params: " + LogHelper.toString(details.getParams()) + " to channel: " + future.channel(), future.cause())); + "Unable to send command! Node source: " + details.getSource() + ", connection: " + future.channel() + + ", command: " + details.getCommand() + ", params: " + LogHelper.toString(details.getParams()), future.cause())); if (details.getAttempt() == connectionManager.getConfig().getRetryAttempts()) { details.getAttemptPromise().tryFailure(details.getException()); } From bfe853989c2cbe5e1e1e01676812d7d2f8882ee4 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 1 Mar 2018 16:55:25 +0300 Subject: [PATCH 13/15] log error if attemptPromise couldn't be set as failed --- .../main/java/org/redisson/command/CommandAsyncService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java index c4b07928b..7610f35b0 100644 --- a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java +++ b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java @@ -672,7 +672,9 @@ public class CommandAsyncService implements CommandAsyncExecutor { "Unable to send command! Node source: " + details.getSource() + ", connection: " + future.channel() + ", command: " + details.getCommand() + ", params: " + LogHelper.toString(details.getParams()), future.cause())); if (details.getAttempt() == connectionManager.getConfig().getRetryAttempts()) { - details.getAttemptPromise().tryFailure(details.getException()); + if (!details.getAttemptPromise().tryFailure(details.getException())) { + log.error(details.getException().getMessage()); + } } return; } From bae67d6191b75b22cc518c4ac83db4d468013c75 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 1 Mar 2018 19:53:40 +0300 Subject: [PATCH 14/15] refactoring --- .../org/redisson/command/CommandAsyncService.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java index 7610f35b0..3a032dc69 100644 --- a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java +++ b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java @@ -149,14 +149,10 @@ public class CommandAsyncService implements CommandAsyncExecutor { boolean interrupted = false; while (!future.isDone()) { try { - MasterSlaveServersConfig config = connectionManager.getConfig(); - int timeout = config.getTimeout() + config.getRetryInterval() * config.getRetryAttempts(); - if (!l.await(timeout, TimeUnit.MILLISECONDS)) { - ((RPromise)future).tryFailure(new RedisTimeoutException("Command timeout: (" + timeout + " ms)")); - break; - } + l.await(); } catch (InterruptedException e) { interrupted = true; + break; } } @@ -529,6 +525,12 @@ public class CommandAsyncService implements CommandAsyncExecutor { } if (details.getConnectionFuture().cancel(false)) { + if (details.getException() == null) { + details.setException(new RedisTimeoutException("Unable to get connection! " + + "Node source: " + source + + ", command: " + command + ", command params: " + LogHelper.toString(details.getParams()) + + " after " + connectionManager.getConfig().getRetryAttempts() + " retry attempts")); + } connectionManager.getShutdownLatch().release(); } else { if (details.getConnectionFuture().isSuccess()) { From e7256234f4a0c759fd1f54a26f39e2be03bb714b Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 1 Mar 2018 19:54:14 +0300 Subject: [PATCH 15/15] version number limit set for spring-boot-actuator --- redisson-all/pom.xml | 2 +- redisson/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/redisson-all/pom.xml b/redisson-all/pom.xml index e490139f3..6f114c3b5 100644 --- a/redisson-all/pom.xml +++ b/redisson-all/pom.xml @@ -167,7 +167,7 @@ org.springframework.boot spring-boot-actuator - [1.4,) + [1.4,2.0.0) provided diff --git a/redisson/pom.xml b/redisson/pom.xml index 6b6e8b342..e82b8aa2f 100644 --- a/redisson/pom.xml +++ b/redisson/pom.xml @@ -271,7 +271,7 @@ org.springframework.boot spring-boot-actuator - [1.4,) + [1.4,2.0.0) provided true