Author: stack
Date: Fri Sep 23 17:40:46 2011
New Revision: 1174908
URL: http://svn.apache.org/viewvc?rev=1174908&view=rev
Log:
HBASE-4387 Error while syncing: DFSOutputStream is closed
Modified:
hbase/branches/0.90/CHANGES.txt
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
Modified: hbase/branches/0.90/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1174908&r1=1174907&r2=1174908&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Fri Sep 23 17:40:46 2011
@@ -60,6 +60,8 @@ Release 0.90.5 - Unreleased
HBASE-4449 LoadIncrementalHFiles can't handle CFs with blooms (David
Revell)
HBASE-4452 Possibility of RS opening a region though tickleOpening fails
due to
znode version mismatch (Ramkrishna)
+ HBASE-4387 Error while syncing: DFSOutputStream is closed
+ (Lars Hofhansl)
IMPROVEMENT
HBASE-4205 Enhance HTable javadoc (Eric Charles)
Modified:
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java?rev=1174908&r1=1174907&r2=1174908&view=diff
==============================================================================
---
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
(original)
+++
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
Fri Sep 23 17:40:46 2011
@@ -1042,8 +1042,17 @@ public class HLog implements Syncable {
try {
long now = System.currentTimeMillis();
// Done in parallel for all writer threads, thanks to HDFS-895
- this.writer.sync();
+ boolean syncSuccessful = true;
+ try {
+ this.writer.sync();
+ } catch(IOException io) {
+ syncSuccessful = false;
+ }
synchronized (this.updateLock) {
+ if (!syncSuccessful) {
+ // HBASE-4387, retry with updateLock held
+ this.writer.sync();
+ }
syncTime += System.currentTimeMillis() - now;
syncOps++;
if (!logRollRunning) {