[Enhancement] SemaphoreReleaseOnlyOnce lacks direct tests for its exactly-once release contract
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- java
- Ambito
- networking
Direzione di ricerca
La classe sotto test è remoting/src/main/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java, e tutto il suo contratto è la guardia compareAndSet prima di semaphore.release(). Leggi NettyRemotingAbstractTest per vedere come vengono contati oggi i permessi, poi aggiungi un test unitario separato per la classe. È completato quando un test multi-thread in cui N thread chiamano release() su un unico holder aggiunge esattamente un permesso, una ripetizione sequenziale non ne aggiunge nessuno e un semaforo null è un no-op silenzioso.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Java
- Stelle
- 22.6k
- Fork
- 12k
- Merge medio
- 6g 21h
- PR unite (30g)
- 17
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/rocketmq
-
[Bug] notifyMasterOnline aborts the long-polling wake-up with a NullPointerException when an arrival drains a bucket firstForse già presa @iloveeyjafjalla l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
apache/rocketmq#11441 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] DefaultMQPushConsumer.shutdown() never stops the pop consume service, so its non-daemon threads keep the JVM aliveForse già presa @iloveeyjafjalla l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
apache/rocketmq#11427 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[Enhancement] FilterFactory duplicate-registration and unregister semantics lack testsForse già presa @chennaji9 l’ha presa 5 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
apache/rocketmq#11340 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[Enhancement] LogicExpression three-valued truth table and short-circuit behavior lack direct testsForse già presa @chennaji9 l’ha presa 5 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/rocketmq#11339 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[Enhancement] SyncStateInfo defensive-copy and epoch semantics lack direct testsForse già presa @chennaji9 l’ha presa 5 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/rocketmq#11338 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/rocketmq
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
bug new windows
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
iOS podspec depends on `React-Codegen`, which resolves to an unrelated pod on CocoaPods trunkAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
GantMan/jail-monkey#380 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
objectionary/jucs#145 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
objectionary/lints#1559 ·
I maintainer di solito rispondono entro 2 giorni