Called instead of openScanner() in order to do an additional META lookup to find next region we will be scanning. @param scanner The scanner to open. @return A deferred scanner ID (long) if HBase 0.94 and before, or a deferred Scanner.Response if HBase 0.95 and up.
(final Scanner scanner)
| 1522 | * deferred {@link Scanner.Response} if HBase 0.95 and up. |
| 1523 | */ |
| 1524 | Deferred<Object> openReverseScanner(final Scanner scanner){ |
| 1525 | return locateRegionClosestBeforeKey( |
| 1526 | scanner.getOpenRequest(), scanner.table(), scanner.startKey()) |
| 1527 | .addCallbacks( |
| 1528 | new Callback<Object, Object>() { |
| 1529 | public Object call(final Object arg) { |
| 1530 | return openScanner(scanner, |
| 1531 | scanner.getOpenRequestForReverseScan( |
| 1532 | ((RegionLocation) arg).startKey())); |
| 1533 | } |
| 1534 | }, |
| 1535 | new Callback<Object, Object>() { |
| 1536 | public Object call(final Object error) { |
| 1537 | LOG.info("Lookup to construct reverse scanner failed on table " + |
| 1538 | Bytes.pretty(scanner.table()) + " and start key " + |
| 1539 | Bytes.pretty(scanner.startKey())); |
| 1540 | return error; |
| 1541 | } |
| 1542 | |
| 1543 | public String toString() { |
| 1544 | return "openReverseScanner errback"; |
| 1545 | } |
| 1546 | } |
| 1547 | ); |
| 1548 | } |
| 1549 | |
| 1550 | /** Singleton callback to handle responses of "openScanner" RPCs. */ |
| 1551 | private static final Callback<Object, Object> scanner_opened = |
no test coverage detected