Skip to content

Commit fa21488

Browse files
committed
fix: add guard for mongo client closing by external library
1 parent 583e9ad commit fa21488

3 files changed

Lines changed: 20 additions & 0 deletions

File tree

src/dags/operators/DagBatchPipelineOperator.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@
77
from airflow.utils.types import DagRunType
88
from pymongo import MongoClient
99

10+
# WORKAROUND: Disable __del__ in MSSDK's MongoDBRepository to prevent premature client closure
11+
# The MSSDK MongoDBRepository closes the MongoClient in __del__, but it doesn't own the client.
12+
# When the repository is garbage collected between loop iterations, it closes the shared client.
13+
from mapping_suite_sdk.core.adapters.repository import MongoDBRepository as _MSSKDMongoDBRepository
14+
if hasattr(_MSSKDMongoDBRepository, '__del__'):
15+
delattr(_MSSKDMongoDBRepository, '__del__')
16+
1017
from src.dags import RUN_MATERIALISED_VIEW_DAG_PARAM, XCOM_SOURCE_RUN_TYPE_KEY
1118
from src.dags.dags_utils import pull_dag_upstream, push_dag_downstream, get_dag_param, smart_xcom_pull, \
1219
smart_xcom_push

src/ted_sws/data_manager/adapters/mapping_package_repository.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
from pymongo import MongoClient
88

99
from mapping_suite_sdk.core.adapters.repository import MongoDBRepository, ModelNotFoundError
10+
11+
# WORKAROUND: Disable __del__ in MSSDK's MongoDBRepository to prevent premature client closure
12+
# The MSSDK MongoDBRepository closes the MongoClient in __del__, but it doesn't own the client.
13+
# When the repository is garbage collected, it closes the shared client unexpectedly.
14+
if hasattr(MongoDBRepository, '__del__'):
15+
delattr(MongoDBRepository, '__del__')
1016
from mapping_suite_sdk.mapping_package_v1.models import MappingPackageV1
1117
from mapping_suite_sdk.mapping_package_v2.models import MappingPackageV2
1218
from mapping_suite_sdk.mapping_package_v3.models import MappingPackageV3

src/ted_sws/mapping_suite_processor/services/mapping_package_processor.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44

55
from pymongo import MongoClient
66

7+
# WORKAROUND: Disable __del__ in MSSDK's MongoDBRepository to prevent premature client closure
8+
# The MSSDK MongoDBRepository closes the MongoClient in __del__, but it doesn't own the client.
9+
# When the repository is garbage collected, it closes the shared client unexpectedly.
10+
from mapping_suite_sdk.core.adapters.repository import MongoDBRepository as _MSSKDMongoDBRepository
11+
if hasattr(_MSSKDMongoDBRepository, '__del__'):
12+
delattr(_MSSKDMongoDBRepository, '__del__')
13+
714
from src.ted_sws import config
815
from src.ted_sws.core.model.manifestation import XMLManifestation
916
from src.ted_sws.core.model.notice import Notice

0 commit comments

Comments
 (0)