GEODE-502: Keeping a reference to RMI objects in the dunit framework My suspicion with this failure is that the GC happened that cleaned up one of these objects, if the RMI framework is not keeping a strong reference to the class.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/d177a3f2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/d177a3f2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/d177a3f2 Branch: refs/heads/feature/GEODE-77 Commit: d177a3f2a4883b85870d059e57484eddfa48f9e3 Parents: 2af6d9d Author: Dan Smith <[email protected]> Authored: Tue Oct 27 10:08:59 2015 -0700 Committer: Dan Smith <[email protected]> Committed: Tue Oct 27 14:09:13 2015 -0700 ---------------------------------------------------------------------- gemfire-core/src/test/java/dunit/standalone/ChildVM.java | 4 +++- gemfire-core/src/test/java/dunit/standalone/DUnitLauncher.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d177a3f2/gemfire-core/src/test/java/dunit/standalone/ChildVM.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/dunit/standalone/ChildVM.java b/gemfire-core/src/test/java/dunit/standalone/ChildVM.java index d0a4e98..67b2710 100644 --- a/gemfire-core/src/test/java/dunit/standalone/ChildVM.java +++ b/gemfire-core/src/test/java/dunit/standalone/ChildVM.java @@ -39,6 +39,7 @@ public class ChildVM { } private final static Logger logger = LogService.getLogger(); + private static RemoteDUnitVM dunitVM; public static void main(String[] args) throws Throwable { try { @@ -49,7 +50,8 @@ public class ChildVM { MasterRemote holder = (MasterRemote) Naming.lookup("//localhost:" + namingPort + "/" + DUnitLauncher.MASTER_PARAM); DUnitLauncher.init(holder); DUnitLauncher.locatorPort = holder.getLocatorPort(); - Naming.rebind("//localhost:" + namingPort + "/vm" + vmNum, new RemoteDUnitVM()); + dunitVM = new RemoteDUnitVM(); + Naming.rebind("//localhost:" + namingPort + "/vm" + vmNum, dunitVM); holder.signalVMReady(); //This loop is here so this VM will die even if the master is mean killed. while(true) { http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d177a3f2/gemfire-core/src/test/java/dunit/standalone/DUnitLauncher.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/dunit/standalone/DUnitLauncher.java b/gemfire-core/src/test/java/dunit/standalone/DUnitLauncher.java index 80b05c9..52fa4c8 100644 --- a/gemfire-core/src/test/java/dunit/standalone/DUnitLauncher.java +++ b/gemfire-core/src/test/java/dunit/standalone/DUnitLauncher.java @@ -98,6 +98,8 @@ public class DUnitLauncher { private static final String LAUNCHED_PROPERTY = "gemfire.DUnitLauncher.LAUNCHED"; + private static Master master; + private DUnitLauncher() { } @@ -159,7 +161,7 @@ public class DUnitLauncher { Registry registry = LocateRegistry.createRegistry(namingPort); final ProcessManager processManager = new ProcessManager(namingPort, registry); - Master master = new Master(registry, processManager); + master = new Master(registry, processManager); registry.bind(MASTER_PARAM, master); Runtime.getRuntime().addShutdownHook(new Thread() {
