Skip to content

Commit c877223

Browse files
committed
handle subprocesses closing db connections
1 parent 8aebcde commit c877223

File tree

7 files changed

+20
-0
lines changed

7 files changed

+20
-0
lines changed

errata/sources/distros/alma.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import concurrent.futures
1818
import json
1919

20+
from django.db import connections
21+
2022
from operatingsystems.utils import get_or_create_osrelease
2123
from packages.models import Package
2224
from packages.utils import get_or_create_package, parse_package_string
@@ -74,6 +76,7 @@ def process_alma_errata_serially(release, advisories):
7476
def process_alma_errata_concurrently(release, advisories):
7577
""" Process Alma Linux Errata concurrently
7678
"""
79+
connections.close_all()
7780
elen = len(advisories)
7881
pbar_start.send(sender=None, ptext=f'Processing {elen} Alma {release} Errata', plen=elen)
7982
i = 0

errata/sources/distros/arch.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import concurrent.futures
1818
import json
1919

20+
from django.db import connections
21+
2022
from operatingsystems.utils import get_or_create_osrelease
2123
from patchman.signals import error_message, pbar_start, pbar_update
2224
from packages.models import Package
@@ -66,6 +68,7 @@ def parse_arch_errata_concurrently(advisories):
6668
""" Parse Arch Linux Errata Advisories concurrently
6769
"""
6870
osrelease = get_or_create_osrelease(name='Arch Linux')
71+
connections.close_all()
6972
elen = len(advisories)
7073
pbar_start.send(sender=None, ptext=f'Processing {elen} Arch Advisories', plen=elen)
7174
i = 0

errata/sources/distros/debian.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
from debian.deb822 import Dsc
2222
from io import StringIO
2323

24+
from django.db import connections
25+
2426
from operatingsystems.models import OSRelease
2527
from operatingsystems.utils import get_or_create_osrelease
2628
from packages.models import Package
@@ -181,6 +183,7 @@ def create_debian_errata_serially(errata, accepted_codenames):
181183
def create_debian_errata_concurrently(errata, accepted_codenames):
182184
""" Create Debian Errata concurrently
183185
"""
186+
connections.close_all()
184187
elen = len(errata)
185188
pbar_start.send(sender=None, ptext=f'Processing {elen} Debian Errata', plen=elen)
186189
i = 0

errata/sources/distros/rocky.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import concurrent.futures
1919
from tenacity import retry, retry_if_exception_type, stop_after_attempt, wait_exponential
2020

21+
from django.db import connections
2122
from django.db.utils import OperationalError
2223

2324
from operatingsystems.utils import get_or_create_osrelease
@@ -158,6 +159,7 @@ def process_rocky_errata_serially(advisories):
158159
def process_rocky_errata_concurrently(advisories):
159160
""" Process Rocky Linux errata concurrently
160161
"""
162+
connections.close_all()
161163
elen = len(advisories)
162164
pbar_start.send(sender=None, ptext=f'Processing {elen} Rocky Errata', plen=elen)
163165
i = 0

errata/sources/distros/ubuntu.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
from io import StringIO
2222
from urllib.parse import urlparse
2323

24+
from django.db import connections
25+
2426
from operatingsystems.models import OSRelease, OSVariant
2527
from operatingsystems.utils import get_or_create_osrelease
2628
from packages.models import Package
@@ -87,6 +89,7 @@ def parse_usn_data_serially(advisories, accepted_releases):
8789
def parse_usn_data_concurrently(advisories, accepted_releases):
8890
""" Parse the Ubuntu USN data concurrently
8991
"""
92+
connections.close_all()
9093
elen = len(advisories)
9194
pbar_start.send(sender=None, ptext=f'Processing {elen} Ubuntu Errata', plen=elen)
9295
i = 0

errata/sources/repos/yum.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
from io import BytesIO
1919
from defusedxml import ElementTree
2020

21+
from django.db import connections
22+
2123
from operatingsystems.utils import get_or_create_osrelease
2224
from packages.models import Package
2325
from packages.utils import get_or_create_package
@@ -55,6 +57,7 @@ def extract_updateinfo_serially(updates, elen):
5557
def extract_updateinfo_concurrently(updates, elen):
5658
""" Parses updateinfo.xml and extracts package/errata information concurrently
5759
"""
60+
connections.close_all()
5861
pbar_start.send(sender=None, ptext=f'Extracting {elen} updateinfo Errata', plen=elen)
5962
i = 0
6063
with concurrent.futures.ProcessPoolExecutor(max_workers=100) as executor:

etc/patchman/local_settings.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
# Maximum number of mirrors to add or refresh per repo
3636
MAX_MIRRORS = 2
3737

38+
# Maximum number of failures before disabling a mirror, set to -1 to never disable mirrors
39+
MAX_MIRROR_FAILURES = 14
40+
3841
# Number of days to wait before raising that a host has not reported
3942
DAYS_WITHOUT_REPORT = 14
4043

0 commit comments

Comments
 (0)