diff options
author | Nanda kumar <nanda@apache.org> | 2018-01-21 00:40:39 +0530 |
---|---|---|
committer | Owen O'Malley <omalley@apache.org> | 2018-04-26 05:36:04 -0700 |
commit | 4a051ba4947dbb993bcfe1eda15c5926465db6ec (patch) | |
tree | 94966f11ef7f77da270628c3c93c81bf76c8782e /hadoop-hdfs-project/hadoop-hdfs/src/main | |
parent | 1fb1ce107fa6e314b8b0e9c9147196402902fb5c (diff) |
HDFS-12940. Ozone: KSM: TestKeySpaceManager#testExpiredOpenKey fails occasionally. Contributed by Nanda kumar.
Diffstat (limited to 'hadoop-hdfs-project/hadoop-hdfs/src/main')
3 files changed, 19 insertions, 2 deletions
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeyManagerImpl.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeyManagerImpl.java index 10c61fc96c..b99103b1a2 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeyManagerImpl.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeyManagerImpl.java @@ -16,6 +16,7 @@ */ package org.apache.hadoop.ozone.ksm; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import org.apache.hadoop.ozone.OzoneConsts; import org.apache.hadoop.hdfs.DFSUtil; @@ -128,6 +129,11 @@ public class KeyManagerImpl implements KeyManager { this.ksmId = ksmId; } + @VisibleForTesting + public BackgroundService getOpenKeyCleanupService() { + return openKeyCleanupService; + } + @Override public void start() { keyDeletingService.start(); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeySpaceManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeySpaceManager.java index ef311651bb..6139292760 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeySpaceManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeySpaceManager.java @@ -235,6 +235,11 @@ public class KeySpaceManager extends ServiceRuntimeInfoImpl } @VisibleForTesting + public KeyManager getKeyManager() { + return keyManager; + } + + @VisibleForTesting public ScmInfo getScmInfo() throws IOException { return scmBlockClient.getScmInfo(); } diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/utils/BackgroundService.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/utils/BackgroundService.java index 4c789e993a..2ff4e5562f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/utils/BackgroundService.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/utils/BackgroundService.java @@ -55,6 +55,7 @@ public abstract class BackgroundService { private final long interval; private final long serviceTimeout; private final TimeUnit unit; + private final PeriodicalTask service; public BackgroundService(String serviceName, long interval, TimeUnit unit, int threadPoolSize, long serviceTimeout) { @@ -70,6 +71,7 @@ public abstract class BackgroundService { .setNameFormat(serviceName + "#%d") .build(); exec = Executors.newScheduledThreadPool(threadPoolSize, threadFactory); + service = new PeriodicalTask(); } protected ExecutorService getExecutorService() { @@ -81,10 +83,14 @@ public abstract class BackgroundService { return threadGroup.activeCount(); } + @VisibleForTesting + public void triggerBackgroundTaskForTesting() { + service.run(); + } // start service public void start() { - exec.scheduleWithFixedDelay(new PeriodicalTask(), 0, interval, unit); + exec.scheduleWithFixedDelay(service, 0, interval, unit); } public abstract BackgroundTaskQueue getTasks(); @@ -95,7 +101,7 @@ public abstract class BackgroundService { */ public class PeriodicalTask implements Runnable { @Override - public void run() { + public synchronized void run() { LOG.debug("Running background service : {}", serviceName); BackgroundTaskQueue tasks = getTasks(); if (tasks.isEmpty()) { |