You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ji...@apache.org on 2007/12/12 01:40:04 UTC
svn commit: r603428 - in /lucene/hadoop/trunk/src/contrib/hbase: ./
src/java/org/apache/hadoop/hbase/ src/test/org/apache/hadoop/hbase/
src/test/org/apache/hadoop/hbase/mapred/
Author: jimk
Date: Tue Dec 11 16:40:02 2007
New Revision: 603428
URL: http://svn.apache.org/viewvc?rev=603428&view=rev
Log:
HADOOP-2392 HADOOP-2324 HADOOP-2396 HADOOP-2397
HADOOP-2392, HADOOP-2324:
Chore
- initialChore() now returns boolean
HMaster
- rather than retry in root and meta scanners, return if a scan fails. It will get retried on the next scan. This has two effects: 1) scanners exit more quickly during shutdown and 2) they don't keep retrying to connect to a dead server, allowing them to recover from a server going down more quickly.
- initialScan in root and meta scanners return boolean and do not progress to maintenanceScan until the initial scan completes successfully.
HRegionServer
- speed up region server exit by reordering join's so that we join with threads in the order that we told them to stop
TestTableMapReduce
- remove overrides of heartbeat and thread wake intervals
HADOOP-2396:
HMaster
- move check for null HRegionInfo before first attempt to dereference it.
HADOOP-2397:
- HMaster$BaseScanner.checkAssigned: don't try to split dead server's log if initial startup has completed.
HADOOP-2353:
HMsg
- change toString() to only output the region name rather than calling HRegionInfo.toString()
StaticTestEnvironment
- make logging a bit less verbose
TestHLog
- was writing to local file system and failing on Windows
Modified:
lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt
lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/Chore.java
lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMaster.java
lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMsg.java
lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java
lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/StaticTestEnvironment.java
lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/TestHLog.java
lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/mapred/TestTableMapReduce.java
Modified: lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt?rev=603428&r1=603427&r2=603428&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt Tue Dec 11 16:40:02 2007
@@ -72,6 +72,11 @@
different column families do not have entries for some rows
HADOOP-2283 AlreadyBeingCreatedException (Was: Stuck replay of failed
regionserver edits)
+ HADOOP-2392 TestRegionServerExit has new failure mode since HADOOP-2338
+ HADOOP-2324 Fix assertion failures in TestTableMapReduce
+ HADOOP-2396 NPE in HMaster.cancelLease
+ HADOOP-2397 The only time that a meta scanner should try to recover a log is
+ when the master is starting
IMPROVEMENTS
HADOOP-2401 Add convenience put method that takes writable
Modified: lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/Chore.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/Chore.java?rev=603428&r1=603427&r2=603428&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/Chore.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/Chore.java Tue Dec 11 16:40:02 2007
@@ -35,7 +35,7 @@
public abstract class Chore extends Thread {
private final Log LOG = LogFactory.getLog(this.getClass());
private final Sleeper sleeper;
- protected final AtomicBoolean stop;
+ protected volatile AtomicBoolean stop;
/**
* @param p Period at which we should run. Will be adjusted appropriately
@@ -49,9 +49,13 @@
this.stop = s;
}
+ /** {@inheritDoc} */
+ @Override
public void run() {
try {
- initialChore();
+ while (!initialChore()) {
+ this.sleeper.sleep();
+ }
this.sleeper.sleep();
while(!this.stop.get()) {
long startTime = System.currentTimeMillis();
@@ -65,9 +69,11 @@
/**
* Override to run a task before we start looping.
+ * @return true if initial chore was successful
*/
- protected void initialChore() {
+ protected boolean initialChore() {
// Default does nothing.
+ return true;
}
/**
Modified: lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMaster.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMaster.java?rev=603428&r1=603427&r2=603428&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMaster.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMaster.java Tue Dec 11 16:40:02 2007
@@ -92,38 +92,38 @@
// started here in HMaster rather than have them have to know about the
// hosting class
volatile AtomicBoolean closed = new AtomicBoolean(true);
- volatile AtomicBoolean shutdownRequested = new AtomicBoolean(false);
+ volatile boolean shutdownRequested = false;
volatile AtomicInteger quiescedMetaServers = new AtomicInteger(0);
- volatile boolean fsOk;
- Path dir;
- HBaseConfiguration conf;
- FileSystem fs;
- Random rand;
- int threadWakeFrequency;
- int numRetries;
- long maxRegionOpenTime;
+ volatile boolean fsOk = true;
+ final Path dir;
+ final HBaseConfiguration conf;
+ final FileSystem fs;
+ final Random rand;
+ final int threadWakeFrequency;
+ final int numRetries;
+ final long maxRegionOpenTime;
- DelayQueue<RegionServerOperation> delayedToDoQueue =
+ volatile DelayQueue<RegionServerOperation> delayedToDoQueue =
new DelayQueue<RegionServerOperation>();
- BlockingQueue<RegionServerOperation> toDoQueue =
+ volatile BlockingQueue<RegionServerOperation> toDoQueue =
new LinkedBlockingQueue<RegionServerOperation>();
- int leaseTimeout;
- private Leases serverLeases;
- private Server server;
- private HServerAddress address;
+ final int leaseTimeout;
+ private final Leases serverLeases;
+ private final Server server;
+ private final HServerAddress address;
- HConnection connection;
+ final HConnection connection;
- int metaRescanInterval;
+ final int metaRescanInterval;
- final AtomicReference<HServerAddress> rootRegionLocation =
+ volatile AtomicReference<HServerAddress> rootRegionLocation =
new AtomicReference<HServerAddress>(null);
- Lock splitLogLock = new ReentrantLock();
+ final Lock splitLogLock = new ReentrantLock();
// A Sleeper that sleeps for threadWakeFrequency
- protected Sleeper sleeper;
+ protected final Sleeper sleeper;
// Default access so accesible from unit tests. MASTER is name of the webapp
// and the attribute name used stuffing this instance into web context.
@@ -183,7 +183,7 @@
protected boolean rootRegion;
protected final Text tableName;
- protected abstract void initialScan();
+ protected abstract boolean initialScan();
protected abstract void maintenanceScan();
BaseScanner(final Text tableName, final int period,
@@ -194,8 +194,8 @@
}
@Override
- protected void initialChore() {
- initialScan();
+ protected boolean initialChore() {
+ return initialScan();
}
@Override
@@ -473,7 +473,7 @@
// This is only done from here if we are restarting and there is stale
// data in the meta region. Once we are on-line, dead server log
// recovery is handled by lease expiration and ProcessServerShutdown
- if (serverName.length() != 0) {
+ if (!initialMetaScanComplete && serverName.length() != 0) {
StringBuilder dirName = new StringBuilder("log_");
dirName.append(serverName.replace(":", "_"));
Path logDir = new Path(dir, dirName.toString());
@@ -500,7 +500,7 @@
}
}
- volatile boolean rootScanned;
+ volatile boolean rootScanned = false;
/** Scanner for the <code>ROOT</code> HRegion. */
class RootScanner extends BaseScanner {
@@ -509,60 +509,51 @@
super(HConstants.ROOT_TABLE_NAME, metaRescanInterval, closed);
}
- private void scanRoot() {
- int tries = 0;
- while (!closed.get() && tries < numRetries) {
- synchronized (rootRegionLocation) {
- while(!closed.get() && rootRegionLocation.get() == null) {
- // rootRegionLocation will be filled in when we get an 'open region'
- // regionServerReport message from the HRegionServer that has been
- // allocated the ROOT region below.
- try {
- rootRegionLocation.wait();
- } catch (InterruptedException e) {
- // continue
- }
+ private boolean scanRoot() {
+ // Don't retry if we get an error while scanning. Errors are most often
+ // caused by the server going away. Wait until next rescan interval when
+ // things should be back to normal
+ boolean scanSuccessful = false;
+ synchronized (rootRegionLocation) {
+ while(!closed.get() && rootRegionLocation.get() == null) {
+ // rootRegionLocation will be filled in when we get an 'open region'
+ // regionServerReport message from the HRegionServer that has been
+ // allocated the ROOT region below.
+ try {
+ rootRegionLocation.wait();
+ } catch (InterruptedException e) {
+ // continue
}
}
- if (closed.get()) {
- continue;
- }
+ }
+ if (closed.get()) {
+ return scanSuccessful;
+ }
- try {
- // Don't interrupt us while we're working
- synchronized(rootScannerLock) {
- scanRegion(new MetaRegion(rootRegionLocation.get(),
- HRegionInfo.rootRegionInfo.getRegionName(), null));
- }
- break;
- } catch (IOException e) {
- e = RemoteExceptionHandler.checkIOException(e);
- tries += 1;
- if (tries == 1) {
- LOG.warn("Scan ROOT region", e);
- } else {
- LOG.error("Scan ROOT region", e);
- if (tries == numRetries - 1) {
- // We ran out of tries. Make sure the file system is still
- // available
- if (!checkFileSystem()) {
- continue; // Avoid sleeping.
- }
- }
- }
- } catch (Exception e) {
- // If for some reason we get some other kind of exception,
- // at least log it rather than go out silently.
- LOG.error("Unexpected exception", e);
+ try {
+ // Don't interrupt us while we're working
+ synchronized(rootScannerLock) {
+ scanRegion(new MetaRegion(rootRegionLocation.get(),
+ HRegionInfo.rootRegionInfo.getRegionName(), null));
}
- sleeper.sleep();
+ scanSuccessful = true;
+ } catch (IOException e) {
+ e = RemoteExceptionHandler.checkIOException(e);
+ LOG.warn("Scan ROOT region", e);
+ // Make sure the file system is still available
+ checkFileSystem();
+ } catch (Exception e) {
+ // If for some reason we get some other kind of exception,
+ // at least log it rather than go out silently.
+ LOG.error("Unexpected exception", e);
}
+ return scanSuccessful;
}
@Override
- protected void initialScan() {
- scanRoot();
- rootScanned = true;
+ protected boolean initialScan() {
+ rootScanned = scanRoot();
+ return rootScanned;
}
@Override
@@ -571,8 +562,8 @@
}
}
- private RootScanner rootScannerThread;
- Integer rootScannerLock = new Integer(0);
+ private final RootScanner rootScannerThread;
+ final Integer rootScannerLock = new Integer(0);
/** Describes a meta region and its server */
@SuppressWarnings("unchecked")
@@ -652,18 +643,18 @@
}
/** Set by root scanner to indicate the number of meta regions */
- final AtomicInteger numberOfMetaRegions = new AtomicInteger();
+ volatile AtomicInteger numberOfMetaRegions = new AtomicInteger();
/** Work for the meta scanner is queued up here */
- final BlockingQueue<MetaRegion> metaRegionsToScan =
+ volatile BlockingQueue<MetaRegion> metaRegionsToScan =
new LinkedBlockingQueue<MetaRegion>();
/** These are the online meta regions */
- final SortedMap<Text, MetaRegion> onlineMetaRegions =
+ volatile SortedMap<Text, MetaRegion> onlineMetaRegions =
Collections.synchronizedSortedMap(new TreeMap<Text, MetaRegion>());
/** Set by meta scanner after initial scan */
- volatile boolean initialMetaScanComplete;
+ volatile boolean initialMetaScanComplete = false;
/**
* MetaScanner <code>META</code> table.
@@ -675,65 +666,58 @@
* action would prevent other work from getting done.
*/
class MetaScanner extends BaseScanner {
+ private final List<MetaRegion> metaRegionsToRescan =
+ new ArrayList<MetaRegion>();
+
/** Constructor */
public MetaScanner() {
super(HConstants.META_TABLE_NAME, metaRescanInterval, closed);
}
- private void scanOneMetaRegion(MetaRegion region) {
- int tries = 0;
- while (!closed.get() && tries < numRetries) {
- while (!closed.get() && !rootScanned &&
- rootRegionLocation.get() == null) {
- sleeper.sleep();
- }
- if (closed.get()) {
- continue;
- }
+ private boolean scanOneMetaRegion(MetaRegion region) {
+ // Don't retry if we get an error while scanning. Errors are most often
+ // caused by the server going away. Wait until next rescan interval when
+ // things should be back to normal
+ boolean scanSuccessful = false;
+ while (!closed.get() && !rootScanned &&
+ rootRegionLocation.get() == null) {
+ sleeper.sleep();
+ }
+ if (closed.get()) {
+ return scanSuccessful;
+ }
- try {
- // Don't interrupt us while we're working
- synchronized (metaScannerLock) {
- scanRegion(region);
- onlineMetaRegions.put(region.getStartKey(), region);
- }
- break;
- } catch (IOException e) {
- e = RemoteExceptionHandler.checkIOException(e);
- tries += 1;
- if (tries == 1) {
- LOG.warn("Scan one META region: " + region.toString(), e);
- } else {
- LOG.error("Scan one META region: " + region.toString(), e);
- }
- // The region may have moved (TestRegionServerAbort, etc.). If
- // so, either it won't be in the onlineMetaRegions list or its host
- // address has changed and the containsValue will fail. If not
- // found, best thing to do here is probably break.
- if (!onlineMetaRegions.containsValue(region)) {
- LOG.debug("Scanned region is no longer in map of online " +
- "regions or its value has changed");
- break;
- }
- if (tries == numRetries - 1) {
- // We ran out of tries. Make sure the file system is still
- // available
- if (!checkFileSystem()) {
- continue; // avoid sleeping
- }
- }
- } catch (Exception e) {
- // If for some reason we get some other kind of exception,
- // at least log it rather than go out silently.
- LOG.error("Unexpected exception", e);
+ try {
+ // Don't interrupt us while we're working
+ synchronized (metaScannerLock) {
+ scanRegion(region);
+ onlineMetaRegions.put(region.getStartKey(), region);
}
- // Sleep before going around again.
- sleeper.sleep();
+ scanSuccessful = true;
+ } catch (IOException e) {
+ e = RemoteExceptionHandler.checkIOException(e);
+ LOG.warn("Scan one META region: " + region.toString(), e);
+ // The region may have moved (TestRegionServerAbort, etc.). If
+ // so, either it won't be in the onlineMetaRegions list or its host
+ // address has changed and the containsValue will fail. If not
+ // found, best thing to do here is probably return.
+ if (!onlineMetaRegions.containsValue(region.getStartKey())) {
+ LOG.debug("Scanned region is no longer in map of online " +
+ "regions or its value has changed");
+ return scanSuccessful;
+ }
+ // Make sure the file system is still available
+ checkFileSystem();
+ } catch (Exception e) {
+ // If for some reason we get some other kind of exception,
+ // at least log it rather than go out silently.
+ LOG.error("Unexpected exception", e);
}
+ return scanSuccessful;
}
@Override
- protected void initialScan() {
+ protected boolean initialScan() {
MetaRegion region = null;
while (!closed.get() && region == null && !metaRegionsScanned()) {
try {
@@ -742,12 +726,17 @@
} catch (InterruptedException e) {
// continue
}
-
+ if (region == null && metaRegionsToRescan.size() != 0) {
+ region = metaRegionsToRescan.remove(0);
+ }
if (region != null) {
- scanOneMetaRegion(region);
+ if (!scanOneMetaRegion(region)) {
+ metaRegionsToRescan.add(region);
+ }
}
}
initialMetaScanComplete = true;
+ return true;
}
@Override
@@ -797,23 +786,23 @@
}
}
- MetaScanner metaScannerThread;
- Integer metaScannerLock = new Integer(0);
+ final MetaScanner metaScannerThread;
+ final Integer metaScannerLock = new Integer(0);
/** The map of known server names to server info */
- final Map<String, HServerInfo> serversToServerInfo =
+ volatile Map<String, HServerInfo> serversToServerInfo =
new ConcurrentHashMap<String, HServerInfo>();
/** Set of known dead servers */
- final Set<String> deadServers =
+ volatile Set<String> deadServers =
Collections.synchronizedSet(new HashSet<String>());
/** SortedMap server load -> Set of server names */
- final SortedMap<HServerLoad, Set<String>> loadToServers =
+ volatile SortedMap<HServerLoad, Set<String>> loadToServers =
Collections.synchronizedSortedMap(new TreeMap<HServerLoad, Set<String>>());
/** Map of server names -> server load */
- final Map<String, HServerLoad> serversToLoad =
+ volatile Map<String, HServerLoad> serversToLoad =
new ConcurrentHashMap<String, HServerLoad>();
/**
@@ -827,36 +816,36 @@
* <p>Items are removed from this list when a region server reports in that
* the region has been deployed.
*/
- final SortedMap<HRegionInfo, Long> unassignedRegions =
+ volatile SortedMap<HRegionInfo, Long> unassignedRegions =
Collections.synchronizedSortedMap(new TreeMap<HRegionInfo, Long>());
/**
* Regions that have been assigned, and the server has reported that it has
* started serving it, but that we have not yet recorded in the meta table.
*/
- final Set<Text> pendingRegions =
+ volatile Set<Text> pendingRegions =
Collections.synchronizedSet(new HashSet<Text>());
/**
* The 'killList' is a list of regions that are going to be closed, but not
* reopened.
*/
- final Map<String, HashMap<Text, HRegionInfo>> killList =
+ volatile Map<String, HashMap<Text, HRegionInfo>> killList =
new ConcurrentHashMap<String, HashMap<Text, HRegionInfo>>();
/** 'killedRegions' contains regions that are in the process of being closed */
- final Set<Text> killedRegions =
+ volatile Set<Text> killedRegions =
Collections.synchronizedSet(new HashSet<Text>());
/**
* 'regionsToDelete' contains regions that need to be deleted, but cannot be
* until the region server closes it
*/
- final Set<Text> regionsToDelete =
+ volatile Set<Text> regionsToDelete =
Collections.synchronizedSet(new HashSet<Text>());
/** Set of tables currently in creation. */
- private Set<Text> tableInCreation =
+ private volatile Set<Text> tableInCreation =
Collections.synchronizedSet(new HashSet<Text>());
/** Build the HMaster out of a raw configuration item.
@@ -881,7 +870,6 @@
public HMaster(Path dir, HServerAddress address, HBaseConfiguration conf)
throws IOException {
- this.fsOk = true;
this.dir = dir;
this.conf = conf;
this.fs = FileSystem.get(conf);
@@ -945,11 +933,9 @@
conf.getInt("hbase.master.meta.thread.rescanfrequency", 60 * 1000);
// The root region
- this.rootScanned = false;
this.rootScannerThread = new RootScanner();
// Scans the meta table
- this.initialMetaScanComplete = false;
this.metaScannerThread = new MetaScanner();
unassignRootRegion();
@@ -1021,7 +1007,7 @@
*/
public HServerAddress getRootRegionLocation() {
HServerAddress rootServer = null;
- if (!shutdownRequested.get() && !closed.get()) {
+ if (!shutdownRequested && !closed.get()) {
rootServer = this.rootRegionLocation.get();
}
return rootServer;
@@ -1313,9 +1299,6 @@
throws IOException {
String serverName = serverInfo.getServerAddress().toString().trim();
long serverLabel = getServerLabel(serverName);
-// if (LOG.isDebugEnabled()) {
-// LOG.debug("received heartbeat from " + serverName);
-// }
if (msgs.length > 0) {
if (msgs[0].getMsg() == HMsg.MSG_REPORT_EXITING) {
synchronized (serversToServerInfo) {
@@ -1373,7 +1356,7 @@
}
}
- if (shutdownRequested.get() && !closed.get()) {
+ if (shutdownRequested && !closed.get()) {
// Tell the server to stop serving any user regions
return new HMsg[]{new HMsg(HMsg.MSG_REGIONSERVER_QUIESCE)};
}
@@ -1411,7 +1394,10 @@
LOG.debug("region server race condition detected: " + serverName);
}
- cancelLease(serverName, serverLabel);
+ synchronized (serversToServerInfo) {
+ cancelLease(serverName, serverLabel);
+ serversToServerInfo.notifyAll();
+ }
return new HMsg[]{new HMsg(HMsg.MSG_REGIONSERVER_STOP)};
} else {
@@ -1460,13 +1446,13 @@
private boolean cancelLease(final String serverName, final long serverLabel) {
boolean leaseCancelled = false;
HServerInfo info = serversToServerInfo.remove(serverName);
- if (rootRegionLocation.get() != null &&
- info.getServerAddress().equals(rootRegionLocation.get())) {
- unassignRootRegion();
- }
if (info != null) {
// Only cancel lease and update load information once.
// This method can be called a couple of times during shutdown.
+ if (rootRegionLocation.get() != null &&
+ info.getServerAddress().equals(rootRegionLocation.get())) {
+ unassignRootRegion();
+ }
LOG.info("Cancelling lease for " + serverName);
serverLeases.cancelLease(serverLabel, serverLabel);
leaseCancelled = true;
@@ -1502,7 +1488,7 @@
for (int i = 0; i < incomingMsgs.length; i++) {
if (LOG.isDebugEnabled()) {
- LOG.debug("Received " + incomingMsgs[i].toString() + "from " +
+ LOG.debug("Received " + incomingMsgs[i].toString() + " from " +
serverName);
}
HRegionInfo region = incomingMsgs[i].getRegionInfo();
@@ -2513,7 +2499,7 @@
/** {@inheritDoc} */
public void shutdown() {
LOG.info("Cluster shutdown requested. Starting to quiesce servers");
- this.shutdownRequested.set(true);
+ this.shutdownRequested = true;
}
/** {@inheritDoc} */
Modified: lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMsg.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMsg.java?rev=603428&r1=603427&r2=603428&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMsg.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMsg.java Tue Dec 11 16:40:02 2007
@@ -188,7 +188,7 @@
message.append(") : ");
break;
}
- message.append(info == null ? "null" : info.toString());
+ message.append(info == null ? "null" : info.getRegionName());
return message.toString();
}
Modified: lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java?rev=603428&r1=603427&r2=603428&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java Tue Dec 11 16:40:02 2007
@@ -1005,11 +1005,11 @@
* Presumption is that all closes and stops have already been called.
*/
void join() {
- join(this.logRoller);
+ join(this.workerThread);
join(this.cacheFlusher);
join(this.compactor);
join(this.splitter);
- join(this.workerThread);
+ join(this.logRoller);
}
private void join(final Thread t) {
@@ -1523,9 +1523,9 @@
region.deleteAll(row, timestamp);
}
+ /** {@inheritDoc} */
public void deleteFamily(Text regionName, Text row, Text family,
- long timestamp)
- throws IOException{
+ long timestamp) throws IOException{
getRegion(regionName).deleteFamily(row, family, timestamp);
}
Modified: lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/StaticTestEnvironment.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/StaticTestEnvironment.java?rev=603428&r1=603427&r2=603428&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/StaticTestEnvironment.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/StaticTestEnvironment.java Tue Dec 11 16:40:02 2007
@@ -108,7 +108,7 @@
Layout layout = consoleAppender.getLayout();
if(layout instanceof PatternLayout) {
PatternLayout consoleLayout = (PatternLayout)layout;
- consoleLayout.setConversionPattern("%d %-5p [%t] %l: %m%n");
+ consoleLayout.setConversionPattern("%d %-5p [%t] %C{2}(%L): %m%n");
}
}
LOG.setLevel(logLevel);
Modified: lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/TestHLog.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/TestHLog.java?rev=603428&r1=603427&r2=603428&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/TestHLog.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/TestHLog.java Tue Dec 11 16:40:02 2007
@@ -22,6 +22,7 @@
import java.io.IOException;
import java.util.TreeMap;
+import org.apache.hadoop.dfs.MiniDFSCluster;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.SequenceFile;
@@ -30,24 +31,33 @@
/** JUnit test case for HLog */
public class TestHLog extends HBaseTestCase implements HConstants {
- private Path dir;
+ private final Path dir = new Path("/hbase");
private FileSystem fs;
+ private MiniDFSCluster cluster;
+
+ /** constructor */
+ public TestHLog() {
+ this.cluster = null;
+ }
+ /** {@inheritDoc} */
@Override
- protected void setUp() throws Exception {
+ public void setUp() throws Exception {
super.setUp();
- this.dir = getUnitTestdir(getName());
- this.fs = FileSystem.get(this.conf);
+ cluster = new MiniDFSCluster(conf, 2, true, (String[])null);
+ this.fs = cluster.getFileSystem();
if (fs.exists(dir)) {
fs.delete(dir);
}
}
+ /** {@inheritDoc} */
@Override
- protected void tearDown() throws Exception {
+ public void tearDown() throws Exception {
if (this.fs.exists(this.dir)) {
this.fs.delete(this.dir);
}
+ StaticTestEnvironment.shutdownDfs(cluster);
super.tearDown();
}
@@ -76,6 +86,7 @@
log.rollWriter();
}
HLog.splitLog(this.testDir, this.dir, this.fs, this.conf);
+ log = null;
} finally {
if (log != null) {
log.closeAndDelete();
Modified: lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/mapred/TestTableMapReduce.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/mapred/TestTableMapReduce.java?rev=603428&r1=603427&r2=603428&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/mapred/TestTableMapReduce.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/test/org/apache/hadoop/hbase/mapred/TestTableMapReduce.java Tue Dec 11 16:40:02 2007
@@ -86,13 +86,6 @@
/** constructor */
public TestTableMapReduce() {
super();
-
- // The region server doesn't have to talk to the master quite so often
- conf.setInt("hbase.regionserver.msginterval", 2000);
-
- // Make the thread wake frequency a little slower so other threads
- // can run
- conf.setInt("hbase.server.thread.wakefrequency", 2000);
// Make sure the cache gets flushed so we trigger a compaction(s) and
// hence splits.