----------------------------------------------------------- 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