mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #11660: Catch RQ timeout exception when syncing data sources
This commit is contained in:
@ -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)
|
||||
|
@ -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,
|
||||
}
|
||||
|
||||
|
@ -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>
|
||||
|
Reference in New Issue
Block a user