HBASE-1074 New thread introduced by hbase-900 part 4 is not daemon so can cause JVM to stick around on abort
git-svn-id: https://svn.apache.org/repos/asf/hadoop/hbase/trunk@728384 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
bac528818a
commit
a23e45f4b7
|
@ -1524,7 +1524,6 @@ public class HTable {
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
if (e instanceof UnknownScannerException &&
|
if (e instanceof UnknownScannerException &&
|
||||||
lastNext + scannerTimeout < System.currentTimeMillis()) {
|
lastNext + scannerTimeout < System.currentTimeMillis()) {
|
||||||
|
|
||||||
ScannerTimeoutException ex = new ScannerTimeoutException();
|
ScannerTimeoutException ex = new ScannerTimeoutException();
|
||||||
ex.initCause(e);
|
ex.initCause(e);
|
||||||
throw ex;
|
throw ex;
|
||||||
|
@ -1538,7 +1537,6 @@ public class HTable {
|
||||||
countdown--;
|
countdown--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} while (countdown > 0 && nextScanner(countdown));
|
} while (countdown > 0 && nextScanner(countdown));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.io.InputStream;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
|
import java.util.concurrent.ThreadFactory;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
@ -48,7 +49,15 @@ public class BlockFSInputStream extends FSInputStream {
|
||||||
* also want BlockFSInputStream to be self-contained.
|
* also want BlockFSInputStream to be self-contained.
|
||||||
*/
|
*/
|
||||||
private static final ScheduledExecutorService EXECUTOR =
|
private static final ScheduledExecutorService EXECUTOR =
|
||||||
Executors.newSingleThreadScheduledExecutor();
|
Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
|
||||||
|
public Thread newThread(Runnable r) {
|
||||||
|
Thread t = new Thread(r);
|
||||||
|
t.setDaemon(true);
|
||||||
|
t.setName("BlockFSInputStream referenceQueue Checker");
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The registration of this object in EXECUTOR.
|
* The registration of this object in EXECUTOR.
|
||||||
|
@ -101,11 +110,12 @@ public class BlockFSInputStream extends FSInputStream {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// Register a Runnable that runs checkReferences on a period.
|
// Register a Runnable that runs checkReferences on a period.
|
||||||
|
final int hashcode = hashCode();
|
||||||
this.registration = EXECUTOR.scheduleAtFixedRate(new Runnable() {
|
this.registration = EXECUTOR.scheduleAtFixedRate(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
int cleared = checkReferences();
|
int cleared = checkReferences();
|
||||||
if (LOG.isDebugEnabled() && cleared > 0) {
|
if (LOG.isDebugEnabled() && cleared > 0) {
|
||||||
LOG.debug("Cleared " + cleared);
|
LOG.debug("Cleared " + cleared + " in " + hashcode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 10, 10, TimeUnit.SECONDS);
|
}, 10, 10, TimeUnit.SECONDS);
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||||
<meta http-equiv="refresh" content="30"/>
|
<meta http-equiv="refresh" content="300"/>
|
||||||
<title>HBase Master: <%= master.getMasterAddress().getHostname()%>:<%= master.getMasterAddress().getPort() %></title>
|
<title>HBase Master: <%= master.getMasterAddress().getHostname()%>:<%= master.getMasterAddress().getPort() %></title>
|
||||||
<link rel="stylesheet" type="text/css" href="/static/hbase.css" />
|
<link rel="stylesheet" type="text/css" href="/static/hbase.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||||
<meta http-equiv="refresh" content="30"/>
|
<meta http-equiv="refresh" content="300"/>
|
||||||
<title>HBase Region Server: <%= serverInfo.getServerAddress().getHostname() %>:<%= serverInfo.getServerAddress().getPort() %></title>
|
<title>HBase Region Server: <%= serverInfo.getServerAddress().getHostname() %>:<%= serverInfo.getServerAddress().getPort() %></title>
|
||||||
<link rel="stylesheet" type="text/css" href="/static/hbase.css" />
|
<link rel="stylesheet" type="text/css" href="/static/hbase.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
Loading…
Reference in New Issue