hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joydeep Sarma <jssa...@apache.org>
Subject commit semantics
Date Mon, 11 Jan 2010 23:46:25 GMT
Hey HBase-devs,

we have been going through hbase code to come up to speed.

One of the questions was regarding the commit semantics. Thumbing through
the RegionServer code that's appending to the wal:

syncWal -> HLog.sync -> addToSyncQueue ->syncDone.await()

and the log writer thread calls:

hflush(), syncDone.signalAll()

however hflush doesn't necessarily call a sync on the underlying log file:

      if (this.forceSync ||
          this.unflushedEntries.get() >= this.flushlogentries) { ... sync()
... }

so it seems that if forceSync is not true, the syncWal can unblock before a
sync is called (and forcesync seems to be only true for metaregion()).

are we missing something - or is there a bug here (the signalAll should be
conditional on hflush having actually flushed something).



  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message