[Store] LIMIT_DEDUP on NO_SCAN with loadPropertyFromIndex compares BaseVertex by reference
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 75/100
Línea de trabajo
Lee MapLimitIterator y su llamada en BusinessHandlerImpl.scanIndex donde transElement envuelve scanIndexToBaseElement. Añade un extractor de clave a MapLimitIterator y pasa BaseElement::id en esa ruta. Hecho cuando los vértices con la misma id son deduplicados y las pruebas de store existentes pasan.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In BusinessHandlerImpl.scanIndex(graph, params, dedupOption, transElement, filterTTL), the transElement branch wraps scanIndexToBaseElement in MapLimitIterator<BaseElement> for LIMIT_DEDUP. MapLimitIterator dedups with a hash set of the elements themselves. BaseEdge defines equals/hashCode on id(), but BaseVertex and BaseElement define neither, so two vertex objects with the same id both get through. DEDUP and PRECISE_DEDUP on the same branch already hash on id().asBytes().
This can't be hit today. BinaryElementSerializer.index2Element throws NotImplementedException, and StoreQueryParam always sends loadPropertyFromIndex=false. It will show up once index2Element is implemented. Search indexes, secondary indexes on collection properties and joint secondary indexes all write several entries per element, and a scan that covers more than one of them returns the same vertex once per entry.
Suggested fix: give MapLimitIterator a key extractor and pass BaseElement::id on this path. Adding equals/hashCode to BaseVertex in hugegraph-struct would also work, but it changes equality for every collection that holds vertices.
- Lenguaje dominante
- Java
- Estrellas
- 3.2k
- Forks
- 645
- Merge medio
- 1 d 2 h
- PR fusionados (30 d)
- 123
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una 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 apache/hugegraph
-
[Bug] PD task REST: balanceLeaders throws a bare HTTP 500 during the balance-shard window, and task responses cannot be told apart from a no-op or a follower answerPosiblemente ocupada @pallavithegod la tomó hace 15 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
apache/hugegraph#3231 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
apache/hugegraph#3446 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[Bug] Gremlin sandbox blocks HStore gRPC allocator configuration readsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
Todos los issues de apache/hugegraph
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Dans-Plugins/Medieval-Roleplay-Engine#396 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
LtByXsl throws NoSuchElementException when defect element has no text contentPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
objectionary/lints#1640 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
virtualcell/vcell#2193 ·
Los mantenedores suelen responder en 1 día