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:
parent
4a5a27eac2
commit
8e84390b37
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue