HDFS-16033 Fix issue of the StatisticsDataReferenceCleaner cleanUp (#3042)

Contributed by kaifeiYi (yikf).

Signed-off-by: Mingliang Liu <liuml07@apache.org>
Reviewed-by: Steve Loughran <stevel@apache.org>
This commit is contained in:
July 2021-06-05 04:36:09 +08:00 committed by GitHub
parent 200eec8f2e
commit 4a26a61ecd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4004,12 +4004,19 @@ public void cleanUp() {
* Background action to act on references being removed. * Background action to act on references being removed.
*/ */
private static class StatisticsDataReferenceCleaner implements Runnable { private static class StatisticsDataReferenceCleaner implements Runnable {
/**
* Represents the timeout period expires for remove reference objects from
* the STATS_DATA_REF_QUEUE when the queue is empty.
*/
private static final int REF_QUEUE_POLL_TIMEOUT = 10000;
@Override @Override
public void run() { public void run() {
while (!Thread.interrupted()) { while (!Thread.interrupted()) {
try { try {
StatisticsDataReference ref = StatisticsDataReference ref =
(StatisticsDataReference)STATS_DATA_REF_QUEUE.remove(); (StatisticsDataReference)STATS_DATA_REF_QUEUE.
remove(REF_QUEUE_POLL_TIMEOUT);
ref.cleanUp(); ref.cleanUp();
} catch (InterruptedException ie) { } catch (InterruptedException ie) {
LOGGER.warn("Cleaner thread interrupted, will stop", ie); LOGGER.warn("Cleaner thread interrupted, will stop", ie);