Thread safety when calling fetch_relation
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Lee lib/identity_cache/cached/recursive/association.rb alrededor de las líneas 25-42, empezando por el guard y la eliminación de @dehydrated_relation. Investiga las llamadas concurrentes a fetch_association y verifica que el NameError reportado ya no se produzca bajo acceso concurrente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi!
We utilize a global, in-memory cache with TTL for one of our models per process. We also wanted to use identity_cache so that the whole object tree is fetched with one network call.
However, we receive rare errors when we call fetch_association with the following stack trace:
NameError instance variable @dehydrated_relation not defined
/usr/local/bundle/ruby/3.3.0/gems/identity_cache-1.5.6/lib/identity_cache/cached/recursive/association.rb:34
/usr/local/bundle/ruby/3.3.0/gems/identity_cache-1.5.6/lib/identity_cache/cached/recursive/association.rb:19
which points to this piece of code:
Since the code has a guard clause: record.instance_variable_defined?(dehydrated_variable_name), the only way this can happen is that another thread is concurrently executing the same code and has already removed this instance variable.
Are you open to contributions to fix concurrency issues? So far we've only seen this error popping up dozens of times on ~50M requests, however, there might be more that we haven't seen yet or are failing silently 👀
- Lenguaje dominante
- Ruby
- Estrellas
- 2k
- Forks
- 175
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Shopify/identity_cache
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Shopify/identity_cache#555 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Shopify/identity_cache#539 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
Shopify/identity_cache#535 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
Shopify/identity_cache#533 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Shopify/identity_cache#525 · 4 comentarios ·
Todos los issues de Shopify/identity_cache
Issues similares
-
area: cli enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
mail processing verified
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 7 días
-
L: github:actions L: php:composer
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
dependabot/dependabot-core#16493 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
doorkeeper-gem/doorkeeper-openid_connect#409 · 1 comentario ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
puppetlabs/pdk-templates#676 ·
Los mantenedores suelen responder en 1 día