+ * Scan scan = new Scan();
+ * // set scan properties(rowkey range, filters, timerange etc).
+ * HTable ht = ...;
+ * long noOfDeletedRows = 0L;
+ * Batch.Call<BulkDeleteService, BulkDeleteResponse> callable =
+ * new Batch.Call<BulkDeleteService, BulkDeleteResponse>() {
+ * ServerRpcController controller = new ServerRpcController();
+ * BlockingRpcCallback<BulkDeleteResponse> rpcCallback =
+ * new BlockingRpcCallback<BulkDeleteResponse>();
+ *
+ * public BulkDeleteResponse call(BulkDeleteService service) throws IOException {
+ * Builder builder = BulkDeleteRequest.newBuilder();
+ * builder.setScan(ProtobufUtil.toScan(scan));
+ * builder.setDeleteType(DeleteType.VERSION);
+ * builder.setRowBatchSize(rowBatchSize);
+ * // Set optional timestamp if needed
+ * builder.setTimestamp(timeStamp);
+ * service.delete(controller, builder.build(), rpcCallback);
+ * return rpcCallback.get();
+ * }
+ * };
+ * Map<byte[], BulkDeleteResponse> result = ht.coprocessorService(BulkDeleteService.class, scan
+ * .getStartRow(), scan.getStopRow(), callable);
+ * for (BulkDeleteResponse response : result.values()) {
+ * noOfDeletedRows += response.getRowsDeleted();
+ * }
+ *
+ */
+public class BulkDeleteEndpoint extends BulkDeleteService implements CoprocessorService,
+ Coprocessor {
+ private static final String NO_OF_VERSIONS_TO_DELETE = "noOfVersionsToDelete";
+ private static final Log LOG = LogFactory.getLog(BulkDeleteEndpoint.class);
+
+ private RegionCoprocessorEnvironment env;
+
+ @Override
+ public Service getService() {
+ return this;
+ }
+
+ @Override
+ public void delete(RpcController controller, BulkDeleteRequest request,
+ RpcCallback