继续看StoreScanner.next,这篇里将看到如何找到下一行数据。依然是一段巨长的代码,而且里面好多TODO是什么鬼?!
- 上来先这个StoreScanner先把自己锁了,方法的最后在把自己解锁。
@Override
public boolean next(List<Cell> outResult, ScannerContext scannerContext) throws IOException {
lock.lock();
try {
...
} finally {
lock.unlock();
}
}
- 从this.heap拿到一个值,并且把row key记录在matcher里。在这个Store有值的情况下,下一定能拿到值,在创建这个StoreScanner的时候,会根据设置的startRow,直接跳到这一行,从这一行开始,默认从文件第一行开始。