From aacbb8c849a7c49415cf6a0c0a7f9969583539ff Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Mon, 6 Jun 2022 21:22:03 +0800 Subject: [PATCH] [close #606]: change the default prefix for API v2 (#607) --- .../common/apiversion/RequestKeyV2Codec.java | 18 +++++++++--------- .../apiversion/RequestKeyV2RawCodec.java | 4 ++-- .../apiversion/RequestKeyV2TxnCodec.java | 4 ++-- .../common/apiversion/RequestKeyCodecTest.java | 7 ++++--- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/tikv/common/apiversion/RequestKeyV2Codec.java b/src/main/java/org/tikv/common/apiversion/RequestKeyV2Codec.java index 2af25a1ab9..11db11c641 100644 --- a/src/main/java/org/tikv/common/apiversion/RequestKeyV2Codec.java +++ b/src/main/java/org/tikv/common/apiversion/RequestKeyV2Codec.java @@ -23,15 +23,15 @@ import org.tikv.kvproto.Metapb; import org.tikv.kvproto.Metapb.Region; public class RequestKeyV2Codec implements RequestKeyCodec { - protected static final ByteString RAW_KEY_PREFIX = ByteString.copyFromUtf8("r"); - protected static final ByteString RAW_END_KEY = - ByteString.copyFrom(new byte[] {(byte) (RAW_KEY_PREFIX.toByteArray()[0] + 1)}); - - protected static final ByteString TXN_KEY_PREFIX = ByteString.copyFromUtf8("x"); - protected static final ByteString TXN_END_KEY = - ByteString.copyFrom(new byte[] {(byte) (TXN_KEY_PREFIX.toByteArray()[0] + 1)}); + protected static final ByteString RAW_DEFAULT_PREFIX = + ByteString.copyFrom(new byte[] {'r', 0, 0, 0}); + protected static final ByteString RAW_DEFAULT_END = + ByteString.copyFrom(new byte[] {'r', 0, 0, 1}); + protected static final ByteString TXN_DEFAULT_PREFIX = + ByteString.copyFrom(new byte[] {'x', 0, 0, 0}); + protected static final ByteString TXN_DEFAULT_END = + ByteString.copyFrom(new byte[] {'x', 0, 0, 1}); protected ByteString keyPrefix; - protected ByteString infiniteEndKey; @Override @@ -49,7 +49,7 @@ public class RequestKeyV2Codec implements RequestKeyCodec { throw new IllegalArgumentException("key corrupted, wrong prefix"); } - return key.substring(1); + return key.substring(keyPrefix.size()); } @Override diff --git a/src/main/java/org/tikv/common/apiversion/RequestKeyV2RawCodec.java b/src/main/java/org/tikv/common/apiversion/RequestKeyV2RawCodec.java index 255815d840..432f6d2e8a 100644 --- a/src/main/java/org/tikv/common/apiversion/RequestKeyV2RawCodec.java +++ b/src/main/java/org/tikv/common/apiversion/RequestKeyV2RawCodec.java @@ -21,7 +21,7 @@ public class RequestKeyV2RawCodec extends RequestKeyV2Codec { public RequestKeyV2RawCodec() { super(); - this.keyPrefix = RAW_KEY_PREFIX; - this.infiniteEndKey = RAW_END_KEY; + this.keyPrefix = RAW_DEFAULT_PREFIX; + this.infiniteEndKey = RAW_DEFAULT_END; } } diff --git a/src/main/java/org/tikv/common/apiversion/RequestKeyV2TxnCodec.java b/src/main/java/org/tikv/common/apiversion/RequestKeyV2TxnCodec.java index 9fe0effccd..3690a46cf7 100644 --- a/src/main/java/org/tikv/common/apiversion/RequestKeyV2TxnCodec.java +++ b/src/main/java/org/tikv/common/apiversion/RequestKeyV2TxnCodec.java @@ -21,7 +21,7 @@ public class RequestKeyV2TxnCodec extends RequestKeyV2Codec { public RequestKeyV2TxnCodec() { super(); - this.keyPrefix = TXN_KEY_PREFIX; - this.infiniteEndKey = TXN_END_KEY; + this.keyPrefix = TXN_DEFAULT_PREFIX; + this.infiniteEndKey = TXN_DEFAULT_END; } } diff --git a/src/test/java/org/tikv/common/apiversion/RequestKeyCodecTest.java b/src/test/java/org/tikv/common/apiversion/RequestKeyCodecTest.java index 24cbf3012a..871a20cdf2 100644 --- a/src/test/java/org/tikv/common/apiversion/RequestKeyCodecTest.java +++ b/src/test/java/org/tikv/common/apiversion/RequestKeyCodecTest.java @@ -164,9 +164,10 @@ public class RequestKeyCodecTest { end = ByteString.EMPTY; range = v2.encodeRange(start, end); assertEquals(v2.encodeKey(start), range.first); - assertArrayEquals( - new byte[] {(byte) (v2.encodeKey(ByteString.EMPTY).byteAt(0) + 1)}, - range.second.toByteArray()); + + byte[] max = v2.encodeKey(ByteString.EMPTY).toByteArray(); + max[max.length - 1] += 1; + assertArrayEquals(max, range.second.toByteArray()); region = Region.newBuilder()