[jira] [Resolved] (GEODE-9983) Implement RPOPLPUSH Command

2022-03-26 Thread Donal Evans (Jira)


 [ 
https://issues.apache.org/jira/browse/GEODE-9983?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Donal Evans resolved GEODE-9983.

Fix Version/s: 1.15.0
   Resolution: Fixed

> Implement RPOPLPUSH Command
> ---
>
> Key: GEODE-9983
> URL: https://issues.apache.org/jira/browse/GEODE-9983
> Project: Geode
>  Issue Type: New Feature
>  Components: redis
>Reporter: Wayne
>Assignee: Donal Evans
>Priority: Major
>  Labels: pull-request-available
> Fix For: 1.15.0
>
>
> Implement the [RPOPLPUSH|https://redis.io/commands/RPOPLPUSH] command.
>  
> +Acceptance Criteria+
>  
> The command has been implemented along with appropriate unit and system tests.
>  
> The command has been tested using the redis-cli tool and verified against 
> native redis.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)


[jira] [Commented] (GEODE-9983) Implement RPOPLPUSH Command

2022-03-26 Thread ASF subversion and git services (Jira)


[ 
https://issues.apache.org/jira/browse/GEODE-9983?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17512753#comment-17512753
 ] 

ASF subversion and git services commented on GEODE-9983:


Commit 4b2f368be1e39189b7fc6a9ea323f7521e5f92fa in geode's branch 
refs/heads/develop from Donal Evans
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=4b2f368 ]

GEODE-9983: Implement RPOPLPUSH command (#7467)

- Implement RPOPLPUSH command and add associated tests
 - Alphabetize command-related methods in RedisList
 - Change Command.getProcessedCommandKeys() to not convert the command
 name into a RedisKey, because there's no situation in which we'd want
 to do that
 - Add ignored DUnit test for transactional behaviour, blocked by
 GEODE-10121

Authored-by: Donal Evans 

> Implement RPOPLPUSH Command
> ---
>
> Key: GEODE-9983
> URL: https://issues.apache.org/jira/browse/GEODE-9983
> Project: Geode
>  Issue Type: New Feature
>  Components: redis
>Reporter: Wayne
>Assignee: Donal Evans
>Priority: Major
>  Labels: pull-request-available
> Fix For: 1.15.0
>
>
> Implement the [RPOPLPUSH|https://redis.io/commands/RPOPLPUSH] command.
>  
> +Acceptance Criteria+
>  
> The command has been implemented along with appropriate unit and system tests.
>  
> The command has been tested using the redis-cli tool and verified against 
> native redis.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)


[jira] [Commented] (GEODE-10121) Transactional Redis commands are not actually transactional

2022-03-26 Thread ASF subversion and git services (Jira)


[ 
https://issues.apache.org/jira/browse/GEODE-10121?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17512754#comment-17512754
 ] 

ASF subversion and git services commented on GEODE-10121:
-

Commit 4b2f368be1e39189b7fc6a9ea323f7521e5f92fa in geode's branch 
refs/heads/develop from Donal Evans
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=4b2f368 ]

GEODE-9983: Implement RPOPLPUSH command (#7467)

- Implement RPOPLPUSH command and add associated tests
 - Alphabetize command-related methods in RedisList
 - Change Command.getProcessedCommandKeys() to not convert the command
 name into a RedisKey, because there's no situation in which we'd want
 to do that
 - Add ignored DUnit test for transactional behaviour, blocked by
 GEODE-10121

Authored-by: Donal Evans 

> Transactional Redis commands are not actually transactional
> ---
>
> Key: GEODE-10121
> URL: https://issues.apache.org/jira/browse/GEODE-10121
> Project: Geode
>  Issue Type: Bug
>  Components: redis
>Affects Versions: 1.15.0
>Reporter: Donal Evans
>Priority: Major
>  Labels: blocks-1.15.0​
>
> The following test (if added to MSetDUnitTest) is intended to show that MSET 
> is transactional in nature by having the final key to be set throw an 
> exception, which should roll back the previous set values:
> {code:java}
>   public static final String THROWING_REDIS_STRING_EXCEPTION = "to be 
> ignored";
>   
>   @Test
>   public void mset_isTransactional() {
> IgnoredException.addIgnoredException(THROWING_REDIS_STRING_EXCEPTION);
> String hashTag = "{" + clusterStartUp.getKeyOnServer("tag", 1) + "}";
> String key1 = hashTag + "key1";
> String value1 = "value1";
> jedis.set(key1, value1);
> String key2 = hashTag + "key2";
> String value2 = "value2";
> jedis.set(key2, value2);
> String throwingRedisStringKey = hashTag + "ThrowingRedisString";
> String throwingStringValue = "ThrowingRedisStringValue";
> // Put a test version of RedisString directly into the region that throws 
> if the multi-argument set() is called on it
> clusterStartUp.getMember(1).invoke(() -> {
>   RedisKey throwingKey = new 
> RedisKey(throwingRedisStringKey.getBytes(StandardCharsets.UTF_8));
>   ThrowingRedisString throwingRedisString = new ThrowingRedisString();
>   
> throwingRedisString.set(throwingStringValue.getBytes(StandardCharsets.UTF_8));
>   
> ClusterStartupRule.getCache().getRegion(DEFAULT_REDIS_REGION_NAME).put(throwingKey,
>  throwingRedisString);
> });
> String newValue = "should_not_be_set";
> assertThatThrownBy(() -> jedis.mset(key1, newValue, key2, newValue, 
> throwingRedisStringKey, newValue)).hasMessage(SERVER_ERROR_MESSAGE);
> 
> assertThat(jedis.get(key1)).isEqualTo(value1);
> assertThat(jedis.get(key2)).isEqualTo(value2);
> 
> assertThat(jedis.get(throwingRedisStringKey)).isEqualTo(throwingStringValue);
> IgnoredException.removeAllExpectedExceptions();
>   }
>   static class ThrowingRedisString extends RedisString {
> @Override
> public void set(Region region, RedisKey key, byte[] 
> newValue,
> SetOptions options) {
>   throw new RuntimeException(THROWING_REDIS_STRING_EXCEPTION);
> }
>   }{code}
> This test fails due to {{key1}} having its value set to {{newValue}} despite 
> the fact that MSET is supposed to be atomic.
> Given the similar implementations each command uses, it is very likely that 
> MSETNX and SMOVE also show the same behaviour.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)


