Non-deterministic result when merging an empty KllFloatsSketch with two others
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Empieza reproduciendo la prueba proporcionada en torno a KllFloatsSketch.newHeapInstance(), heapify(), merge() y toByteArray(). Compara los resultados serializados repetidos al fusionar los sketches que contienen 1 y 200 elementos, y luego rastrea el comportamiento de la fusión y la serialización. El trabajo estará terminado cuando la prueba repetida produzca un único digest determinista y pase de forma consistente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Merging an empty KllFloatsSketch with two KllFloatsSketch, with 1 and 200 "items" respectively, does not always produce the same result
I would have expected the following test scenario to pass:
@Test
public void test() throws NoSuchAlgorithmException {
KllFloatsSketch t1 = KllFloatsSketch.newHeapInstance();
t1.update(1f);
byte[] tb1 = t1.toByteArray();
KllFloatsSketch t2 = KllFloatsSketch.newHeapInstance();
for(int i=0; i<200; i++) {
t2.update(1f*i);
}
byte[] tb2 = t2.toByteArray();
HashSet<BigInteger> digests = new HashSet<>();
for(int i=0; i<30; i++) {
KllFloatsSketch start = KllFloatsSketch.newHeapInstance();
byte[] h1 = Arrays.copyOf(tb1, tb1.length);
byte[] h2 = Arrays.copyOf(tb2, tb2.length);
KllFloatsSketch kll1 = KllFloatsSketch.heapify(MemorySegment.ofArray(h1));
start.merge(kll1);
KllFloatsSketch kll2 = KllFloatsSketch.heapify(MemorySegment.ofArray(h2));
start.merge(kll2);
MessageDigest md5 = MessageDigest.getInstance("MD5");
BigInteger digest = new BigInteger(md5.digest(start.toByteArray()));
digests.add(digest);
System.out.println(digest);
}
assertEquals(1, digests.size());
}
The digests are:
115710133967357289505160160937439690295
-100233422360292323003164315945381734567
-100233422360292323003164315945381734567
-100233422360292323003164315945381734567
115710133967357289505160160937439690295
115710133967357289505160160937439690295
...
And therefore the test throws:
java.lang.AssertionError:
Expected :2
Actual :1
- Lenguaje dominante
- Java
- Estrellas
- 958
- Forks
- 226
- Merge medio
- 3 d 40 min
- PR fusionados (30 d)
- 13
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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/datasketches-java
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
apache/datasketches-java#731 · 16 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
apache/datasketches-java#739 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
apache/datasketches-java#720 · 3 comentarios ·
-
Reservoir sampling improvements Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
apache/datasketches-java#647 · 5 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
apache/datasketches-java#569 ·
Todos los issues de apache/datasketches-java
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
infinispan/infinispan#18150 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
opensearch-project/k-NN#3597 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100