From 5dde085498c29eb27a0a7ba2eb35f80d60fdeb6d Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 28 Feb 2025 15:49:19 -0500 Subject: [PATCH] Fix lingering background tasks after modifying DataSource --- netbox/core/signals.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/netbox/core/signals.py b/netbox/core/signals.py index 79ec5614c..bdaa60f97 100644 --- a/netbox/core/signals.py +++ b/netbox/core/signals.py @@ -8,7 +8,7 @@ from django.dispatch import receiver, Signal from django.utils.translation import gettext_lazy as _ from django_prometheus.models import model_deletes, model_inserts, model_updates -from core.choices import ObjectChangeActionChoices +from core.choices import JobStatusChoices, ObjectChangeActionChoices from core.events import * from extras.events import enqueue_event from extras.utils import run_validators @@ -188,11 +188,16 @@ def enqueue_sync_job(instance, created, **kwargs): """ from .jobs import SyncDataSourceJob - if instance.sync_interval: + if instance.enabled and instance.sync_interval: SyncDataSourceJob.enqueue_once(instance, interval=instance.sync_interval) elif not created: # Delete any previously scheduled recurring jobs for this DataSource - SyncDataSourceJob.get_jobs(instance).filter(interval__isnull=False).delete() + for job in SyncDataSourceJob.get_jobs(instance).defer('data').filter( + interval__isnull=False, + status=JobStatusChoices.STATUS_SCHEDULED + ): + # Call delete() per instance to ensure the associated background task is deleted as well + job.delete() @receiver(post_sync)