Repository: reef
Updated Branches:
  refs/heads/master d4da7c396 -> 9bf549458


[REEF-1065] Add Java Reference Cleanup for InterOp code

This addressed the issue by
  * Add Finalizer and Destructor in InterOp objects.
  * Call DeleteGlobalRef where NewGlobalRef is called.

JIRA:
  [REEF-1065](https://issues.apache.org/jira/browse/REEF-1065)

Pull Request:
  Closes #723


Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/9bf54945
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/9bf54945
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/9bf54945

Branch: refs/heads/master
Commit: 9bf549458cceb57da52187eb4a713714e9111dc8
Parents: d4da7c3
Author: Andrew Chung <[email protected]>
Authored: Thu Dec 10 18:01:11 2015 -0800
Committer: Beysim Sezgin <[email protected]>
Committed: Fri Dec 11 10:41:38 2015 -0800

----------------------------------------------------------------------
 .../ActiveContextClr2Java.cpp                   |  19 ++++
 .../AllocatedEvaluatorClr2Java.cpp              |  19 ++++
 .../ClosedContextClr2Java.cpp                   |  19 ++++
 lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h   | 100 ++++++++++++-------
 .../CompletedEvaluatorClr2Java.cpp              |  15 +++
 .../CompletedTaskClr2Java.cpp                   |  15 +++
 .../ContextMessageClr2Java.cpp                  |  23 +++++
 .../DriverRestartCompletedClr2Java.cpp          |  11 ++
 .../DriverRestartedClr2Java.cpp                 |  13 +++
 .../EvaluatorRequestorClr2Java.cpp              |  11 ++
 .../FailedContextClr2Java.cpp                   |  23 +++++
 .../FailedEvaluatorClr2Java.cpp                 |  15 +++
 .../FailedTaskClr2Java.cpp                      |  11 ++
 .../HttpServerClr2Java.cpp                      |  11 ++
 .../RunningTaskClr2Java.cpp                     |  15 +++
 .../SuspendedTaskClr2Java.cpp                   |  15 +++
 .../TaskMessageClr2Java.cpp                     |  15 +++
 17 files changed, 316 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
index 84f82e0..be2f271 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
@@ -46,6 +46,25 @@ namespace Org {
                                                        
ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::ActiveContextClr2Java");
                                                }
 
+                                               
ActiveContextClr2Java::~ActiveContextClr2Java() {
+                                                       
this->!ActiveContextClr2Java();
+                                               }
+
+                                               
ActiveContextClr2Java::!ActiveContextClr2Java() {
+                                                       JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                       if 
(_jobjectActiveContext != NULL) {
+                                                               
env->DeleteGlobalRef(_jobjectActiveContext); 
+                                                       }
+
+                                                       if (_jstringId != NULL) 
{
+                                                               
env->DeleteGlobalRef(_jstringId);
+                                                       }
+
+                                                       if (_jstringEvaluatorId 
!= NULL) {
+                                                               
env->DeleteGlobalRef(_jstringEvaluatorId);
+                                                       }
+                                               }
+
                                                void 
ActiveContextClr2Java::SubmitTask(String^ taskConfigStr) {
                                                        
ManagedLog::LOGGER->LogStart("ActiveContextClr2Java::SubmitTask");
                                                        JNIEnv *env = 
RetrieveEnv(_jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
index b23fb43..fc02a45 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
@@ -50,6 +50,25 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::AllocatedEvaluatorClr2Java");
                                          }
 
+                                         
AllocatedEvaluatorClr2Java::~AllocatedEvaluatorClr2Java() {
+                                                 
this->!AllocatedEvaluatorClr2Java();
+                                         }
+
+                                         
AllocatedEvaluatorClr2Java::!AllocatedEvaluatorClr2Java() {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 if 
(_jobjectAllocatedEvaluator != NULL) {
+                                                         
env->DeleteGlobalRef(_jobjectAllocatedEvaluator);
+                                                 }
+
+                                                 if (_jstringId != NULL) {
+                                                         
env->DeleteGlobalRef(_jstringId);
+                                                 }
+
+                                                 if (_jstringNameServerInfo != 
NULL) {
+                                                         
env->DeleteGlobalRef(_jstringNameServerInfo);
+                                                 }
+                                         }
+
                                          void 
AllocatedEvaluatorClr2Java::SubmitContext(String^ contextConfigStr) {
                                                  
ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::SubmitContext");
                                                  JNIEnv *env = 
RetrieveEnv(_jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
index 70f6ca2..cac7b44 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
@@ -47,6 +47,25 @@ namespace Org {
                             
ManagedLog::LOGGER->LogStop("ClosedContextClr2Java::ClosedContextClr2Java");
                         }
 
+                        ClosedContextClr2Java::~ClosedContextClr2Java() {
+                            this->!ClosedContextClr2Java();
+                        }
+
+                        ClosedContextClr2Java::!ClosedContextClr2Java() {
+                            JNIEnv *env = RetrieveEnv(_jvm);
+                            if (_jobjectClosedContext != NULL) {
+                                env->DeleteGlobalRef(_jobjectClosedContext);
+                            }
+                            
+                            if (_jstringContextId != NULL) {
+                                env->DeleteGlobalRef(_jstringContextId);
+                            }
+
+                            if (_jstringEvaluatorId != NULL) {
+                                env->DeleteGlobalRef(_jstringEvaluatorId);
+                            }
+                        }
+
                         /**
                          * Gets the Parent context of the closed context 
through a JNI call to Java.
                          */

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h 
b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
index b4bdf69..4d270f2 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
+++ b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
@@ -55,12 +55,14 @@ namespace Org {
                         };
 
                         public ref class AllocatedEvaluatorClr2Java : public 
IAllocatedEvaluaotrClr2Java {
-                            jobject  _jobjectAllocatedEvaluator;
+                            jobject  _jobjectAllocatedEvaluator = NULL;
                             JavaVM* _jvm;
-                            jstring _jstringId;
-                            jstring _jstringNameServerInfo;
+                            jstring _jstringId = NULL;
+                            jstring _jstringNameServerInfo = NULL;
                         public:
                             AllocatedEvaluatorClr2Java(JNIEnv *env, jobject 
jallocatedEvaluator);
+                            ~AllocatedEvaluatorClr2Java();
+                            !AllocatedEvaluatorClr2Java();
                             virtual void SubmitContextAndTask(String^ 
contextConfigStr, String^ taskConfigStr);
                             virtual void SubmitContext(String^ 
contextConfigStr);
                             virtual void SubmitContextAndService(String^ 
contextConfigStr, String^ serviceConfigStr);
@@ -73,12 +75,14 @@ namespace Org {
                         };
 
                         public ref class ActiveContextClr2Java : public 
IActiveContextClr2Java {
-                            jobject _jobjectActiveContext;
-                            jstring _jstringId;
-                            jstring _jstringEvaluatorId;
+                            jobject _jobjectActiveContext = NULL;
+                            jstring _jstringId = NULL;
+                            jstring _jstringEvaluatorId = NULL;
                             JavaVM* _jvm;
                         public:
                             ActiveContextClr2Java(JNIEnv *env, jobject 
jallocatedEvaluator);
+                            ~ActiveContextClr2Java();
+                            !ActiveContextClr2Java();
                             virtual void SubmitTask(String^ taskConfigStr);
                             virtual void Close();
                             virtual void OnError(String^ message);
@@ -89,40 +93,48 @@ namespace Org {
                         };
 
                         public ref class EvaluatorRequestorClr2Java : public 
IEvaluatorRequestorClr2Java {
-                            jobject  _jobjectEvaluatorRequestor;
+                            jobject  _jobjectEvaluatorRequestor = NULL;
                             JavaVM* _jvm;
                         public:
                             EvaluatorRequestorClr2Java(JNIEnv *env, jobject 
jevaluatorRequestor);
+                            ~EvaluatorRequestorClr2Java();
+                            !EvaluatorRequestorClr2Java();
                             virtual void OnError(String^ message);
                             virtual void Submit(IEvaluatorRequest^ request);
                         };
 
                         public ref class TaskMessageClr2Java : public 
ITaskMessageClr2Java {
-                            jobject  _jobjectTaskMessage;
+                            jobject  _jobjectTaskMessage = NULL;
                             JavaVM* _jvm;
-                            jstring _jstringId;
+                            jstring _jstringId = NULL;
                         public:
                             TaskMessageClr2Java(JNIEnv *env, jobject 
jtaskMessage);
+                            ~TaskMessageClr2Java();
+                            !TaskMessageClr2Java();
                             virtual void OnError(String^ message);
                             virtual String^ GetId();
                         };
 
                         public ref class FailedTaskClr2Java : public 
IFailedTaskClr2Java {
-                            jobject  _jobjectFailedTask;
+                            jobject  _jobjectFailedTask = NULL;
                             JavaVM* _jvm;
                         public:
                             FailedTaskClr2Java(JNIEnv *env, jobject 
jfailedTask);
+                            ~FailedTaskClr2Java();
+                            !FailedTaskClr2Java();
                             virtual void OnError(String^ message);
                             virtual IActiveContextClr2Java^ GetActiveContext();
                             virtual String^ GetString();
                         };
 
                         public ref class RunningTaskClr2Java : public 
IRunningTaskClr2Java {
-                            jobject  _jobjectRunningTask;
+                            jobject  _jobjectRunningTask = NULL;
                             JavaVM* _jvm;
-                            jstring _jstringId;
+                            jstring _jstringId = NULL;
                         public:
                             RunningTaskClr2Java(JNIEnv *env, jobject 
jrunningTask);
+                            ~RunningTaskClr2Java();
+                            !RunningTaskClr2Java();
                             virtual void OnError(String^ message);
                             virtual IActiveContextClr2Java^ GetActiveContext();
                             virtual String^ GetId();
@@ -130,21 +142,25 @@ namespace Org {
                         };
 
                         public ref class FailedEvaluatorClr2Java : public 
IFailedEvaluatorClr2Java {
-                            jobject  _jobjectFailedEvaluator;
+                            jobject  _jobjectFailedEvaluator = NULL;
                             JavaVM* _jvm;
-                            jstring _jstringId;
+                            jstring _jstringId = NULL;
                         public:
                             FailedEvaluatorClr2Java(JNIEnv *env, jobject 
jfailedEvaluator);
+                            ~FailedEvaluatorClr2Java();
+                            !FailedEvaluatorClr2Java();
                             virtual void OnError(String^ message);
                             virtual IEvaluatorRequestorClr2Java^ 
GetEvaluatorRequestor();
                             virtual String^ GetId();
                         };
 
                         public ref class HttpServerClr2Java : public 
IHttpServerBridgeClr2Java {
-                            jobject _jhttpServerEventBridge;
+                            jobject _jhttpServerEventBridge = NULL;
                             JavaVM* _jvm;
                         public:
                             HttpServerClr2Java(JNIEnv *env, jobject 
jhttpServerEventBridge);
+                            ~HttpServerClr2Java();
+                            !HttpServerClr2Java();
                             virtual void OnError(String^ message);
                             virtual String^ GetQueryString();
                             virtual void SetUriSpecification(String^ 
uriSpecification);
@@ -154,11 +170,13 @@ namespace Org {
                         };
 
                         public ref class CompletedTaskClr2Java : public 
ICompletedTaskClr2Java {
-                            jobject  _jobjectCompletedTask;
+                            jobject  _jobjectCompletedTask = NULL;
                             JavaVM* _jvm;
-                            jstring _jstringId;
+                            jstring _jstringId = NULL;
                         public:
                             CompletedTaskClr2Java(JNIEnv *env, jobject 
jcompletedTask);
+                            ~CompletedTaskClr2Java();
+                            !CompletedTaskClr2Java();
                             virtual void OnError(String^ message);
                             virtual IActiveContextClr2Java^ GetActiveContext();
                             virtual String^ GetId();
@@ -166,11 +184,13 @@ namespace Org {
                         };
 
                         public ref class SuspendedTaskClr2Java : public 
ISuspendedTaskClr2Java {
-                            jobject  _jobjectSuspendedTask;
+                            jobject  _jobjectSuspendedTask = NULL;
                             JavaVM* _jvm;
-                            jstring _jstringId;
+                            jstring _jstringId = NULL;
                         public:
                             SuspendedTaskClr2Java(JNIEnv *env, jobject 
jobjectSuspendedTask);
+                            ~SuspendedTaskClr2Java();
+                            !SuspendedTaskClr2Java();
                             virtual void OnError(String^ message);
                             virtual IActiveContextClr2Java^ GetActiveContext();
                             virtual String^ GetId();
@@ -178,22 +198,26 @@ namespace Org {
                         };
 
                         public ref class CompletedEvaluatorClr2Java : public 
ICompletedEvaluatorClr2Java {
-                            jobject  _jobjectCompletedEvaluator;
+                            jobject  _jobjectCompletedEvaluator = NULL;
                             JavaVM* _jvm;
-                            jstring _jstringId;
+                            jstring _jstringId = NULL;
                         public:
                             CompletedEvaluatorClr2Java(JNIEnv *env, jobject 
jobjectCompletedEvaluator);
+                            ~CompletedEvaluatorClr2Java();
+                            !CompletedEvaluatorClr2Java();
                             virtual void OnError(String^ message);
                             virtual String^ GetId();
                         };
 
                         public ref class ClosedContextClr2Java : public 
IClosedContextClr2Java {
-                            jobject  _jobjectClosedContext;
+                            jobject  _jobjectClosedContext = NULL;
                             JavaVM* _jvm;
-                            jstring _jstringContextId;
-                            jstring _jstringEvaluatorId;
+                            jstring _jstringContextId = NULL;
+                            jstring _jstringEvaluatorId = NULL;
                         public:
                             ClosedContextClr2Java(JNIEnv *env, jobject 
jobjectClosedContext);
+                            ~ClosedContextClr2Java();
+                            !ClosedContextClr2Java();
                             virtual void OnError(String^ message);
                             virtual String^ GetId();
                             virtual String^ GetEvaluatorId();
@@ -202,13 +226,15 @@ namespace Org {
                         };
 
                         public ref class FailedContextClr2Java : public 
IFailedContextClr2Java {
-                            jobject  _jobjectFailedContext;
+                            jobject  _jobjectFailedContext = NULL;
                             JavaVM* _jvm;
-                            jstring _jstringContextId;
-                            jstring _jstringEvaluatorId;
-                            jstring _jstringParentContextId;
+                            jstring _jstringContextId = NULL;
+                            jstring _jstringEvaluatorId = NULL;
+                            jstring _jstringParentContextId = NULL;
                         public:
                             FailedContextClr2Java(JNIEnv *env, jobject 
jobjectFailedContext);
+                            ~FailedContextClr2Java();
+                            !FailedContextClr2Java();
                             virtual void OnError(String^ message);
                             virtual String^ GetId();
                             virtual String^ GetEvaluatorId();
@@ -218,13 +244,15 @@ namespace Org {
                         };
 
                         public ref class ContextMessageClr2Java : public 
IContextMessageClr2Java {
-                            jobject  _jobjectContextMessage;
+                            jobject  _jobjectContextMessage = NULL;
                             JavaVM* _jvm;
-                            jbyteArray _jarrayMessage;
-                            jstring _jstringId;
-                            jstring _jstringSourceId;
+                            jbyteArray _jarrayMessage = NULL;
+                            jstring _jstringId = NULL;
+                            jstring _jstringSourceId = NULL;
                         public:
                             ContextMessageClr2Java(JNIEnv *env, jobject 
jobjectContextMessage);
+                            ~ContextMessageClr2Java();
+                            !ContextMessageClr2Java();
                             virtual void OnError(String^ message);
                             virtual array<byte>^ Get();
                             virtual String^ GetId();
@@ -232,13 +260,15 @@ namespace Org {
                         };
 
                         public ref class DriverRestartedClr2Java : public 
IDriverRestartedClr2Java {
-                            jobject _jobjectDriverRestarted;
+                            jobject _jobjectDriverRestarted = NULL;
                             JavaVM* _jvm;
                             array<String^>^ _expectedEvaluatorIds;
                             DateTime _startTime;
                             int _resubmissionAttempts;
                         public:
                             DriverRestartedClr2Java(JNIEnv *env, jobject 
jobjectDriverRestarted);
+                            ~DriverRestartedClr2Java();
+                            !DriverRestartedClr2Java();
                             virtual void OnError(String^ message);
                             virtual array<String^>^ GetExpectedEvaluatorIds();
                             virtual DateTime GetStartTime();
@@ -246,12 +276,14 @@ namespace Org {
                         };
 
                         public ref class DriverRestartCompletedClr2Java : 
public IDriverRestartCompletedClr2Java {
-                            jobject _jobjectDriverRestartCompleted;
+                            jobject _jobjectDriverRestartCompleted = NULL;
                             JavaVM* _jvm;
                             DateTime _restartCompletedTime;
                             bool _isTimedOut;
                         public:
                             DriverRestartCompletedClr2Java(JNIEnv *env, 
jobject jobobjectDriverRestartCompleted);
+                            ~DriverRestartCompletedClr2Java();
+                            !DriverRestartCompletedClr2Java();
                             virtual void OnError(String^ message);
                             virtual DateTime GetCompletedTime();
                             virtual bool IsTimedOut();

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
index 6c09826..3f54ec1 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
@@ -42,6 +42,21 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("CompletedEvaluatorClr2Java::CompletedEvaluatorClr2Java");
                                          }
 
+                                         
CompletedEvaluatorClr2Java::~CompletedEvaluatorClr2Java() {
+                                                 
this->!CompletedEvaluatorClr2Java();
+                                         }
+
+                                         
CompletedEvaluatorClr2Java::!CompletedEvaluatorClr2Java() {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 if 
(_jobjectCompletedEvaluator != NULL) {
+                                                         
env->DeleteGlobalRef(_jobjectCompletedEvaluator);
+                                                 }
+
+                                                 if (_jstringId != NULL) {
+                                                         
env->DeleteGlobalRef(_jstringId); 
+                                                 }
+                                         }
+
                                          void 
CompletedEvaluatorClr2Java::OnError(String^ message) {
                                                  
ManagedLog::LOGGER->Log("CompletedEvaluatorClr2Java::OnError");
                                                  JNIEnv *env = 
RetrieveEnv(_jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
index 50f1b42..f8790bf 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
@@ -43,6 +43,21 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("CompletedTaskClr2Java::CompletedTaskClr2Java");
                                          }
 
+                                         
CompletedTaskClr2Java::~CompletedTaskClr2Java(){
+                                                 
this->!CompletedTaskClr2Java();
+                                         }
+
+                                         
CompletedTaskClr2Java::!CompletedTaskClr2Java() {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 if (_jobjectCompletedTask != 
NULL) {
+                                                         
env->DeleteGlobalRef(_jobjectCompletedTask);
+                                                 }
+
+                                                 if (_jstringId != NULL) {
+                                                         
env->DeleteGlobalRef(_jstringId);
+                                                 }
+                                         }
+
                                          void 
CompletedTaskClr2Java::OnError(String^ message) {
                                                  
ManagedLog::LOGGER->Log("CompletedTaskClr2Java::OnError");
                                                  JNIEnv *env = 
RetrieveEnv(_jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
index 18ff378..d3d594d 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
@@ -48,6 +48,29 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("ContextMessageClr2Java::ContextMessageClr2Java");
                                          }
 
+                                         
ContextMessageClr2Java::~ContextMessageClr2Java() {
+                                                 
this->!ContextMessageClr2Java();
+                                         }
+
+                                         
ContextMessageClr2Java::!ContextMessageClr2Java() {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 if (_jobjectContextMessage != 
NULL) {
+                                                         
env->DeleteGlobalRef(_jobjectContextMessage);
+                                                 }
+
+                                                 if (_jstringId != NULL) {
+                                                         
env->DeleteGlobalRef(_jstringId);
+                                                 }
+
+                                                 if (_jstringSourceId != NULL) 
{
+                                                         
env->DeleteGlobalRef(_jstringSourceId);
+                                                 }
+
+                                                 if (_jarrayMessage != NULL) {
+                                                         
env->DeleteGlobalRef(_jarrayMessage);
+                                                 }
+                                         }
+
                                          String^ 
ContextMessageClr2Java::GetId() {
                                                  
ManagedLog::LOGGER->Log("ContextMessageClr2Java::GetId");
                                                  JNIEnv *env = 
RetrieveEnv(_jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
index 1e9a521..2c04456 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
@@ -47,6 +47,17 @@ namespace Org {
                                                        
ManagedLog::LOGGER->LogStop("DriverRestartCompletedClr2Java::DriverRestartCompletedClr2Java");
                                                }
 
+                                               
DriverRestartCompletedClr2Java::~DriverRestartCompletedClr2Java() {
+                                                       
this->!DriverRestartCompletedClr2Java();
+                                               }
+
+                                               
DriverRestartCompletedClr2Java::!DriverRestartCompletedClr2Java() {
+                                                       if 
(_jobjectDriverRestartCompleted != NULL) {
+                                                               JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                               
env->DeleteGlobalRef(_jobjectDriverRestartCompleted);
+                                                       }
+                                               }
+
                                                bool 
DriverRestartCompletedClr2Java::IsTimedOut() {
                                                        return _isTimedOut;
                                                }

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
index efb30d9..e6ab41b 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
@@ -52,9 +52,22 @@ namespace Org {
                                                                
_expectedEvaluatorIds[i] = ManagedStringFromJavaString(env, string);
                                                        }
 
+                                                       
env->DeleteGlobalRef(jevaluatorIds);
+
                                                        
ManagedLog::LOGGER->LogStop("DriverRestartedClr2Java::DriverRestartedClr2Java");
                                                }
 
+                                               
DriverRestartedClr2Java::~DriverRestartedClr2Java() {
+                                                       
this->!DriverRestartedClr2Java();
+                                               }
+
+                                               
DriverRestartedClr2Java::!DriverRestartedClr2Java() {
+                                                       if 
(_jobjectDriverRestarted != NULL) {
+                                                               JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                               
env->DeleteGlobalRef(_jobjectDriverRestarted);
+                                                       }
+                                               }
+
                                                array<String^>^ 
DriverRestartedClr2Java::GetExpectedEvaluatorIds() {
                                                        return 
_expectedEvaluatorIds;
                                                }

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
index 2daed9e..45ad8ea 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
@@ -39,6 +39,17 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("EvaluatorRequestorClr2Java::EvaluatorRequestorClr2Java");
                                          }
 
+                                         
EvaluatorRequestorClr2Java::~EvaluatorRequestorClr2Java() {
+                                                 
this->!EvaluatorRequestorClr2Java();
+                                         }
+
+                                         
EvaluatorRequestorClr2Java::!EvaluatorRequestorClr2Java() {
+                                                 if 
(_jobjectEvaluatorRequestor != NULL) {
+                                                         JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                         
env->DeleteGlobalRef(_jobjectEvaluatorRequestor);
+                                                 }
+                                         }
+
                                          void 
EvaluatorRequestorClr2Java::Submit(IEvaluatorRequest^ request) {
                                                  
ManagedLog::LOGGER->LogStart("EvaluatorRequestorClr2Java::Submit");
                                                  JNIEnv *env = 
RetrieveEnv(_jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
index 9b26bbb..1913507 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
@@ -47,6 +47,29 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("FailedContextClr2Java::FailedContextClr2Java");
                                          }
 
+                                         
FailedContextClr2Java::~FailedContextClr2Java() {
+                                                 
this->!FailedContextClr2Java();
+                                         }
+
+                                         
FailedContextClr2Java::!FailedContextClr2Java() {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 if (_jobjectFailedContext != 
NULL) {
+                                                         
env->DeleteGlobalRef(_jobjectFailedContext);
+                                                 }
+
+                                                 if (_jstringContextId != 
NULL) {
+                                                         
env->DeleteGlobalRef(_jstringContextId);
+                                                 }
+
+                                                 if (_jstringEvaluatorId != 
NULL) {
+                                                         
env->DeleteGlobalRef(_jstringEvaluatorId);
+                                                 }
+
+                                                 if (_jstringParentContextId 
!= NULL) {
+                                                         
env->DeleteGlobalRef(_jstringParentContextId);
+                                                 }
+                                         }
+
                                          IActiveContextClr2Java^ 
FailedContextClr2Java::GetParentContext() {
                                                  
ManagedLog::LOGGER->LogStart("FailedContextClr2Java::GetParentContext");
 

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
index afccbbe..7f13d5d 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
@@ -44,6 +44,21 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("FailedEvaluatorClr2Java::FailedEvaluatorClr2Java");
                                          }
 
+                                         
FailedEvaluatorClr2Java::~FailedEvaluatorClr2Java() {
+                                                 
this->!FailedEvaluatorClr2Java();
+                                         }
+
+                                         
FailedEvaluatorClr2Java::!FailedEvaluatorClr2Java() {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 if (_jobjectFailedEvaluator 
!= NULL) {
+                                                         
env->DeleteGlobalRef(_jobjectFailedEvaluator);
+                                                 }
+
+                                                 if (_jstringId != NULL) {
+                                                         
env->DeleteGlobalRef(_jstringId);
+                                                 }
+                                         }
+
                                          IEvaluatorRequestorClr2Java^ 
FailedEvaluatorClr2Java::GetEvaluatorRequestor() {
                                                  
ManagedLog::LOGGER->LogStart("FailedEvaluatorClr2Java::GetEvaluatorRequestor");
                                                  JNIEnv *env = 
RetrieveEnv(_jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
index b6e2be2..de702b7 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
@@ -39,6 +39,17 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("FailedTaskClr2Java::AllocatedEvaluatorClr2Java");
                                          }
 
+                                         
FailedTaskClr2Java::~FailedTaskClr2Java() {
+                                                 this->!FailedTaskClr2Java();
+                                         }
+
+                                         
FailedTaskClr2Java::!FailedTaskClr2Java() {
+                                                 if (_jobjectFailedTask != 
NULL) {
+                                                         JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                         
env->DeleteGlobalRef(_jobjectFailedTask);
+                                                 }
+                                         }
+
                                          IActiveContextClr2Java^ 
FailedTaskClr2Java::GetActiveContext() {
                                                  
ManagedLog::LOGGER->LogStart("FailedTaskClr2Java::GetActiveContext");
 

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
index f8a819d..76e167c 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
@@ -39,6 +39,17 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("HttpServerClr2Java::HttpServerClr2Java");
                                          }
 
+                                         
HttpServerClr2Java::~HttpServerClr2Java() {
+                                                 this->!HttpServerClr2Java();
+                                         }
+
+                                         
HttpServerClr2Java::!HttpServerClr2Java() {
+                                                 if (_jhttpServerEventBridge 
!= NULL) {
+                                                         JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                         
env->DeleteGlobalRef(_jhttpServerEventBridge); 
+                                                 }
+                                         }
+
                                          String^ 
HttpServerClr2Java::GetQueryString() {
                                                  
ManagedLog::LOGGER->LogStart("HttpServerClr2Java::GetQueryString");
                                                  JNIEnv *env = 
RetrieveEnv(_jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp
index 362715b..eda80b0 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp
@@ -42,6 +42,21 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("RunningTaskClr2Java::RunningTaskClr2Java");
                                          }
 
+                                         
RunningTaskClr2Java::~RunningTaskClr2Java() {
+                                                 this->!RunningTaskClr2Java();
+                                         }
+
+                                         
RunningTaskClr2Java::!RunningTaskClr2Java() {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 if (_jobjectRunningTask != 
NULL) {
+                                                         
env->DeleteGlobalRef(_jobjectRunningTask);
+                                                 }
+
+                                                 if (_jstringId != NULL) {
+                                                         
env->DeleteGlobalRef(_jstringId);
+                                                 }
+                                         }
+
                                          IActiveContextClr2Java^ 
RunningTaskClr2Java::GetActiveContext() {
                                                  
ManagedLog::LOGGER->LogStart("RunningTaskClr2Java::GetActiveContext");
 

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp
index 059b594..2684028 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp
@@ -42,6 +42,21 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("SuspendedTaskClr2Java::SuspendedTaskClr2Java");
                                          }
 
+                                         
SuspendedTaskClr2Java::~SuspendedTaskClr2Java() {
+                                                 
this->!SuspendedTaskClr2Java();
+                                         }
+
+                                         
SuspendedTaskClr2Java::!SuspendedTaskClr2Java() {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 if (_jobjectSuspendedTask != 
NULL) {
+                                                         
env->DeleteGlobalRef(_jobjectSuspendedTask);
+                                                 }
+
+                                                 if (_jstringId != NULL) {
+                                                         
env->DeleteGlobalRef(_jstringId);
+                                                 }
+                                         }
+
                                          IActiveContextClr2Java^ 
SuspendedTaskClr2Java::GetActiveContext() {
                                                  
ManagedLog::LOGGER->LogStart("SuspendedTaskClr2Java::GetActiveContext");
                                                  JNIEnv *env = 
RetrieveEnv(_jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/9bf54945/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp
index 1fa3cec..a4eca1a 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp
@@ -42,6 +42,21 @@ namespace Org {
                                                  
ManagedLog::LOGGER->LogStop("TaskMessageClr2Java::TaskMessageClr2Java");
                                          }
 
+                                         
TaskMessageClr2Java::~TaskMessageClr2Java() {
+                                                 this->!TaskMessageClr2Java();
+                                         }
+
+                                         
TaskMessageClr2Java::!TaskMessageClr2Java() {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 if (_jobjectTaskMessage != 
NULL) {
+                                                         
env->DeleteGlobalRef(_jobjectTaskMessage);
+                                                 }
+
+                                                 if (_jstringId != NULL) {
+                                                         
env->DeleteGlobalRef(_jstringId);
+                                                 }
+                                         }
+
                                          void 
TaskMessageClr2Java::OnError(String^ message) {
                                                  
ManagedLog::LOGGER->Log("TaskMessageClr2Java::OnError");
                                                  JNIEnv *env = 
RetrieveEnv(_jvm);

Reply via email to