HADOOP-1797 Fix NPEs in MetaScanner constructor
git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk/src/contrib/hbase@571333 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
12a62a6333
commit
aba565a228
|
@ -58,9 +58,7 @@ public class HMemcache {
|
|||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public HMemcache() {
|
||||
super();
|
||||
}
|
||||
public HMemcache() {}
|
||||
|
||||
/** represents the state of the memcache at a specified point in time */
|
||||
static class Snapshot {
|
||||
|
@ -320,7 +318,7 @@ public class HMemcache {
|
|||
// Generate list of iterators
|
||||
HStoreKey firstKey = new HStoreKey(firstRow);
|
||||
for(int i = 0; i < backingMaps.length; i++) {
|
||||
keyIterators[i] = (firstRow.getLength() != 0)?
|
||||
keyIterators[i] = (/*firstRow != null &&*/ firstRow.getLength() != 0)?
|
||||
backingMaps[i].tailMap(firstKey).keySet().iterator():
|
||||
backingMaps[i].keySet().iterator();
|
||||
while(getNext(i)) {
|
||||
|
|
|
@ -208,6 +208,7 @@ public class HRegion implements HConstants {
|
|||
|
||||
final int memcacheFlushSize;
|
||||
final int blockingMemcacheSize;
|
||||
protected final long threadWakeFrequency;
|
||||
private final HLocking lock = new HLocking();
|
||||
private long desiredMaxFileSize;
|
||||
private final long maxSequenceId;
|
||||
|
@ -244,6 +245,7 @@ public class HRegion implements HConstants {
|
|||
this.conf = conf;
|
||||
this.regionInfo = regionInfo;
|
||||
this.memcache = new HMemcache();
|
||||
this.threadWakeFrequency = conf.getLong(THREAD_WAKE_FREQUENCY, 10 * 1000);
|
||||
|
||||
// Declare the regionName. This is a unique string for the region, used to
|
||||
// build a unique filename.
|
||||
|
@ -1055,24 +1057,28 @@ public class HRegion implements HConstants {
|
|||
* the notify.
|
||||
*/
|
||||
private synchronized void checkResources() {
|
||||
if (checkCommitsSinceFlush()) {
|
||||
return;
|
||||
}
|
||||
boolean blocked = false;
|
||||
|
||||
LOG.warn("Blocking updates for '" + Thread.currentThread().getName() +
|
||||
"': Memcache size " +
|
||||
StringUtils.humanReadableInt(this.memcache.getSize()) +
|
||||
" is >= than blocking " +
|
||||
StringUtils.humanReadableInt(this.blockingMemcacheSize) + " size");
|
||||
while (!checkCommitsSinceFlush()) {
|
||||
if (!blocked) {
|
||||
LOG.info("Blocking updates for '" + Thread.currentThread().getName() +
|
||||
"': Memcache size " +
|
||||
StringUtils.humanReadableInt(this.memcache.getSize()) +
|
||||
" is >= than blocking " +
|
||||
StringUtils.humanReadableInt(this.blockingMemcacheSize) + " size");
|
||||
}
|
||||
|
||||
blocked = true;
|
||||
try {
|
||||
wait();
|
||||
wait(threadWakeFrequency);
|
||||
} catch (InterruptedException e) {
|
||||
// continue;
|
||||
}
|
||||
}
|
||||
LOG.warn("Unblocking updates for '" + Thread.currentThread().getName() +
|
||||
"'");
|
||||
if (blocked) {
|
||||
LOG.info("Unblocking updates for '" + Thread.currentThread().getName() +
|
||||
"'");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1635,4 +1641,4 @@ public class HRegion implements HConstants {
|
|||
public static Path getRegionDir(final Path dir, final Text regionName) {
|
||||
return new Path(dir, new Path(HREGIONDIR_PREFIX + regionName));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue