瀏覽代碼

Merge pull request #10829 from mayx/HPCC-19003

HPCC-19003 ESDL unsubscribe causes assertex exception at shutdown

Reviewed-By: Rodrigo Pastrana <rodrigo.pastrana@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 7 年之前
父節點
當前提交
545f6e8b88
共有 2 個文件被更改,包括 9 次插入4 次删除
  1. 8 0
      esp/services/esdl_svc_engine/esdl_binding.cpp
  2. 1 4
      esp/services/esdl_svc_engine/esdl_binding.hpp

+ 8 - 0
esp/services/esdl_svc_engine/esdl_binding.cpp

@@ -1159,6 +1159,14 @@ EsdlBindingImpl::EsdlBindingImpl(IPropertyTree* cfg, const char *binding,  const
     }
 }
 
+EsdlBindingImpl::~EsdlBindingImpl()
+{
+    if(m_pBindingSubscription != nullptr)
+        m_pBindingSubscription->unsubscribe();
+    if(m_pDefinitionSubscription != nullptr)
+        m_pDefinitionSubscription->unsubscribe();
+}
+
 void EsdlBindingImpl::saveDESDLState()
 {
     try

+ 1 - 4
esp/services/esdl_svc_engine/esdl_binding.hpp

@@ -210,7 +210,6 @@ private:
 
         virtual ~CESDLBindingSubscription()
         {
-            unsubscribe();
         }
 
         void unsubscribe()
@@ -263,7 +262,6 @@ private:
 
         virtual ~CESDLDefinitionSubscription()
         {
-            unsubscribe();
         }
 
         void unsubscribe()
@@ -325,8 +323,7 @@ public:
 
     EsdlBindingImpl();
     EsdlBindingImpl(IPropertyTree* cfg, const char *bindname=NULL, const char *procname=NULL);
-
-    virtual ~EsdlBindingImpl(){}
+    virtual ~EsdlBindingImpl();
 
     virtual int onGet(CHttpRequest* request, CHttpResponse* response);