See http://hudson.zones.apache.org/hudson/job/HBase-Patch/95/changes
Changes:
[stack] HBASE-588 Still a 'hole' in scanners, even after HBASE-532
[stack] HBASE-588 Still a 'hole' in scanners, even after HBASE-532
Add a ChangedReadersObserver interface. HStore notifies registered
observers when list of HStoreFile Readers changes -- at flush time
and at compaction time. Scanners are only current observers.
Also fix a deadlock flushing by changing lock types and moving flush
request out from under lock.
M src/test/org/apache/hadoop/hbase/MultiRegionTable.java
(getCacheFlushListern): Renamed as getFlushRequester
M src/java/org/apache/hadoop/hbase/regionserver/HStore.java
Added synchronizations on this.storefiles.
(activeScanners, newScannerLock): Removed. We no longer try to
block out scanners when compacting (Turns out same functionality
for blocking scanners is up in HRegion used around closing/split).
(changedReadersObservers): Added.
(updateReaders): New method that manages the insertion of new
reader on flush. Also calls new notifyChangedReadersObservers.
(notifyChagnedReadersObservers, addChangedReadersObserver,
deleteChangedReadersObservers): Added.
(completeCompaction): Previous deleting old store files, we'd
remove from this.storefiles and delete all in one step; now we
do the remove first, notify all observers of readers, and then
do the delete so observers have a chance to clean up any old
references to files about to be deleted. Removed all the lockout
of new scanner creation and wait on old scanners to come int.
(updateActiveScanners): Removed.
(getStorefiles): Accessor. Added.
M src/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
Added implementation of new ChangedReadersObserver interface.
Added a lock that we hold when 'nexting' and when changing the
set of readers out from under the scanner.
Changed the constructor moving bulk into new openReaders method
that we reuse when list of Readers changes.
(next): Moved head of this method into new getNextViableRow (used
to be called chosenRow and chosenTimestamp). New method returns
simple datastructure of row and timestamp (ViableRow).
(close): On close, remove ourselves as ChangedReadersObserver (we
added ourselves in the constructor).
(updateReaders): Changed the set of Readers out from under the
Scanner.
A src/java/org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.java
Added.
M src/java/org/apache/hadoop/hbase/regionserver/Flusher.java
Changed name of the interface we implement from CacheFlushListener to
FlushRequester.
D src/java/org/apache/hadoop/hbase/regionserver/CacheFlushListener.java
Renamed as FlushRequester.
M src/java/org/apache/hadoop/hbase/regionserver/HStoreScanner.java
Remove update of activeScanners.
A src/java/org/apache/hadoop/hbase/regionserver/FlushRequester.java
Added. Rename of CacheFlushListener.
M src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Renamed method getCacheFlushListener as getFlushRequester.
M src/java/org/apache/hadoop/hbase/regionserver/HAbstractScanner.java
Formatting.
M src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
CacheFlushListener was renamed as FlushListener.
------------------------------------------
started
Updating https://svn.apache.org/repos/asf/hadoop/hbase/trunk
U CHANGES.txt
U src/test/org/apache/hadoop/hbase/MultiRegionTable.java
D src/java/org/apache/hadoop/hbase/regionserver/CacheFlushListener.java
U src/java/org/apache/hadoop/hbase/regionserver/HStore.java
U src/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
A
src/java/org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.java
U src/java/org/apache/hadoop/hbase/regionserver/Flusher.java
U src/java/org/apache/hadoop/hbase/regionserver/HStoreScanner.java
A src/java/org/apache/hadoop/hbase/regionserver/FlushRequester.java
U src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
U src/java/org/apache/hadoop/hbase/regionserver/HAbstractScanner.java
U src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
At revision 651039
[trunk] $ ant -Dtest.junit.output.format=xml -Dtest.output=yes clean jar test
package tar
Buildfile: build.xml
clean:
[delete] Deleting directory
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build
init:
[mkdir] Created dir:
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build
[mkdir] Created dir:
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/classes
[mkdir] Created dir:
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/test
[mkdir] Created dir:
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/examples
[mkdir] Created dir:
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/webapps
[copy] Copying 8 files to
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/webapps
[mkdir] Created dir:
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/lib
[copy] Copying 29 files to
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/lib
[mkdir] Created dir:
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/conf
[copy] Copying 5 files to
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/conf
[mkdir] Created dir:
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/bin
[copy] Copying 7 files to
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/bin
jspc:
javacc:
compile:
[javac] Compiling 196 source files to
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/classes
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
jar:
[copy] Copying 1 file to
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/classes
[jar] Building jar:
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build/hbase-0.2.0-dev.jar
init:
jspc:
BUILD FAILED
/zonestorage/hudson/home/hudson/hudson/jobs/HBase-Patch/workspace/trunk/build.xml:178:
java.lang.ExceptionInInitializerError
Total time: 10 seconds
ERROR: No artifacts found that match the file pattern "trunk/build/*.tar.gz".
Configuration error?
ERROR: 'trunk/build/*.tar.gz' doesn't match anything: 'trunk' exists but not
'trunk/build/*.tar.gz'
Recording test results