From 4ad62ecb7dcfbe2e458b80d910ef0604033d6070 Mon Sep 17 00:00:00 2001
From: leaves-zwx <kunta0932@gmail.com>
Date: Sun, 18 Jul 2021 00:36:01 +0800
Subject: [PATCH] Fix Session TryClose (#5531)

* fix TryClose

* fix addressing watch callback
---
 .../framework/session_util.py                              | 7 ++++++-
 oneflow/python/framework/session_util.py                   | 7 ++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/oneflow/compatible_single_client_python/framework/session_util.py b/oneflow/compatible_single_client_python/framework/session_util.py
index c0aa494a2..7d928ba66 100644
--- a/oneflow/compatible_single_client_python/framework/session_util.py
+++ b/oneflow/compatible_single_client_python/framework/session_util.py
@@ -235,6 +235,11 @@ class Session(object):
         if self.status_ is SessionStatus.RUNNING:
             self.Close()
 
+        if self.status_ != SessionStatus.CLOSED:
+            oneflow._oneflow_internal.ClearSessionById(self.id)
+
+        self.status_ = SessionStatus.CLOSED
+
     def Close(self):
         assert self.status_ is SessionStatus.RUNNING
         self.Sync()
@@ -442,7 +447,7 @@ class Session(object):
         self.cond_var_.release()
 
     def __del__(self):
-        oneflow._oneflow_internal.ClearSessionById(self.id)
+        self.TryClose()
 
 
 @oneflow_export("find_or_create_module")
diff --git a/oneflow/python/framework/session_util.py b/oneflow/python/framework/session_util.py
index 55a4b96e7..a383a1bdd 100644
--- a/oneflow/python/framework/session_util.py
+++ b/oneflow/python/framework/session_util.py
@@ -220,6 +220,11 @@ class Session(object):
         if self.status_ is SessionStatus.RUNNING:
             self.Close()
 
+        if self.status_ != SessionStatus.CLOSED:
+            oneflow._oneflow_internal.ClearSessionById(self.id)
+
+        self.status_ = SessionStatus.CLOSED
+
     def Close(self):
         assert self.status_ is SessionStatus.RUNNING
         self.Sync()
@@ -427,7 +432,7 @@ class Session(object):
         self.cond_var_.release()
 
     def __del__(self):
-        oneflow._oneflow_internal.ClearSessionById(self.id)
+        self.TryClose()
 
 
 @oneflow_export("find_or_create_module")
-- 
GitLab