use of com.pingcap.tidb.tipb.DAGRequest in project client-java by tikv.
the class RegionStoreClient method coprocessStreaming.
// TODO: wait for future fix
// coprocessStreaming doesn't handle split error
// future work should handle it and do the resolve
// locks correspondingly
public Iterator<SelectResponse> coprocessStreaming(DAGRequest req, List<Coprocessor.KeyRange> ranges, long startTs) {
boolean forWrite = false;
Supplier<Coprocessor.Request> reqToSend = () -> Coprocessor.Request.newBuilder().setContext(makeContext(getResolvedLocks(startTs), this.storeType, SlowLogEmptyImpl.INSTANCE)).setTp(REQ_TYPE_DAG.getValue()).setData(req.toByteString()).addAllRanges(ranges).build();
KVErrorHandler<StreamingResponse> handler = new KVErrorHandler<>(regionManager, this, lockResolverClient, // TODO: handle all errors in streaming response
StreamingResponse::getFirstRegionError, resp -> null, resolveLockResult -> addResolvedLocks(startTs, resolveLockResult.getResolvedLocks()), startTs, forWrite);
StreamingResponse responseIterator = this.callServerStreamingWithRetry(ConcreteBackOffer.newCopNextMaxBackOff(pdClient.getClusterId()), TikvGrpc.getCoprocessorStreamMethod(), reqToSend, handler);
return doCoprocessor(responseIterator);
}
Aggregations