HBASE-5568 Multi concurrent flushcache() for one region could cause data loss (Chunhui)

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1301639 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Zhihong Yu 2012-03-16 16:39:44 +00:00
parent 4a5a27eac2
commit 8e84390b37
2 changed files with 15 additions and 15 deletions

View File

@ -1318,22 +1318,22 @@ public class HRegion implements HeapSize { // , Writable{
status.setStatus("Running coprocessor pre-flush hooks");
coprocessorHost.preFlush();
}
try {
synchronized (writestate) {
if (!writestate.flushing && writestate.writesEnabled) {
this.writestate.flushing = true;
} else {
if (LOG.isDebugEnabled()) {
LOG.debug("NOT flushing memstore for region " + this +
", flushing=" +
writestate.flushing + ", writesEnabled=" +
writestate.writesEnabled);
}
status.abort("Not flushing since " +
(writestate.flushing ? "already flushing" : "writes not enabled"));
return false;
synchronized (writestate) {
if (!writestate.flushing && writestate.writesEnabled) {
this.writestate.flushing = true;
} else {
if (LOG.isDebugEnabled()) {
LOG.debug("NOT flushing memstore for region " + this
+ ", flushing=" + writestate.flushing + ", writesEnabled="
+ writestate.writesEnabled);
}
status.abort("Not flushing since "
+ (writestate.flushing ? "already flushing"
: "writes not enabled"));
return false;
}
}
try {
boolean result = internalFlushcache(status);
if (coprocessorHost != null) {

View File

@ -152,7 +152,7 @@ public class TestStore extends TestCase {
public void testDeleteExpiredStoreFiles() throws Exception {
int storeFileNum = 4;
int ttl = 1;
int ttl = 4;
Configuration conf = HBaseConfiguration.create();
// Enable the expired store file deletion