You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ji...@apache.org on 2009/01/24 00:09:38 UTC

svn commit: r737241 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/regionserver/HLog.java src/java/org/apache/hadoop/hbase/regionserver/HRegion.java src/test/org/apache/hadoop/hbase/regionserver/TestHLog.java

Author: jimk
Date: Fri Jan 23 23:09:37 2009
New Revision: 737241

URL: http://svn.apache.org/viewvc?rev=737241&view=rev
Log:
HBASE-1148  Always flush HLog on root or meta region updates

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
    hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestHLog.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=737241&r1=737240&r2=737241&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Fri Jan 23 23:09:37 2009
@@ -10,6 +10,7 @@
    HBASE-1138  Test that readers opened after a sync can see all data up to the
                sync (temporary until HADOOP-4379 is resolved)
    HBASE-1121  Cluster confused about where -ROOT- is
+   HBASE-1148  Always flush HLog on root or meta region updates
 
   IMPROVEMENTS
    HBASE-1089  Add count of regions on filesystem to master UI; add percentage

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java?rev=737241&r1=737240&r2=737241&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java Fri Jan 23 23:09:37 2009
@@ -455,13 +455,12 @@
    *
    * @param regionName
    * @param tableName
-   * @param row
-   * @param columns
-   * @param timestamp
+   * @param edits
+   * @param sync
    * @throws IOException
    */
   void append(byte [] regionName, byte [] tableName,
-      TreeMap<HStoreKey, byte[]> edits)
+      TreeMap<HStoreKey, byte[]> edits, boolean sync)
   throws IOException {
     if (closed) {
       throw new IOException("Cannot append; log is closed");
@@ -482,7 +481,7 @@
           new HLogKey(regionName, tableName, key.getRow(), seqNum[counter++]);
         HLogEdit logEdit =
           new HLogEdit(key.getColumn(), es.getValue(), key.getTimestamp());
-       doWrite(logKey, logEdit);
+       doWrite(logKey, logEdit, sync);
 
         this.numEntries++;
       }
@@ -520,10 +519,11 @@
     }
   }
   
-  private void doWrite(HLogKey logKey, HLogEdit logEdit) throws IOException {
+  private void doWrite(HLogKey logKey, HLogEdit logEdit, boolean sync)
+  throws IOException {
     try {
       this.writer.append(logKey, logEdit);
-      if (++unflushedEntries >= flushlogentries) {
+      if (sync || ++unflushedEntries >= flushlogentries) {
         sync();
       }
     } catch (IOException e) {
@@ -569,7 +569,8 @@
       }
 
       HLogKey logKey = new HLogKey(regionName, tableName, row, seqNum);
-      doWrite(logKey, logEdit);
+      boolean sync = regionInfo.isMetaRegion() || regionInfo.isRootRegion();
+      doWrite(logKey, logEdit, sync);
       this.numEntries++;
       updateLock.notifyAll();
     }

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=737241&r1=737240&r2=737241&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java Fri Jan 23 23:09:37 2009
@@ -1707,7 +1707,8 @@
     try {
       if (writeToWAL) {
         this.log.append(regionInfo.getRegionName(),
-          regionInfo.getTableDesc().getName(), updatesByColumn);
+          regionInfo.getTableDesc().getName(), updatesByColumn,
+          (regionInfo.isMetaRegion() || regionInfo.isRootRegion()));
       }
       long size = 0;
       for (Map.Entry<HStoreKey, byte[]> e: updatesByColumn.entrySet()) {

Modified: hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestHLog.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestHLog.java?rev=737241&r1=737240&r2=737241&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestHLog.java (original)
+++ hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestHLog.java Fri Jan 23 23:09:37 2009
@@ -77,7 +77,7 @@
             byte [] column = Bytes.toBytes(Integer.toString(j));
             edit.put(new HStoreKey(rowName, column, System.currentTimeMillis()),
               column);
-            log.append(Bytes.toBytes(Integer.toString(i)), tableName, edit);
+            log.append(Bytes.toBytes(Integer.toString(i)), tableName, edit, false);
           }
         }
         log.rollWriter();
@@ -110,7 +110,7 @@
         cols.put(new HStoreKey(row, Bytes.toBytes(Integer.toString(i)), timestamp),
             new byte[] { (byte)(i + '0') });
       }
-      log.append(regionName, tableName, cols);
+      log.append(regionName, tableName, cols, false);
       long logSeqId = log.startCacheFlush();
       log.completeCacheFlush(regionName, tableName, logSeqId);
       log.close();



Re: svn commit: r737241 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/regionserver/HLog.java src/java/org/apache/hadoop/hbase/regionserver/HRegion.java src/test/org/apache/hadoop/hbase/regionserver/TestHLog.java

Posted by stack <st...@duboce.net>.
The below is committed without a chance of someone reviewing it.

Its also committed and the issue closed with no comment on the 
performance issue raised in HBASE-1148.


jimk@apache.org wrote:
> +      boolean sync = regionInfo.isMetaRegion() || regionInfo.isRootRegion();
> +      doWrite(logKey, logEdit, sync);

I thought isMetaRegion returned true whether .META. or -ROOT- region (so 
its javadoc says).
> +          (regionInfo.isMetaRegion() || regionInfo.isRootRegion()));
>   
Same here.

St.Ack