You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2013/12/09 06:01:54 UTC
svn commit: r1549384 - in /hbase/trunk/hbase-server/src:
main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java
test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationHLogReaderManager.java
Author: stack
Date: Mon Dec 9 05:01:54 2013
New Revision: 1549384
URL: http://svn.apache.org/r1549384
Log:
HBASE-10010 eliminate the put latency spike on the new log file beginning
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationHLogReaderManager.java
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java?rev=1549384&r1=1549383&r2=1549384&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java Mon Dec 9 05:01:54 2013
@@ -532,6 +532,13 @@ class FSHLog implements HLog, Syncable {
FSDataOutputStream nextHdfsOut = null;
if (nextWriter instanceof ProtobufLogWriter) {
nextHdfsOut = ((ProtobufLogWriter)nextWriter).getStream();
+ // perform the costly sync before we get the lock to roll writers.
+ try {
+ nextWriter.sync();
+ } catch (IOException e) {
+ // optimization failed, no need to abort here.
+ LOG.warn("pre-sync failed", e);
+ }
}
Path oldFile = null;
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationHLogReaderManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationHLogReaderManager.java?rev=1549384&r1=1549383&r2=1549384&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationHLogReaderManager.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationHLogReaderManager.java Mon Dec 9 05:01:54 2013
@@ -141,12 +141,6 @@ public class TestReplicationHLogReaderMa
// Grab the path that was generated when the log rolled as part of its creation
Path path = pathWatcher.currentPath;
- // open it, it's empty so it fails
- try {
- logManager.openReader(path);
- fail("Shouldn't be able to open an empty file");
- } catch (EOFException ex) {}
-
assertEquals(0, logManager.getPosition());
appendToLog();
@@ -184,12 +178,6 @@ public class TestReplicationHLogReaderMa
path = pathWatcher.currentPath;
- // Finally we have a new empty log, which should still give us EOFs
- try {
- logManager.openReader(path);
- fail();
- } catch (EOFException ex) {}
-
for (int i = 0; i < nbRows; i++) { appendToLogPlus(walEditKVs); }
log.rollWriter();
logManager.openReader(path);