浏览代码

YARN-9027. Fixed LevelDBCacheTimelineStore initialization.
Contributed by Prabhu Joseph

Eric Yang 6 年之前
父节点
当前提交
4cb559ea7b

+ 8 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timeline-pluginstorage/src/main/java/org/apache/hadoop/yarn/server/timeline/LevelDBCacheTimelineStore.java

@@ -38,6 +38,7 @@ import org.slf4j.LoggerFactory;
 import java.io.File;
 import java.io.IOException;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * LevelDB implementation of {@link KeyValueBasedTimelineStore}. This
@@ -63,6 +64,8 @@ public class LevelDBCacheTimelineStore extends KeyValueBasedTimelineStore {
   private String dbId;
   private DB entityDb;
   private Configuration configuration;
+  private static final AtomicInteger DB_COUNTER = new AtomicInteger(0);
+  private static final String CACHED_LDB_FILENAME = "db";
 
   public LevelDBCacheTimelineStore(String id, String name) {
     super(name);
@@ -76,6 +79,11 @@ public class LevelDBCacheTimelineStore extends KeyValueBasedTimelineStore {
     this(id, LevelDBCacheTimelineStore.class.getName());
   }
 
+  public LevelDBCacheTimelineStore() {
+    this(CACHED_LDB_FILENAME + String.valueOf(DB_COUNTER.getAndIncrement()),
+        LevelDBCacheTimelineStore.class.getName());
+  }
+
   @Override
   protected synchronized void serviceInit(Configuration conf) throws Exception {
     configuration = conf;

+ 13 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timeline-pluginstorage/src/test/java/org/apache/hadoop/yarn/server/timeline/TestLevelDBCacheTimelineStore.java

@@ -19,9 +19,11 @@
 package org.apache.hadoop.yarn.server.timeline;
 
 import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.util.ReflectionUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import static org.junit.Assert.assertNotNull;
 
 import java.io.IOException;
 
@@ -46,6 +48,17 @@ public class TestLevelDBCacheTimelineStore extends TimelineStoreTestUtils {
     return store;
   }
 
+  @Test
+  public void testDefaultConstructor() {
+    TimelineStore store = null;
+    try {
+      store = ReflectionUtils.newInstance(LevelDBCacheTimelineStore.class,
+          new YarnConfiguration());
+    } finally {
+      assertNotNull("LevelDBCacheTimelineStore failed to instantiate", store);
+    }
+  }
+
   @Test
   public void testGetSingleEntity() throws IOException {
     super.testGetSingleEntity();