fix getRegionByKey when using raw mode (#114)

Signed-off-by: birdstorm <samuelwyf@hotmail.com>
This commit is contained in:
birdstorm 2021-01-16 09:49:41 +08:00 committed by GitHub
parent 4fb17db417
commit ad8a392645
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 4 deletions

View File

@ -42,6 +42,7 @@ import java.util.concurrent.TimeUnit;
import java.util.function.Supplier; import java.util.function.Supplier;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tikv.common.TiConfiguration.KVMode;
import org.tikv.common.codec.Codec.BytesCodec; import org.tikv.common.codec.Codec.BytesCodec;
import org.tikv.common.codec.CodecDataOutput; import org.tikv.common.codec.CodecDataOutput;
import org.tikv.common.codec.KeyUtils; import org.tikv.common.codec.KeyUtils;
@ -207,12 +208,15 @@ public class PDClient extends AbstractGRPCClient<PDBlockingStub, PDStub>
@Override @Override
public TiRegion getRegionByKey(BackOffer backOffer, ByteString key) { public TiRegion getRegionByKey(BackOffer backOffer, ByteString key) {
CodecDataOutput cdo = new CodecDataOutput(); if (conf.getKvMode() == KVMode.TXN) {
BytesCodec.writeBytes(cdo, key.toByteArray()); CodecDataOutput cdo = new CodecDataOutput();
ByteString encodedKey = cdo.toByteString(); BytesCodec.writeBytes(cdo, key.toByteArray());
key = cdo.toByteString();
}
ByteString queryKey = key;
Supplier<GetRegionRequest> request = Supplier<GetRegionRequest> request =
() -> GetRegionRequest.newBuilder().setHeader(header).setRegionKey(encodedKey).build(); () -> GetRegionRequest.newBuilder().setHeader(header).setRegionKey(queryKey).build();
PDErrorHandler<GetRegionResponse> handler = PDErrorHandler<GetRegionResponse> handler =
new PDErrorHandler<>(getRegionResponseErrorExtractor, this); new PDErrorHandler<>(getRegionResponseErrorExtractor, this);