protected void initializeScanners(Scan scan, List<KeyValueScanner> additionalScanners) throws IOException { // Here we separate all scanners into two lists - scanner that provide data required // by the filter to operate (scanners list) and all others (joinedScanners list). List<KeyValueScanner> scanners = new ArrayList<>(scan.getFamilyMap().size()); List<KeyValueScanner> joinedScanners = new ArrayList<>(scan.getFamilyMap().size()); // Store all already instantiated scanners for exception handling List<KeyValueScanner> instantiatedScanners = new ArrayList<>(); // handle additionalScanners if (additionalScanners != null && !additionalScanners.isEmpty()) { scanners.addAll(additionalScanners); instantiatedScanners.addAll(additionalScanners); } try { for (Map.Entry<byte[], NavigableSet<byte[]>> entry : scan.getFamilyMap().entrySet()) { HStore store = stores.get(entry.getKey()); KeyValueScanner scanner = store.getScanner(scan, entry.getValue(), this.readPt); instantiatedScanners.add(scanner); if (this.filter == null || !scan.doLoadColumnFamiliesOnDemand() || this.filter.isFamilyEssential(entry.getKey())) { scanners.add(scanner); } else { joinedScanners.add(scanner); } } initializeKVHeap(scanners, joinedScanners, region); } catch (Throwable t) { throw handleException(instantiatedScanners, t); } }
/** * Do a small get/scan against one store. This is required because store * has no actual methods of querying itself, and relies on StoreScanner. */ public static List<Cell> getFromStoreFile(HStore store, Get get) throws IOException { Scan scan = new Scan(get); InternalScanner scanner = (InternalScanner) store.getScanner(scan, scan.getFamilyMap().get(store.getColumnFamilyDescriptor().getName()), // originally MultiVersionConcurrencyControl.resetThreadReadPoint() was called to set // readpoint 0. 0); List<Cell> result = new ArrayList<>(); scanner.next(result); if (!result.isEmpty()) { // verify that we are on the row we want: Cell kv = result.get(0); if (!CellUtil.matchingRows(kv, get.getRow())) { result.clear(); } } scanner.close(); return result; }
inputCellsAfterSnapshot.forEach(c -> store.add(c, null)); int numberOfMemScannersBeforeFlush = inputCellsAfterSnapshot.isEmpty() ? 1 : 2; try (StoreScanner s = (StoreScanner) store.getScanner(new Scan(), quals, seqId)) {
InternalScanner scanner = (InternalScanner) store.getScanner( new Scan(new Get(row)), quals, seqId + 1); service.shutdown();
quals.add(qf2); quals.add(qf3); try (InternalScanner scanner = (InternalScanner) store.getScanner( new Scan(new Get(row)), quals, seqId)) { List<Cell> results = new MyList<>(size -> {
.withStartRow(r1) .setFilter(filter); try (InternalScanner scanner = (InternalScanner) store.getScanner( scan, null, seqId + 3)){
/** * Do a small get/scan against one store. This is required because store * has no actual methods of querying itself, and relies on StoreScanner. */ public static List<Cell> getFromStoreFile(HStore store, Get get) throws IOException { Scan scan = new Scan(get); InternalScanner scanner = (InternalScanner) store.getScanner(scan, scan.getFamilyMap().get(store.getColumnFamilyDescriptor().getName()), // originally MultiVersionConcurrencyControl.resetThreadReadPoint() was called to set // readpoint 0. 0); List<Cell> result = new ArrayList<>(); scanner.next(result); if (!result.isEmpty()) { // verify that we are on the row we want: Cell kv = result.get(0); if (!CellUtil.matchingRows(kv, get.getRow())) { result.clear(); } } scanner.close(); return result; }
inputCellsAfterSnapshot.forEach(c -> store.add(c, null)); int numberOfMemScannersBeforeFlush = inputCellsAfterSnapshot.isEmpty() ? 1 : 2; try (StoreScanner s = (StoreScanner) store.getScanner(new Scan(), quals, seqId)) {
InternalScanner scanner = (InternalScanner) store.getScanner( new Scan(new Get(row)), quals, seqId + 1); service.shutdown();
quals.add(qf2); quals.add(qf3); try (InternalScanner scanner = (InternalScanner) store.getScanner( new Scan(new Get(row)), quals, seqId)) { List<Cell> results = new MyList<>(size -> {
.withStartRow(r1) .setFilter(filter); try (InternalScanner scanner = (InternalScanner) store.getScanner( scan, null, seqId + 3)){