Skip to content

Commit

Permalink
HDFS-16586. Purge FsDatasetAsyncDiskService threadgroup; it causes BP… (
Browse files Browse the repository at this point in the history
#4338)

* HDFS-16586. Purge FsDatasetAsyncDiskService threadgroup; it causes BPServiceActor IllegalThreadStateException 'fatal exception and exit'

Remove the ThreadGroup used by executor factories; they are unused
and ThreadGroups auto-destroy when their Thread-member count goes to zero.
This behavior is incompatible with the configuration we have on the per-volume
executor which is set to let all threads die if no use inside the
keepalive time.

Signed-off-by: Hexiaoqiao <hexiaoqiao@apache.org>
  • Loading branch information
saintstack authored May 23, 2022
1 parent 4fd4208 commit 5ab7472
Showing 1 changed file with 1 addition and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ class FsDatasetAsyncDiskService {

private final DataNode datanode;
private final FsDatasetImpl fsdatasetImpl;
private final ThreadGroup threadGroup;
private Map<String, ThreadPoolExecutor> executors
= new HashMap<String, ThreadPoolExecutor>();
private Map<String, Set<Long>> deletedBlockIds
Expand All @@ -91,7 +90,6 @@ class FsDatasetAsyncDiskService {
FsDatasetAsyncDiskService(DataNode datanode, FsDatasetImpl fsdatasetImpl) {
this.datanode = datanode;
this.fsdatasetImpl = fsdatasetImpl;
this.threadGroup = new ThreadGroup(getClass().getSimpleName());
maxNumThreadsPerVolume = datanode.getConf().getInt(
DFSConfigKeys.DFS_DATANODE_FSDATASETASYNCDISK_MAX_THREADS_PER_VOLUME_KEY,
DFSConfigKeys.DFS_DATANODE_FSDATASETASYNCDISK_MAX_THREADS_PER_VOLUME_DEFAULT);
Expand All @@ -110,7 +108,7 @@ public Thread newThread(Runnable r) {
synchronized (this) {
thisIndex = counter++;
}
Thread t = new Thread(threadGroup, r);
Thread t = new Thread(r);
t.setName("Async disk worker #" + thisIndex +
" for volume " + volume);
return t;
Expand Down

0 comments on commit 5ab7472

Please sign in to comment.