summaryrefslogtreecommitdiff
path: root/hadoop-hdfs-project/hadoop-hdfs/src/main
diff options
context:
space:
mode:
authorNanda kumar <nanda@apache.org>2018-01-21 00:40:39 +0530
committerOwen O'Malley <omalley@apache.org>2018-04-26 05:36:04 -0700
commit4a051ba4947dbb993bcfe1eda15c5926465db6ec (patch)
tree94966f11ef7f77da270628c3c93c81bf76c8782e /hadoop-hdfs-project/hadoop-hdfs/src/main
parent1fb1ce107fa6e314b8b0e9c9147196402902fb5c (diff)
HDFS-12940. Ozone: KSM: TestKeySpaceManager#testExpiredOpenKey fails occasionally. Contributed by Nanda kumar.
Diffstat (limited to 'hadoop-hdfs-project/hadoop-hdfs/src/main')
-rw-r--r--hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeyManagerImpl.java6
-rw-r--r--hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/ksm/KeySpaceManager.java5
-rw-r--r--hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/utils/BackgroundService.java10
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()) {