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 .choices import *
|
||||||
from .exceptions import SyncError
|
from .exceptions import SyncError
|
||||||
from .models import DataSource
|
from .models import DataSource
|
||||||
|
from rq.timeouts import JobTimeoutException
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ def sync_datasource(job, *args, **kwargs):
|
|||||||
|
|
||||||
job.terminate()
|
job.terminate()
|
||||||
|
|
||||||
except SyncError as e:
|
except (SyncError, JobTimeoutException) as e:
|
||||||
job.terminate(status=JobStatusChoices.STATUS_ERRORED)
|
job.terminate(status=JobStatusChoices.STATUS_ERRORED)
|
||||||
DataSource.objects.filter(pk=datasource.pk).update(status=DataSourceStatusChoices.FAILED)
|
DataSource.objects.filter(pk=datasource.pk).update(status=DataSourceStatusChoices.FAILED)
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
@ -32,11 +32,7 @@ class DataSourceView(generic.ObjectView):
|
|||||||
(DataFile.objects.restrict(request.user, 'view').filter(source=instance), 'source_id'),
|
(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 {
|
return {
|
||||||
'sync_enabled': sync_enabled,
|
|
||||||
'related_models': related_models,
|
'related_models': related_models,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
{% block extra_controls %}
|
{% block extra_controls %}
|
||||||
{% if perms.core.sync_datasource %}
|
{% 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">
|
<form action="{% url 'core:datasource_sync' pk=object.pk %}" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<button type="submit" class="btn btn-sm btn-primary">
|
<button type="submit" class="btn btn-sm btn-primary">
|
||||||
@ -14,7 +14,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
{% else %}
|
{% 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>
|
<button class="btn btn-sm btn-primary" disabled>
|
||||||
<i class="mdi mdi-sync" aria-hidden="true"></i> Sync
|
<i class="mdi mdi-sync" aria-hidden="true"></i> Sync
|
||||||
</button>
|
</button>
|
||||||
|
Reference in New Issue
Block a user