-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://review.cloudera.org/r/903/
-----------------------------------------------------------

Review request for hbase.


Summary
-------

Moved HLog split code into an HLogSplitter.  This patch was necessary for the 
hbase-transactional-indexed project to be able to properly extend various HBase 
classes to facilitate the management of a separate THLog.  As such, the patch 
also focuses on making some code more extensible.

Stack has already done a preliminary review of this patch and gave the comment:
"Do we have one way of overriding Writer -- e.g. in subclass provide
override of createWriterInstance -- but a different way making Readers
-- by setting class name to instantiate into the Configuration?  If
so, should be one way only.... I don't care which."

I seek advice on how to remedy this.  We added HLog.createWriterInstance() 
because we needed our THLog extension of HLog to be able to setup it's own 
SequenceFileLogWriter to use the special THLogKey yet still have HLog use the 
writer given in configuration property.  Since HLog.rollWriter() needs to 
instantiate a writer inside HLog, using the createWriterInstance() template 
method seemed the easiest choice but that is the only place it is ever called 
from.  We did not need to do the same for the THLog reader because there are no 
non-static HLog calls to create a reader. Everywhere we read THLog it would 
suffice to use the static THLog.getReader() method which uses a THLogKey reader.

So I see how this asymmetry is unpleasant. We could add an 
HLog.createReaderInstance() and replace all the static calls everywhere WHERE 
POSSIBLE. But it isn't possible from ALL places anyway since sometimes a reader 
is fetched before an HLog instance if available.  So we need the static 
accessors anyway...


This addresses bug 2641.
    http://issues.apache.org/jira/browse/2641


Diffs
-----

  pom.xml 267ab49 
  src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java d870d44 
  src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java fdef130 
  src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java f2e4e7c 
  src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java 
bb3b382 
  src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java 2ebcdf2 
  src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java 
PRE-CREATION 
  
src/main/java/org/apache/hadoop/hbase/regionserver/wal/SequenceFileLogReader.java
 7883fcd 
  
src/main/java/org/apache/hadoop/hbase/regionserver/wal/SequenceFileLogWriter.java
 bb71bed 
  
src/test/java/org/apache/hadoop/hbase/regionserver/wal/InstrumentedSequenceFileLogWriter.java
 41329c3 
  src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLog.java 7111776 
  src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogMethods.java 
ba6514a 
  src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogSplit.java 
976876c 
  src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java 
6c11eaf 

Diff: http://review.cloudera.org/r/903/diff


Testing
-------


Thanks,

James

Reply via email to