[Enhancement] SyncStateInfo defensive-copy and epoch semantics lack direct tests
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- java
- Área
- testing-qa
Línea de trabajo
La clase bajo prueba es controller/src/main/java/org/apache/rocketmq/controller/impl/manager/SyncStateInfo.java, que copia conjuntos al recibirlos en updateSyncStateSetInfo y al devolverlos en getSyncStateSet. Lee esos métodos y las pruebas existentes a nivel de manager para ver cómo se construye el estado del controller. Añade pruebas unitarias directas que modifiquen el conjunto del llamador y el conjunto devuelto, y que comprueben que el estado almacenado no cambia, que updateMasterInfo incrementa la época del master y que removeFromSyncState no modifica la época del sync-state. Se considera terminado cuando las nuevas pruebas pasan y fallarían si se eliminaran las copias.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
SyncStateInfo (controller/src/main/java/org/apache/rocketmq/controller/impl/manager/SyncStateInfo.java) maintains the controller's per-broker view of mastership: master identity + epoch, and the sync-state set + epoch. It deliberately copies sets on the way in and out:
public void updateSyncStateSetInfo(Set<Long> newSyncStateSet) {
this.syncStateSet = new HashSet<>(newSyncStateSet);
...
}
public Set<Long> getSyncStateSet() {
return new HashSet<>(syncStateSet);
}
The existing manager-level tests touch the class via larger flows, but no test pins the defensive-copy contract itself: mutating the caller's set after updateSyncStateSetInfo (or mutating the set returned by the getter) must not corrupt controller state, updateMasterInfo must bump the master epoch, and removeFromSyncState must remove locally without advancing the sync-state epoch. Losing any of these (e.g. "simplifying" away the copies) would silently let callers mutate controller state and currently no test would notice.
Expected behavior
Direct unit coverage of the isolation and epoch semantics described above.
- Lenguaje dominante
- Java
- Estrellas
- 22.6k
- Forks
- 12k
- Merge medio
- 6 d 21 h
- PR fusionados (30 d)
- 17
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/rocketmq
-
[Bug] notifyMasterOnline aborts the long-polling wake-up with a NullPointerException when an arrival drains a bucket firstPosiblemente ocupada @iloveeyjafjalla la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
apache/rocketmq#11441 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[Bug] DefaultMQPushConsumer.shutdown() never stops the pop consume service, so its non-daemon threads keep the JVM alivePosiblemente ocupada @iloveeyjafjalla la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
apache/rocketmq#11427 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Enhancement] FilterFactory duplicate-registration and unregister semantics lack testsPosiblemente ocupada @chennaji9 la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
apache/rocketmq#11340 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Enhancement] LogicExpression three-valued truth table and short-circuit behavior lack direct testsPosiblemente ocupada @chennaji9 la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/rocketmq#11339 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Enhancement] ControllerClosure request-completion semantics lack direct testsPosiblemente ocupada @chennaji9 la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/rocketmq#11337 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/rocketmq
Issues similares
-
area/plugin good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
kestra-io/plugin-soda#137 ·
-
area/plugin good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
kestra-io/plugin-aws#816 ·
Los mantenedores suelen responder en 2 días
-
area/plugin good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
kestra-io/plugin-kestra#200 ·
Los mantenedores suelen responder en 1 día
-
bug untriaged
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
opensearch-project/search-relevance#618 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/rocketmq-dashboard#6716 ·
Los mantenedores suelen responder en 3 días