Skip to content

Stale read when creating a transcription on a new element

Sentry Issue: ARKINDEX-BACKEND-2K

KeyError: 'zone'
  File "django/db/models/fields/related_descriptors.py", line 173, in __get__
    rel_obj = self.field.get_cached_value(instance)
  File "django/db/models/fields/mixins.py", line 15, in get_cached_value
    return instance._state.fields_cache[cache_name]

Zone.DoesNotExist: Zone matching query does not exist.
(11 additional frame(s) were not displayed)
...
  File "rest_framework/serializers.py", line 436, in run_validation
    value = self.validate(value)
  File "arkindex/documents/serializers/ml.py", line 303, in validate
  File "django/db/models/fields/related_descriptors.py", line 187, in __get__
    rel_obj = self.get_object(instance)
  File "django/db/models/fields/related_descriptors.py", line 154, in get_object
    return qs.get(self.field.get_reverse_related_filter(instance))
  File "django/db/models/query.py", line 431, in get
    self.model._meta.object_name

Creating an element (in a case that causes a new Zone to be created), then immediately creating a transcription on this element might cause a stale read issue in which the zone does not exist yet, although the zone_id was properly updated on the element.