You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by qi...@apache.org on 2017/04/17 12:42:26 UTC
eagle git commit: [EAGLE-1007] Fix memory leak in
ExecutionRuntimeManager
Repository: eagle
Updated Branches:
refs/heads/master d20f2e116 -> fc7281d71
[EAGLE-1007] Fix memory leak in ExecutionRuntimeManager
https://issues.apache.org/jira/browse/EAGLE-1007
Author: Zhao, Qingwen <qi...@apache.org>
Closes #917 from qingwen220/EAGLE-1007.
Project: http://git-wip-us.apache.org/repos/asf/eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/eagle/commit/fc7281d7
Tree: http://git-wip-us.apache.org/repos/asf/eagle/tree/fc7281d7
Diff: http://git-wip-us.apache.org/repos/asf/eagle/diff/fc7281d7
Branch: refs/heads/master
Commit: fc7281d715f57f2f911079d24f5c09b1f79c50cf
Parents: d20f2e1
Author: Zhao, Qingwen <qi...@apache.org>
Authored: Mon Apr 17 20:42:16 2017 +0800
Committer: Zhao, Qingwen <qi...@apache.org>
Committed: Mon Apr 17 20:42:16 2017 +0800
----------------------------------------------------------------------
.../app/environment/AbstractEnvironment.java | 10 +++++
.../ExecutionRuntimeManagerTest.java | 45 ++++++++++++++++++++
2 files changed, 55 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/eagle/blob/fc7281d7/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java
index ec2ffe1..5e3a38b 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/AbstractEnvironment.java
@@ -62,6 +62,16 @@ public abstract class AbstractEnvironment implements Environment {
.append(this.config()).build();
}
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof AbstractEnvironment) {
+ Environment environment = (Environment) obj;
+ return this.getClass().equals(obj.getClass())
+ && this.config.equals(environment.config());
+ }
+ return false;
+ }
+
public StreamProvider stream() {
return streamProvider;
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/fc7281d7/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/environment/ExecutionRuntimeManagerTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/environment/ExecutionRuntimeManagerTest.java b/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/environment/ExecutionRuntimeManagerTest.java
new file mode 100644
index 0000000..eacda9f
--- /dev/null
+++ b/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/environment/ExecutionRuntimeManagerTest.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.eagle.app.environment;
+
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
+import org.apache.eagle.app.environment.impl.StormEnvironment;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.lang.reflect.Field;
+import java.util.Map;
+
+public class ExecutionRuntimeManagerTest {
+
+ @Test
+ public void test() throws NoSuchFieldException, IllegalAccessException {
+ Config config = ConfigFactory.load();
+ ExecutionRuntimeManager manager = ExecutionRuntimeManager.getInstance();
+ manager.getRuntime(StormEnvironment.class, config);
+ manager.getRuntime(StormEnvironment.class, config);
+
+ Field field = manager.getClass().getDeclaredField("executionRuntimeCache");
+ field.setAccessible(true);
+ Map<Environment, ExecutionRuntime> executionRuntimeCache = (Map<Environment, ExecutionRuntime>) field.get(manager);
+
+ Assert.assertTrue(executionRuntimeCache.size() == 1);
+
+ }
+}