diff --git a/.github/workflows/stale-issues.yml b/.github/workflows/stale-issues.yml index c7f091def9..27440099bd 100644 --- a/.github/workflows/stale-issues.yml +++ b/.github/workflows/stale-issues.yml @@ -17,8 +17,8 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 30 days this issue will be closed.' stale-pr-message: 'Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.' - days-before-stale: 365 - days-before-close: 30 + days-before-stale: 30 + days-before-close: 14 stale-issue-label: "status: feedback-reminder" stale-pr-label: "status: feedback-reminder" operations-per-run: 10 diff --git a/src/main/java/io/lettuce/core/output/ClaimedMessagesOutput.java b/src/main/java/io/lettuce/core/output/ClaimedMessagesOutput.java index 49d36c3f5d..3b08480d43 100644 --- a/src/main/java/io/lettuce/core/output/ClaimedMessagesOutput.java +++ b/src/main/java/io/lettuce/core/output/ClaimedMessagesOutput.java @@ -70,12 +70,12 @@ public ClaimedMessagesOutput(RedisCodec codec, K stream, boolean justId) { @Override public void set(ByteBuffer bytes) { if (startId == null) { - startId = decodeAscii(bytes); + startId = decodeString(bytes); return; } if (id == null) { - id = decodeAscii(bytes); + id = decodeString(bytes); return; } diff --git a/src/main/java/io/lettuce/core/output/CommandOutput.java b/src/main/java/io/lettuce/core/output/CommandOutput.java index 2b4a851267..5775f89675 100644 --- a/src/main/java/io/lettuce/core/output/CommandOutput.java +++ b/src/main/java/io/lettuce/core/output/CommandOutput.java @@ -20,6 +20,7 @@ package io.lettuce.core.output; import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; import io.lettuce.core.codec.RedisCodec; import io.lettuce.core.internal.LettuceAssert; @@ -139,7 +140,7 @@ public void set(boolean value) { * @param error Error message. */ public void setError(ByteBuffer error) { - this.error = decodeAscii(error); + this.error = decodeString(error); } /** @@ -179,16 +180,8 @@ public void complete(int depth) { // nothing to do by default } - protected String decodeAscii(ByteBuffer bytes) { - if (bytes == null) { - return null; - } - - char[] chars = new char[bytes.remaining()]; - for (int i = 0; i < chars.length; i++) { - chars[i] = (char) bytes.get(); - } - return new String(chars); + protected String decodeString(ByteBuffer bytes) { + return bytes == null ? null : StandardCharsets.UTF_8.decode(bytes).toString(); } @Override diff --git a/src/main/java/io/lettuce/core/output/DoubleListOutput.java b/src/main/java/io/lettuce/core/output/DoubleListOutput.java index de1c5dfd6f..72a2e5a427 100644 --- a/src/main/java/io/lettuce/core/output/DoubleListOutput.java +++ b/src/main/java/io/lettuce/core/output/DoubleListOutput.java @@ -46,7 +46,7 @@ public DoubleListOutput(RedisCodec codec) { @Override public void set(ByteBuffer bytes) { - output.add(bytes != null ? parseDouble(decodeAscii(bytes)) : null); + output.add(bytes != null ? parseDouble(decodeString(bytes)) : null); } @Override diff --git a/src/main/java/io/lettuce/core/output/DoubleOutput.java b/src/main/java/io/lettuce/core/output/DoubleOutput.java index 415fe3b997..8f8aac9a63 100644 --- a/src/main/java/io/lettuce/core/output/DoubleOutput.java +++ b/src/main/java/io/lettuce/core/output/DoubleOutput.java @@ -40,7 +40,7 @@ public DoubleOutput(RedisCodec codec) { @Override public void set(ByteBuffer bytes) { - output = (bytes == null) ? null : parseDouble(decodeAscii(bytes)); + output = (bytes == null) ? null : parseDouble(decodeString(bytes)); } @Override diff --git a/src/main/java/io/lettuce/core/output/EnumSetOutput.java b/src/main/java/io/lettuce/core/output/EnumSetOutput.java index dd2c1c40fe..dfd627e709 100644 --- a/src/main/java/io/lettuce/core/output/EnumSetOutput.java +++ b/src/main/java/io/lettuce/core/output/EnumSetOutput.java @@ -51,7 +51,7 @@ public void set(ByteBuffer bytes) { return; } - E enumConstant = resolve(enumValuePreprocessor.apply(decodeAscii(bytes))); + E enumConstant = resolve(enumValuePreprocessor.apply(decodeString(bytes))); if (enumConstant == null) { return; diff --git a/src/main/java/io/lettuce/core/output/GeoCoordinatesListOutput.java b/src/main/java/io/lettuce/core/output/GeoCoordinatesListOutput.java index bb51449cf1..ce3cef58e8 100644 --- a/src/main/java/io/lettuce/core/output/GeoCoordinatesListOutput.java +++ b/src/main/java/io/lettuce/core/output/GeoCoordinatesListOutput.java @@ -39,7 +39,7 @@ public void set(ByteBuffer bytes) { return; } - double value = (bytes == null) ? 0 : parseDouble(decodeAscii(bytes)); + double value = (bytes == null) ? 0 : parseDouble(decodeString(bytes)); set(value); } diff --git a/src/main/java/io/lettuce/core/output/GeoCoordinatesValueListOutput.java b/src/main/java/io/lettuce/core/output/GeoCoordinatesValueListOutput.java index 4bd8927c2a..7fbb3f93ce 100644 --- a/src/main/java/io/lettuce/core/output/GeoCoordinatesValueListOutput.java +++ b/src/main/java/io/lettuce/core/output/GeoCoordinatesValueListOutput.java @@ -40,7 +40,7 @@ public void set(ByteBuffer bytes) { return; } - double value = parseDouble(decodeAscii(bytes)); + double value = parseDouble(decodeString(bytes)); set(value); } diff --git a/src/main/java/io/lettuce/core/output/GeoWithinListOutput.java b/src/main/java/io/lettuce/core/output/GeoWithinListOutput.java index 01d4941915..5a13bbd040 100644 --- a/src/main/java/io/lettuce/core/output/GeoWithinListOutput.java +++ b/src/main/java/io/lettuce/core/output/GeoWithinListOutput.java @@ -73,7 +73,7 @@ public void set(ByteBuffer bytes) { return; } - double value = (bytes == null) ? 0 : parseDouble(decodeAscii(bytes)); + double value = (bytes == null) ? 0 : parseDouble(decodeString(bytes)); set(value); } diff --git a/src/main/java/io/lettuce/core/output/JsonTypeListOutput.java b/src/main/java/io/lettuce/core/output/JsonTypeListOutput.java index 96f942f280..942d80cd3c 100644 --- a/src/main/java/io/lettuce/core/output/JsonTypeListOutput.java +++ b/src/main/java/io/lettuce/core/output/JsonTypeListOutput.java @@ -35,7 +35,7 @@ public void set(ByteBuffer bytes) { multi(1); } - output.add(JsonType.fromString(decodeAscii(bytes))); + output.add(JsonType.fromString(decodeString(bytes))); } @Override diff --git a/src/main/java/io/lettuce/core/output/KeyValueListScoredValueOutput.java b/src/main/java/io/lettuce/core/output/KeyValueListScoredValueOutput.java index d4b79034f7..e3b1b62ed6 100644 --- a/src/main/java/io/lettuce/core/output/KeyValueListScoredValueOutput.java +++ b/src/main/java/io/lettuce/core/output/KeyValueListScoredValueOutput.java @@ -45,7 +45,7 @@ public void set(ByteBuffer bytes) { value = codec.decodeValue(bytes); return; } - score = parseDouble(decodeAscii(bytes)); + score = parseDouble(decodeString(bytes)); } } diff --git a/src/main/java/io/lettuce/core/output/KeyValueOfScoredValueOutput.java b/src/main/java/io/lettuce/core/output/KeyValueOfScoredValueOutput.java index 6bb09df871..fc730b7946 100644 --- a/src/main/java/io/lettuce/core/output/KeyValueOfScoredValueOutput.java +++ b/src/main/java/io/lettuce/core/output/KeyValueOfScoredValueOutput.java @@ -40,7 +40,7 @@ public void set(ByteBuffer bytes) { return; } - output = KeyValue.just(key, ScoredValue.just(parseDouble(decodeAscii(bytes)), value)); + output = KeyValue.just(key, ScoredValue.just(parseDouble(decodeString(bytes)), value)); } } diff --git a/src/main/java/io/lettuce/core/output/KeyValueScoredValueOutput.java b/src/main/java/io/lettuce/core/output/KeyValueScoredValueOutput.java index 994735d614..bbeb0484ff 100644 --- a/src/main/java/io/lettuce/core/output/KeyValueScoredValueOutput.java +++ b/src/main/java/io/lettuce/core/output/KeyValueScoredValueOutput.java @@ -48,7 +48,7 @@ public void set(ByteBuffer bytes) { return; } - double score = LettuceStrings.toDouble(decodeAscii(bytes)); + double score = LettuceStrings.toDouble(decodeString(bytes)); set(score); } diff --git a/src/main/java/io/lettuce/core/output/MultiOutput.java b/src/main/java/io/lettuce/core/output/MultiOutput.java index 949a64cbfa..c8cc277813 100644 --- a/src/main/java/io/lettuce/core/output/MultiOutput.java +++ b/src/main/java/io/lettuce/core/output/MultiOutput.java @@ -133,7 +133,7 @@ public void setError(ByteBuffer error) { } CommandOutput output = queue.isEmpty() ? this : queue.peek().getOutput(); - output.setError(decodeAscii(error)); + output.setError(decodeString(error)); } @Override diff --git a/src/main/java/io/lettuce/core/output/NumberListOutput.java b/src/main/java/io/lettuce/core/output/NumberListOutput.java index cbbb9bd9b3..70041984da 100644 --- a/src/main/java/io/lettuce/core/output/NumberListOutput.java +++ b/src/main/java/io/lettuce/core/output/NumberListOutput.java @@ -65,7 +65,7 @@ public void multi(int count) { private Number parseNumber(ByteBuffer bytes) { Number result = 0; try { - result = NumberFormat.getNumberInstance().parse(decodeAscii(bytes)); + result = NumberFormat.getNumberInstance().parse(decodeString(bytes)); } catch (ParseException e) { LOG.warn("Failed to parse " + bytes, e); } diff --git a/src/main/java/io/lettuce/core/output/PendingMessageListOutput.java b/src/main/java/io/lettuce/core/output/PendingMessageListOutput.java index ed1c8957da..306ec4ce25 100644 --- a/src/main/java/io/lettuce/core/output/PendingMessageListOutput.java +++ b/src/main/java/io/lettuce/core/output/PendingMessageListOutput.java @@ -41,7 +41,7 @@ public PendingMessageListOutput(RedisCodec codec) { public void set(ByteBuffer bytes) { if (messageId == null) { - messageId = decodeAscii(bytes); + messageId = decodeString(bytes); return; } @@ -51,7 +51,7 @@ public void set(ByteBuffer bytes) { return; } - set(Long.parseLong(decodeAscii(bytes))); + set(Long.parseLong(decodeString(bytes))); } @Override diff --git a/src/main/java/io/lettuce/core/output/PendingMessagesOutput.java b/src/main/java/io/lettuce/core/output/PendingMessagesOutput.java index 3c66f6dc6e..b8c942a7f6 100644 --- a/src/main/java/io/lettuce/core/output/PendingMessagesOutput.java +++ b/src/main/java/io/lettuce/core/output/PendingMessagesOutput.java @@ -39,12 +39,12 @@ public PendingMessagesOutput(RedisCodec codec) { public void set(ByteBuffer bytes) { if (messageIdsFrom == null) { - messageIdsFrom = decodeAscii(bytes); + messageIdsFrom = decodeString(bytes); return; } if (messageIdsTo == null) { - messageIdsTo = decodeAscii(bytes); + messageIdsTo = decodeString(bytes); return; } @@ -54,7 +54,7 @@ public void set(ByteBuffer bytes) { return; } - set(Long.parseLong(decodeAscii(bytes))); + set(Long.parseLong(decodeString(bytes))); } @Override diff --git a/src/main/java/io/lettuce/core/output/ScanOutput.java b/src/main/java/io/lettuce/core/output/ScanOutput.java index 92a32aa21b..c6a9168778 100644 --- a/src/main/java/io/lettuce/core/output/ScanOutput.java +++ b/src/main/java/io/lettuce/core/output/ScanOutput.java @@ -24,7 +24,7 @@ public ScanOutput(RedisCodec codec, T cursor) { public void set(ByteBuffer bytes) { if (output.getCursor() == null) { - output.setCursor(decodeAscii(bytes)); + output.setCursor(decodeString(bytes)); if (LettuceStrings.isNotEmpty(output.getCursor()) && "0".equals(output.getCursor())) { output.setFinished(true); } diff --git a/src/main/java/io/lettuce/core/output/ScoredValueListOutput.java b/src/main/java/io/lettuce/core/output/ScoredValueListOutput.java index 2c2179683c..28c6ec9b2e 100644 --- a/src/main/java/io/lettuce/core/output/ScoredValueListOutput.java +++ b/src/main/java/io/lettuce/core/output/ScoredValueListOutput.java @@ -60,7 +60,7 @@ public void set(ByteBuffer bytes) { return; } - double score = LettuceStrings.toDouble(decodeAscii(bytes)); + double score = LettuceStrings.toDouble(decodeString(bytes)); set(score); } diff --git a/src/main/java/io/lettuce/core/output/ScoredValueOutput.java b/src/main/java/io/lettuce/core/output/ScoredValueOutput.java index 08d57798d7..c0db5d1b9c 100644 --- a/src/main/java/io/lettuce/core/output/ScoredValueOutput.java +++ b/src/main/java/io/lettuce/core/output/ScoredValueOutput.java @@ -37,7 +37,7 @@ public void set(ByteBuffer bytes) { return; } - double score = LettuceStrings.toDouble(decodeAscii(bytes)); + double score = LettuceStrings.toDouble(decodeString(bytes)); set(score); } diff --git a/src/main/java/io/lettuce/core/output/ScoredValueScanOutput.java b/src/main/java/io/lettuce/core/output/ScoredValueScanOutput.java index c7f8dc57e1..3e777df462 100644 --- a/src/main/java/io/lettuce/core/output/ScoredValueScanOutput.java +++ b/src/main/java/io/lettuce/core/output/ScoredValueScanOutput.java @@ -33,7 +33,7 @@ protected void setOutput(ByteBuffer bytes) { return; } - double score = LettuceStrings.toDouble(decodeAscii(bytes)); + double score = LettuceStrings.toDouble(decodeString(bytes)); set(score); } diff --git a/src/main/java/io/lettuce/core/output/ScoredValueScanStreamingOutput.java b/src/main/java/io/lettuce/core/output/ScoredValueScanStreamingOutput.java index 352febdaff..3a15f92156 100644 --- a/src/main/java/io/lettuce/core/output/ScoredValueScanStreamingOutput.java +++ b/src/main/java/io/lettuce/core/output/ScoredValueScanStreamingOutput.java @@ -35,7 +35,7 @@ protected void setOutput(ByteBuffer bytes) { return; } - double score = LettuceStrings.toDouble(decodeAscii(bytes)); + double score = LettuceStrings.toDouble(decodeString(bytes)); set(score); } diff --git a/src/main/java/io/lettuce/core/output/ScoredValueStreamingOutput.java b/src/main/java/io/lettuce/core/output/ScoredValueStreamingOutput.java index aecb443c7c..919d522faa 100644 --- a/src/main/java/io/lettuce/core/output/ScoredValueStreamingOutput.java +++ b/src/main/java/io/lettuce/core/output/ScoredValueStreamingOutput.java @@ -35,7 +35,7 @@ public void set(ByteBuffer bytes) { return; } - double score = LettuceStrings.toDouble(decodeAscii(bytes)); + double score = LettuceStrings.toDouble(decodeString(bytes)); set(score); } diff --git a/src/main/java/io/lettuce/core/output/SocketAddressOutput.java b/src/main/java/io/lettuce/core/output/SocketAddressOutput.java index b8cf652649..2a19ed04bb 100644 --- a/src/main/java/io/lettuce/core/output/SocketAddressOutput.java +++ b/src/main/java/io/lettuce/core/output/SocketAddressOutput.java @@ -26,12 +26,12 @@ public SocketAddressOutput(RedisCodec codec) { public void set(ByteBuffer bytes) { if (!hasHostname) { - hostname = decodeAscii(bytes); + hostname = decodeString(bytes); hasHostname = true; return; } - int port = Integer.parseInt(decodeAscii(bytes)); + int port = Integer.parseInt(decodeString(bytes)); output = InetSocketAddress.createUnresolved(hostname, port); } diff --git a/src/main/java/io/lettuce/core/output/StatusOutput.java b/src/main/java/io/lettuce/core/output/StatusOutput.java index 9024b01de6..f62d304888 100644 --- a/src/main/java/io/lettuce/core/output/StatusOutput.java +++ b/src/main/java/io/lettuce/core/output/StatusOutput.java @@ -41,7 +41,7 @@ public StatusOutput(RedisCodec codec) { @Override public void set(ByteBuffer bytes) { - output = OK.equals(bytes) ? "OK" : decodeAscii(bytes); + output = OK.equals(bytes) ? "OK" : decodeString(bytes); } } diff --git a/src/main/java/io/lettuce/core/output/StreamMessageListOutput.java b/src/main/java/io/lettuce/core/output/StreamMessageListOutput.java index c2d0b603ba..84493f80be 100644 --- a/src/main/java/io/lettuce/core/output/StreamMessageListOutput.java +++ b/src/main/java/io/lettuce/core/output/StreamMessageListOutput.java @@ -41,7 +41,7 @@ public StreamMessageListOutput(RedisCodec codec, K stream) { public void set(ByteBuffer bytes) { if (id == null) { - id = decodeAscii(bytes); + id = decodeString(bytes); return; } diff --git a/src/main/java/io/lettuce/core/output/StreamReadOutput.java b/src/main/java/io/lettuce/core/output/StreamReadOutput.java index 67186df93e..977b7bf86b 100644 --- a/src/main/java/io/lettuce/core/output/StreamReadOutput.java +++ b/src/main/java/io/lettuce/core/output/StreamReadOutput.java @@ -52,7 +52,7 @@ public void set(ByteBuffer bytes) { } if (id == null) { - id = decodeAscii(bytes); + id = decodeString(bytes); return; } diff --git a/src/main/java/io/lettuce/core/output/StringListOutput.java b/src/main/java/io/lettuce/core/output/StringListOutput.java index df60ecbfb3..eecdb773e8 100644 --- a/src/main/java/io/lettuce/core/output/StringListOutput.java +++ b/src/main/java/io/lettuce/core/output/StringListOutput.java @@ -32,7 +32,7 @@ public void set(ByteBuffer bytes) { multi(1); } - subscriber.onNext(output, bytes == null ? null : decodeAscii(bytes)); + subscriber.onNext(output, bytes == null ? null : decodeString(bytes)); } @Override diff --git a/src/main/java/io/lettuce/core/output/StringValueListOutput.java b/src/main/java/io/lettuce/core/output/StringValueListOutput.java index 12b0e46313..d69dbeaceb 100644 --- a/src/main/java/io/lettuce/core/output/StringValueListOutput.java +++ b/src/main/java/io/lettuce/core/output/StringValueListOutput.java @@ -30,7 +30,7 @@ public StringValueListOutput(RedisCodec codec) { @Override public void set(ByteBuffer bytes) { - subscriber.onNext(output, bytes == null ? Value.empty() : Value.fromNullable(decodeAscii(bytes))); + subscriber.onNext(output, bytes == null ? Value.empty() : Value.fromNullable(decodeString(bytes))); } @Override diff --git a/src/main/java/io/lettuce/core/pubsub/PubSubOutput.java b/src/main/java/io/lettuce/core/pubsub/PubSubOutput.java index 0ec41ff646..012e7e4fcb 100644 --- a/src/main/java/io/lettuce/core/pubsub/PubSubOutput.java +++ b/src/main/java/io/lettuce/core/pubsub/PubSubOutput.java @@ -93,7 +93,7 @@ public void set(ByteBuffer bytes) { } if (type == null) { - type = Type.valueOf(decodeAscii(bytes)); + type = Type.valueOf(decodeString(bytes)); return; } diff --git a/src/test/java/io/lettuce/core/commands/AclCommandIntegrationTests.java b/src/test/java/io/lettuce/core/commands/AclCommandIntegrationTests.java index 4d154dc0f7..7fbeb7cf9f 100644 --- a/src/test/java/io/lettuce/core/commands/AclCommandIntegrationTests.java +++ b/src/test/java/io/lettuce/core/commands/AclCommandIntegrationTests.java @@ -131,7 +131,7 @@ void aclLog() { @Test void aclList() { - assertThat(redis.aclList()).hasSize(2).first().asString().contains("user default"); + assertThat(redis.aclList()).hasSize(1).first().asString().contains("user default"); } @Test @@ -161,7 +161,7 @@ void aclSetuserWithCategories() { @Test void aclUsers() { - assertThat(redis.aclUsers()).hasSize(2).first().isEqualTo("default"); + assertThat(redis.aclUsers()).hasSize(1).first().isEqualTo("default"); } @Test diff --git a/src/test/jmh/io/lettuce/core/dynamic/RedisCommandFactoryBenchmark.java b/src/test/jmh/io/lettuce/core/dynamic/RedisCommandFactoryBenchmark.java index 83ce325998..631e184099 100644 --- a/src/test/jmh/io/lettuce/core/dynamic/RedisCommandFactoryBenchmark.java +++ b/src/test/jmh/io/lettuce/core/dynamic/RedisCommandFactoryBenchmark.java @@ -32,7 +32,7 @@ public void setup() { redisCommandFactory = new RedisCommandFactory(new MockStatefulConnection(EmptyRedisChannelWriter.INSTANCE)); regularCommands = redisCommandFactory.getCommands(RegularCommands.class); - asyncCommands = new RedisAsyncCommandsImpl<>(EmptyStatefulRedisConnection.INSTANCE, StringCodec.UTF8, Mono.just(new DefaultJsonParser())); + asyncCommands = new RedisAsyncCommandsImpl<>(EmptyStatefulRedisConnection.INSTANCE, StringCodec.UTF8); } @Benchmark diff --git a/src/test/resources/log4j2-test.xml b/src/test/resources/log4j2-test.xml index efb5371536..981918b55e 100644 --- a/src/test/resources/log4j2-test.xml +++ b/src/test/resources/log4j2-test.xml @@ -12,8 +12,10 @@ - + +