public static boolean hasWhileMatchFilter(Filter filter) { if (filter instanceof WhileMatchFilter) { return true; } if (filter instanceof FilterList) { FilterList list = (FilterList) filter; for (Filter subFilter : list.getFilters()) { if (hasWhileMatchFilter(subFilter)) { return true; } } } return false; }
public static boolean hasWhileMatchFilter(Filter filter) { if (filter instanceof WhileMatchFilter) { return true; } if (filter instanceof FilterList) { FilterList list = (FilterList) filter; for (Filter subFilter : list.getFilters()) { if (hasWhileMatchFilter(subFilter)) { return true; } } } return false; }
/** * {@inheritDoc} */ @Override public CompletableFuture<List<Result>> scanAll(Scan scan) { if (AbstractBigtableTable.hasWhileMatchFilter(scan.getFilter())) { throw new UnsupportedOperationException( "scanAll with while match filter is not allowed"); } return client.readFlatRowsAsync(hbaseAdapter.adapt(scan)) .thenApply(list -> map(list, Adapters.FLAT_ROW_ADAPTER::adaptResponse)); }
/** * {@inheritDoc} */ @Override public CompletableFuture<List<Result>> scanAll(Scan scan) { if (AbstractBigtableTable.hasWhileMatchFilter(scan.getFilter())) { throw new UnsupportedOperationException( "scanAll with while match filter is not allowed"); } return client.readFlatRowsAsync(hbaseAdapter.adapt(scan)) .thenApply(list -> map(list, Adapters.FLAT_ROW_ADAPTER::adaptResponse)); }
/** * {@inheritDoc} */ public void scan(Scan scan, final ScanResultConsumer consumer) { if (AbstractBigtableTable.hasWhileMatchFilter(scan.getFilter())) { throw new UnsupportedOperationException( "scan with consumer and while match filter is not allowed"); } client.getClient().readFlatRows(hbaseAdapter.adapt(scan), new StreamObserver<FlatRow>() { @Override public void onNext(FlatRow value) { consumer.onNext(Adapters.FLAT_ROW_ADAPTER.adaptResponse(value)); } @Override public void onError(Throwable t) { consumer.onError(t); } @Override public void onCompleted() { consumer.onComplete(); } }); }
/** * {@inheritDoc} */ public void scan(Scan scan, final ScanResultConsumer consumer) { if (AbstractBigtableTable.hasWhileMatchFilter(scan.getFilter())) { throw new UnsupportedOperationException( "scan with consumer and while match filter is not allowed"); } client.getClient().readFlatRows(hbaseAdapter.adapt(scan), new StreamObserver<FlatRow>() { @Override public void onNext(FlatRow value) { consumer.onNext(Adapters.FLAT_ROW_ADAPTER.adaptResponse(value)); } @Override public void onError(Throwable t) { consumer.onError(t); } @Override public void onCompleted() { consumer.onComplete(); } }); }
/** {@inheritDoc} */ @Override public ResultScanner getScanner(Scan scan) throws IOException { LOG.trace("getScanner(Scan)"); Span span = TRACER.spanBuilder("BigtableTable.scan").startSpan(); try (Scope scope = TRACER.withSpan(span)) { com.google.cloud.bigtable.grpc.scanner.ResultScanner<FlatRow> scanner = client.readFlatRows(hbaseAdapter.adapt(scan)); if (hasWhileMatchFilter(scan.getFilter())) { return Adapters.BIGTABLE_WHILE_MATCH_RESULT_RESULT_SCAN_ADAPTER.adapt(scanner, span); } return Adapters.BIGTABLE_RESULT_SCAN_ADAPTER.adapt(scanner, span); } catch (Throwable throwable) { LOG.error("Encountered exception when executing getScanner.", throwable); span.setStatus(Status.UNKNOWN); // Close the span only when throw an exception and not on finally because if no exception // the span will be ended by the adapter. span.end(); throw new IOException( makeGenericExceptionMessage( "getScanner", options.getProjectId(), tableName.getQualifierAsString()), throwable); } }
/** {@inheritDoc} */ @Override public ResultScanner getScanner(Scan scan) throws IOException { LOG.trace("getScanner(Scan)"); Span span = TRACER.spanBuilder("BigtableTable.scan").startSpan(); try (Scope scope = TRACER.withSpan(span)) { com.google.cloud.bigtable.grpc.scanner.ResultScanner<FlatRow> scanner = client.readFlatRows(hbaseAdapter.adapt(scan)); if (hasWhileMatchFilter(scan.getFilter())) { return Adapters.BIGTABLE_WHILE_MATCH_RESULT_RESULT_SCAN_ADAPTER.adapt(scanner, span); } return Adapters.BIGTABLE_RESULT_SCAN_ADAPTER.adapt(scanner, span); } catch (Throwable throwable) { LOG.error("Encountered exception when executing getScanner.", throwable); span.setStatus(Status.UNKNOWN); // Close the span only when throw an exception and not on finally because if no exception // the span will be ended by the adapter. span.end(); throw new IOException( makeGenericExceptionMessage( "getScanner", options.getProjectId(), tableName.getQualifierAsString()), throwable); } }
com.google.cloud.bigtable.grpc.scanner.ResultScanner<FlatRow> scanner = client.getClient().readFlatRows(hbaseAdapter.adapt(scan)); if (AbstractBigtableTable.hasWhileMatchFilter(scan.getFilter())) { return Adapters.BIGTABLE_WHILE_MATCH_RESULT_RESULT_SCAN_ADAPTER.adapt(scanner, span);
com.google.cloud.bigtable.grpc.scanner.ResultScanner<FlatRow> scanner = client.getClient().readFlatRows(hbaseAdapter.adapt(scan)); if (AbstractBigtableTable.hasWhileMatchFilter(scan.getFilter())) { return Adapters.BIGTABLE_WHILE_MATCH_RESULT_RESULT_SCAN_ADAPTER.adapt(scanner, span);