[jira] [Commented] (GEODE-10091) Benchmark instability in RedisZaddAndZremBenchmark

2022-03-26 Thread Eric Zoerner (Jira)


[ 
https://issues.apache.org/jira/browse/GEODE-10091?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17512791#comment-17512791
 ] 

Eric Zoerner commented on GEODE-10091:
--

Commit 9ff27b37, which is for GEODE-10046 definitely shows a significant 
performance regression for this benchmark test.

I'm seeing a 17-24% increase in average latency introduced for this one commit.

Unfortunately, this commit was merged on 3/16/22, so was not the culprit when 
this ticket was filed.

> Benchmark instability in RedisZaddAndZremBenchmark
> --
>
> Key: GEODE-10091
> URL: https://issues.apache.org/jira/browse/GEODE-10091
> Project: Geode
>  Issue Type: Bug
>  Components: benchmarks, redis
>Affects Versions: 1.15.0
>Reporter: Donal Evans
>Assignee: Eric Zoerner
>Priority: Major
>  Labels: needsTriage
>
> {noformat}
> This is ITERATION 1 of benchmarking against baseline.
>    RedisGetBenchmark avg ops/sec  
> Baseline:428358.55  Test:446241.49  Difference:   +4.2%
>  avg latency  
> Baseline:   1678809.55  Test:   1611045.34  Difference:   -4.0%
>   RedisHgetBenchmark avg ops/sec  
> Baseline:438535.25  Test:441078.97  Difference:   +0.6%
>  avg latency  
> Baseline:   1638968.92  Test:   1630999.16  Difference:   -0.5%
>    RedisHsetAndHgetBenchmark avg ops/sec  
> Baseline:191331.54  Test:186806.37  Difference:   -2.4%
>  avg latency  
> Baseline:   3759694.09  Test:   3850396.04  Difference:   +2.4%
>   RedisHsetBenchmark avg ops/sec  
> Baseline:308079.41  Test:303715.78  Difference:   -1.4%
>  avg latency  
> Baseline:   2332102.91  Test:   2367639.93  Difference:   +1.5%
>    RedisSetBenchmark avg ops/sec  
> Baseline:318147.74  Test:326996.22  Difference:   +2.8%
>  avg latency  
> Baseline:   2263687.57  Test:   2198181.68  Difference:   -2.9%
>    RedisWeightedHsetAndHgetBenchmark avg ops/sec  
> Baseline:390383.79  Test:385565.48  Difference:   -1.2%
>  avg latency  
> Baseline:   1842561.96  Test:   1864716.09  Difference:   +1.2%
>  RedisWeightedZaddAndZrangeBenchmark avg ops/sec  
> Baseline:375078.82  Test:350886.03  Difference:   -6.5%
>  avg latency  
> Baseline:   1917476.15  Test:   2049452.87  Difference:   +6.9%
>    RedisZaddAndZremBenchmark avg ops/sec  
> Baseline:124763.60  Test:118600.72  Difference:   -4.9%
>  avg latency  
> Baseline:   5766048.34  Test:   6065491.13  Difference:   +5.2%
>   RedisZaddBenchmark avg ops/sec  
> Baseline:432494.29  Test:438594.53  Difference:   +1.4%
>  avg latency  
> Baseline:   1662639.09  Test:   1639906.18  Difference:   -1.4%
> RedisZrangeBenchmark avg ops/sec  
> Baseline:295523.77  Test:340381.87  Difference:  +15.2%
>  avg latency  
> Baseline:   2433250.54  Test:   2112961.66  Difference:  -13.2%
>  RedisZrangeByScoreBenchmark avg ops/sec  
> Baseline:285836.33  Test:356142.91  Difference:  +24.6%
>  avg latency  
> Baseline:   2515708.23  Test:   2019249.68  Difference:  -19.7%
> This is ITERATION 2 of benchmarking against baseline.
>  RedisWeightedZaddAndZrangeBenchmark avg ops/sec  
> Baseline:358570.33  Test:348012.02  Difference:   -2.9%
>  avg latency  
> Baseline:   2005804.05  Test:   2066535.24  Difference:   +3.0%
>    RedisZaddAndZremBenchmark avg ops/sec  
> Baseline:122900.38  Test:115226.22  Difference:   -6.2%
>  avg latency  
> Baseline:   5858357.13  Test:   6243018.38  Difference:   +6.6%
> This is ITERATION 3 of benchmarking against baseline.
>    RedisZaddAndZremBenc