Skip to content

Commit 3d94ee3

Browse files
committed
fix: retry fetching mimetype in background job
1 parent 8cb25dc commit 3d94ee3

2 files changed

Lines changed: 23 additions & 7 deletions

File tree

CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
1.1.1
2+
- fix: retry fetching mimetype in background job
13
1.1.0
24
- feat: implement CLI command `dcor-purge-unused-collections-and-circles`
35
- ref: rewrite `dcor_prune_draft_datasets` with database queries

ckanext/dcor_schemas/jobs.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import datetime
22
import json
3+
import logging
4+
import time
35

46
from ckan import logic
57
import dclab
@@ -10,6 +12,9 @@
1012
from dcor_shared import RQJob # noqa: F401
1113

1214

15+
logger = logging.getLogger(__name__)
16+
17+
1318
def admin_background_context():
1419
return {"ignore_auth": True,
1520
"user": "default",
@@ -70,16 +75,25 @@ def job_set_resource_metadata_base(resource):
7075
# Do not compare against `resource`, because this dictionary might
7176
# not be the one that we have in the database.
7277
resource_show = logic.get_action("resource_show")
73-
res_dict_act = resource_show(context={'ignore_auth': True,
74-
'user': 'default'},
75-
data_dict={"id": resource['id']})
78+
changes_required = False
7679

77-
for key in res_dict_base:
78-
if res_dict_base[key] != res_dict_act.get(key):
79-
changes_required = True
80+
# be patient when showing the resource for the first time
81+
for ii in range(5):
82+
try:
83+
res_dict_act = resource_show(context=admin_background_context(),
84+
data_dict={"id": resource['id']})
85+
except BaseException:
86+
logger.error(f"Could not fetch resource dict for {resource['id']}")
87+
time.sleep(0.5)
88+
else:
89+
for key in res_dict_base:
90+
if res_dict_base[key] != res_dict_act.get(key):
91+
changes_required = True
92+
break
8093
break
8194
else:
82-
changes_required = False
95+
# Fall-back to applying the changes anyway
96+
changes_required = True
8397

8498
if changes_required:
8599
res_dict_base["last_modified"] = datetime.datetime.now(

0 commit comments

Comments
 (0)