You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2009/09/23 02:13:36 UTC
svn commit: r817911 - in /hadoop/hbase/branches/0.20: CHANGES.txt
src/java/org/apache/hadoop/hbase/regionserver/Store.java
Author: stack
Date: Wed Sep 23 00:13:35 2009
New Revision: 817911
URL: http://svn.apache.org/viewvc?rev=817911&view=rev
Log:
HBASE-1809 NPE thrown in BoundedRangeFileInputStream
Modified:
hadoop/hbase/branches/0.20/CHANGES.txt
hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java
Modified: hadoop/hbase/branches/0.20/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/CHANGES.txt?rev=817911&r1=817910&r2=817911&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/CHANGES.txt (original)
+++ hadoop/hbase/branches/0.20/CHANGES.txt Wed Sep 23 00:13:35 2009
@@ -27,6 +27,7 @@
(Lars George via Stack)
HBASE-1857 WrongRegionException when setting region online after .META.
split (Cosmin Lehane via Stack)
+ HBASE-1809 NPE thrown in BoundedRangeFileInputStream
IMPROVEMENTS
HBASE-1819 Update to 0.20.1 hadoop and zk 3.2.1
Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java?rev=817911&r1=817910&r2=817911&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java (original)
+++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java Wed Sep 23 00:13:35 2009
@@ -1432,34 +1432,38 @@
// Column matching and version enforcement
QueryMatcher matcher = new QueryMatcher(get, this.family.getName(), columns,
this.ttl, keyComparator, versionsToReturn(get.getMaxVersions()));
+ this.lock.readLock().lock();
+ try {
+ // Read from memstore
+ if(this.memstore.get(matcher, result)) {
+ // Received early-out from memstore
+ return;
+ }
- // Read from memstore
- if(this.memstore.get(matcher, result)) {
- // Received early-out from memstore
- return;
- }
-
- // Check if we even have storefiles
- if (this.storefiles.isEmpty()) {
- return;
- }
+ // Check if we even have storefiles
+ if (this.storefiles.isEmpty()) {
+ return;
+ }
- // Get storefiles for this store
- List<HFileScanner> storefileScanners = new ArrayList<HFileScanner>();
- for (StoreFile sf : this.storefiles.descendingMap().values()) {
- HFile.Reader r = sf.getReader();
- if (r == null) {
- LOG.warn("StoreFile " + sf + " has a null Reader");
- continue;
+ // Get storefiles for this store
+ List<HFileScanner> storefileScanners = new ArrayList<HFileScanner>();
+ for (StoreFile sf : this.storefiles.descendingMap().values()) {
+ HFile.Reader r = sf.getReader();
+ if (r == null) {
+ LOG.warn("StoreFile " + sf + " has a null Reader");
+ continue;
+ }
+ storefileScanners.add(r.getScanner());
}
- storefileScanners.add(r.getScanner());
- }
- // StoreFileGetScan will handle reading this store's storefiles
- StoreFileGetScan scanner = new StoreFileGetScan(storefileScanners, matcher);
+ // StoreFileGetScan will handle reading this store's storefiles
+ StoreFileGetScan scanner = new StoreFileGetScan(storefileScanners, matcher);
- // Run a GET scan and put results into the specified list
- scanner.get(result);
+ // Run a GET scan and put results into the specified list
+ scanner.get(result);
+ } finally {
+ this.lock.readLock().unlock();
+ }
}
/**