Преглед изворни кода

Fixes #11660: Catch RQ timeout exception when syncing data sources

jeremystretch пре 2 година
родитељ
комит
f965608791
3 измењених фајлова са 4 додато и 7 уклоњено
  1. 2 1
      netbox/core/jobs.py
  2. 0 4
      netbox/core/views.py
  3. 2 2
      netbox/templates/core/datasource.html

+ 2 - 1
netbox/core/jobs.py

@@ -4,6 +4,7 @@ from netbox.search.backends import search_backend
 from .choices import *
 from .exceptions import SyncError
 from .models import DataSource
+from rq.timeouts import JobTimeoutException
 
 logger = logging.getLogger(__name__)
 
@@ -23,7 +24,7 @@ def sync_datasource(job, *args, **kwargs):
 
         job.terminate()
 
-    except SyncError as e:
+    except (SyncError, JobTimeoutException) as e:
         job.terminate(status=JobStatusChoices.STATUS_ERRORED)
         DataSource.objects.filter(pk=datasource.pk).update(status=DataSourceStatusChoices.FAILED)
         logging.error(e)

+ 0 - 4
netbox/core/views.py

@@ -32,11 +32,7 @@ class DataSourceView(generic.ObjectView):
             (DataFile.objects.restrict(request.user, 'view').filter(source=instance), 'source_id'),
         )
 
-        queue_name = get_queue_for_model(DataSource)
-        sync_enabled = bool(get_workers_for_queue(queue_name))
-
         return {
-            'sync_enabled': sync_enabled,
             'related_models': related_models,
         }
 

+ 2 - 2
netbox/templates/core/datasource.html

@@ -6,7 +6,7 @@
 
 {% block extra_controls %}
   {% if perms.core.sync_datasource %}
-    {% if sync_enabled and object.ready_for_sync %}
+    {% if object.ready_for_sync %}
       <form action="{% url 'core:datasource_sync' pk=object.pk %}" method="post">
         {% csrf_token %}
         <button type="submit" class="btn btn-sm btn-primary">
@@ -14,7 +14,7 @@
         </button>
       </form>
     {% else %}
-      <span class="inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-delay="100" data-bs-placement="bottom" title="Unable to sync: No RQ worker running">
+      <span class="inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-delay="100" data-bs-placement="bottom">
         <button class="btn btn-sm btn-primary" disabled>
           <i class="mdi mdi-sync" aria-hidden="true"></i> Sync
         </button>