You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2009/07/29 22:55:11 UTC
svn commit: r799074 - in /hadoop/hbase/trunk: ./
src/java/org/apache/hadoop/hbase/
src/java/org/apache/hadoop/hbase/regionserver/
src/test/org/apache/hadoop/hbase/regionserver/
Author: apurtell
Date: Wed Jul 29 20:55:10 2009
New Revision: 799074
URL: http://svn.apache.org/viewvc?rev=799074&view=rev
Log:
HBASE-1719 hold a reference to the region in stores instead of only the region info
Modified:
hadoop/hbase/trunk/CHANGES.txt
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HRegionInfo.java
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java
hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestStore.java
Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=799074&r1=799073&r2=799074&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Wed Jul 29 20:55:10 2009
@@ -533,6 +533,8 @@
HBASE-1683 OOME on master splitting logs; stuck, won't go down
HBASE-1704 Better zk error when failed connect
HBASE-1714 Thrift server: prefix scan API
+ HBASE-1719 hold a reference to the region in stores instead of only the
+ region info
OPTIMIZATIONS
HBASE-1412 Change values for delete column and column family in KeyValue
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HRegionInfo.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HRegionInfo.java?rev=799074&r1=799073&r2=799074&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HRegionInfo.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HRegionInfo.java Wed Jul 29 20:55:10 2009
@@ -69,7 +69,6 @@
//TODO: Move NO_HASH to HStoreFile which is really the only place it is used.
public static final int NO_HASH = -1;
private volatile int encodedName = NO_HASH;
- private boolean splitRequest = false;
private void setHashCode() {
int result = Arrays.hashCode(this.regionName);
@@ -457,17 +456,6 @@
}
/**
- * For internal use in forcing splits ahead of file size limit.
- * @param b
- * @return previous value
- */
- public boolean shouldSplit(boolean b) {
- boolean old = this.splitRequest;
- this.splitRequest = b;
- return old;
- }
-
- /**
* @return Comparator to use comparing {@link KeyValue}s.
*/
public KVComparator getComparator() {
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=799074&r1=799073&r2=799074&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java Wed Jul 29 20:55:10 2009
@@ -199,6 +199,7 @@
new ReentrantReadWriteLock();
private final Object splitLock = new Object();
private long minSequenceId;
+ private boolean splitRequest;
/**
* Name of the region info file that resides just under the region directory.
@@ -1507,7 +1508,7 @@
protected Store instantiateHStore(Path baseDir,
HColumnDescriptor c, Path oldLogFile, Progressable reporter)
throws IOException {
- return new Store(baseDir, this.regionInfo, c, this.fs, oldLogFile,
+ return new Store(baseDir, this, c, this.fs, oldLogFile,
this.conf, reporter);
}
@@ -2450,6 +2451,17 @@
}
/**
+ * For internal use in forcing splits ahead of file size limit.
+ * @param b
+ * @return previous value
+ */
+ public boolean shouldSplit(boolean b) {
+ boolean old = this.splitRequest;
+ this.splitRequest = b;
+ return old;
+ }
+
+ /**
* Facility for dumping and compacting catalog tables.
* Only does catalog tables since these are only tables we for sure know
* schema on. For usage run:
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=799074&r1=799073&r2=799074&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Wed Jul 29 20:55:10 2009
@@ -1482,7 +1482,7 @@
case MSG_REGION_SPLIT:
region = getRegion(info.getRegionName());
region.flushcache();
- region.regionInfo.shouldSplit(true);
+ region.shouldSplit(true);
// force a compaction; split will be side-effect.
compactSplitThread.compactionRequested(region,
e.msg.getType().name());
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java?rev=799074&r1=799073&r2=799074&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java Wed Jul 29 20:55:10 2009
@@ -95,7 +95,7 @@
protected final MemStore memstore;
// This stores directory in the filesystem.
private final Path homedir;
- private final HRegionInfo regioninfo;
+ private final HRegion region;
private final HColumnDescriptor family;
final FileSystem fs;
private final HBaseConfiguration conf;
@@ -154,13 +154,14 @@
* failed. Can be null.
* @throws IOException
*/
- protected Store(Path basedir, HRegionInfo info, HColumnDescriptor family,
+ protected Store(Path basedir, HRegion region, HColumnDescriptor family,
FileSystem fs, Path reconstructionLog, HBaseConfiguration conf,
final Progressable reporter)
- throws IOException {
+ throws IOException {
+ HRegionInfo info = region.regionInfo;
this.homedir = getStoreHomedir(basedir, info.getEncodedName(),
family.getName());
- this.regioninfo = info;
+ this.region = region;
this.family = family;
this.fs = fs;
this.conf = conf;
@@ -317,7 +318,7 @@
// METACOLUMN info such as HBASE::CACHEFLUSH entries
if (/* commented out for now - stack via jgray key.isTransactionEntry() || */
val.matchingFamily(HLog.METAFAMILY) ||
- !Bytes.equals(key.getRegionName(), regioninfo.getRegionName()) ||
+ !Bytes.equals(key.getRegionName(), region.regionInfo.getRegionName()) ||
!val.matchingFamily(family.getName())) {
continue;
}
@@ -536,7 +537,7 @@
", sequenceid=" + logCacheFlushId +
", memsize=" + StringUtils.humanReadableInt(flushed) +
", filesize=" + StringUtils.humanReadableInt(r.length()) +
- " to " + this.regioninfo.getRegionNameAsString());
+ " to " + this.region.regionInfo.getRegionNameAsString());
}
return sf;
}
@@ -637,7 +638,7 @@
* @throws IOException
*/
StoreSize compact(final boolean mc) throws IOException {
- boolean forceSplit = this.regioninfo.shouldSplit(false);
+ boolean forceSplit = this.region.shouldSplit(false);
boolean majorcompaction = mc;
synchronized (compactLock) {
// filesToCompact are sorted oldest to newest.
@@ -868,13 +869,17 @@
more = scanner.next(kvs);
// output to writer:
for (KeyValue kv : kvs) {
- if (writer == null) writer = getWriter(this.regionCompactionDir);
+ if (writer == null) {
+ writer = getWriter(this.regionCompactionDir);
+ }
writer.append(kv);
}
kvs.clear();
}
} finally {
- if (scanner != null) scanner.close();
+ if (scanner != null) {
+ scanner.close();
+ }
}
} else {
MinorCompactingStoreScanner scanner = null;
@@ -1473,8 +1478,12 @@
}
}
+ HRegion getHRegion() {
+ return this.region;
+ }
+
HRegionInfo getHRegionInfo() {
- return this.regioninfo;
+ return this.region.regionInfo;
}
/**
Modified: hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestStore.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestStore.java?rev=799074&r1=799073&r2=799074&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestStore.java (original)
+++ hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/regionserver/TestStore.java Wed Jul 29 20:55:10 2009
@@ -70,17 +70,22 @@
private void init(String methodName) throws IOException {
//Setting up a Store
Path basedir = new Path(DIR+methodName);
+ Path logdir = new Path(DIR+methodName+"/logs");
HColumnDescriptor hcd = new HColumnDescriptor(family);
HBaseConfiguration conf = new HBaseConfiguration();
FileSystem fs = FileSystem.get(conf);
Path reconstructionLog = null;
Progressable reporter = null;
+ fs.delete(logdir, true);
+
HTableDescriptor htd = new HTableDescriptor(table);
htd.addFamily(hcd);
HRegionInfo info = new HRegionInfo(htd, null, null, false);
-
- store = new Store(basedir, info, hcd, fs, reconstructionLog, conf,
+ HLog hlog = new HLog(fs, logdir, conf, null);
+ HRegion region = new HRegion(basedir, hlog, fs, conf, info, null);
+
+ store = new Store(basedir, region, hcd, fs, reconstructionLog, conf,
reporter);
}
@@ -112,7 +117,7 @@
this.store.close();
// Reopen it... should pick up two files
this.store = new Store(storedir.getParent().getParent(),
- this.store.getHRegionInfo(),
+ this.store.getHRegion(),
this.store.getFamily(), fs, null, c, null);
System.out.println(this.store.getHRegionInfo().getEncodedName());
assertEquals(2, this.store.getStorefilesCount());