[Enhancement] SemaphoreReleaseOnlyOnce lacks direct tests for its exactly-once release contract
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
- networking
Línea de trabajo
La clase bajo prueba es remoting/src/main/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java, y todo su contrato es la guarda compareAndSet antes de semaphore.release(). Lee NettyRemotingAbstractTest para ver cómo se cuentan hoy los permisos y luego añade una prueba unitaria separada para la clase. Está terminado cuando una prueba multihilo en la que N hilos llaman a release() sobre un mismo holder añade exactamente un permiso, una repetición secuencial no añade ninguno, y un semáforo null es un no-op silencioso.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
SemaphoreReleaseOnlyOnce (remoting/src/main/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java) is the guard that keeps the remoting layer's semaphore-based flow control (async/oneshot request permits) from leaking permits on double release. Its entire contract is the single line:
if (this.released.compareAndSet(false, true)) {
this.semaphore.release();
}
NettyRemotingAbstractTest exercises permit counts through higher-level call paths, but there is no direct unit test for this class — in particular none that races multiple threads calling release() on the same holder, which is the exact scenario the CAS exists for (response timeout racing the response callback), and none for the documented null-semaphore no-op.
A regression that breaks the exactly-once guarantee (e.g. replacing the CAS with a plain check-then-act, or dropping the null guard) would currently pass the existing suites.
Expected behavior
Direct regression coverage: N threads released simultaneously must add exactly one permit; repeated sequential releases must not add more; a null semaphore must be a silent no-op.
- 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 6 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 6 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] SyncStateInfo defensive-copy and epoch semantics lack direct testsPosiblemente ocupada @chennaji9 la tomó hace 6 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/rocketmq#11338 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/rocketmq
Issues similares
-
agent-java community triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
elastic/apm-agent-java#4594 ·
Los mantenedores suelen responder en 1 día
-
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