hbase mvcc

  MVCC相关源码:

  在HBase put源码中 http://blackproof.iteye.com/blog/2197710

  有mvcc用hregion的mvcc的write point,在生成mvcc的readpoint

  KeyValueHeap类的next获取cell的时候使用keyvalue的mvcc的readpoint,判断是否取当前kv

  

/**
   * Gets the next row of keys from the top-most scanner.
   * 

* This method takes care of updating the heap. *

* This can ONLY be called when you are using Scanners that implement * InternalScanner as well as KeyValueScanner (a {@link StoreScanner}). * @param result * @param limit * @return true if there are more keys, false if all scanners are done */ public boolean next(List result, int limit) throws IOException { if (this.current == null) { return false; } InternalScanner currentAsInternal = (InternalScanner)this.current; boolean mayContainMoreRows = currentAsInternal.next(result, limit); KeyValue pee = this.current.peek(); /* * By definition, any InternalScanner must return false only when it has no * further rows to be fetched. So, we can close a scanner if it returns * false. All existing implementations seem to be fine with this. It is much * more efficient to close scanners which are not needed than keep them in * the heap. This is also required for certain optimizations. */ if (pee == null || !mayContainMoreRows) { this.current.close(); } else { this.heap.add(this.current); } this.current = pollRealKV(); return (this.current != null); }

 

你可能感兴趣的:(hbase)