[Potential Bug] Implicit creation of ExecutorService in LeaderSelector constructor risks thread leaks
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- java
Direzione di ricerca
Inizia in LeaderSelector, nel costruttore intorno alla riga 104, e leggi il Javadoc e gli overload circostanti. Determina se il progetto debba deprecare il costruttore di convenienza o documentare che close() è obbligatorio; il lavoro è completato quando le indicazioni sul ciclo di vita selezionate sono riportate in modo coerente nella documentazione dell’API del costruttore.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
The LeaderSelector class provides a convenience constructor that implicitly creates an internal ExecutorService using Executors.newSingleThreadExecutor().
Code Reference In org.apache.curator.framework.recipes.leader.LeaderSelector (Line 104):
public LeaderSelector(CuratorFramework client, String leaderPath, LeaderSelectorListener listener) {
this(
client,
leaderPath,
// Issue: Implicitly creates a thread pool that is hidden from the user
new CloseableExecutorService(Executors.newSingleThreadExecutor(defaultThreadFactory), true),
listener);
}
The Issue
-
Hidden Lifecycle: Users utilizing this constructor may not be aware that a heavy resource (Thread Pool) is created internally.
-
Thread Leak Risk: If the LeaderSelector instance is garbage collected without calling close() (e.g., during rapid Zookeeper session reconstruction or error handling flows), the internal non-daemon thread pool remains active. This leads to Thread Leaks and eventual OutOfMemoryError or thread exhaustion.
Recommendation
Deprecate this constructor to discourage implicit resource allocation.
Or, update Javadoc to explicitly warn users that close() is mandatory to release the internal threads.
Ideally, encourage Dependency Injection where the ExecutorService is passed externally.
- Lingua principale
- Java
- Stelle
- 3.2k
- Fork
- 1.2k
- Merge medio
- 14h 48m
- PR unite (30g)
- 2
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
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/curator
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
-
Optimize storage for single-node CuratorCacheForse già presa @waterWang l’ha presa 64 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
-
TreeCache.iterator() throws NoSuchElementException after a parent node's last child is deletedForse già presa @apm1467 l’ha presa 66 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
-
Add Jackson PolymorphicTypeValidatorForse già presa @pjfanning l’ha presa 16 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
-
Upgrade to Jackson 3Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Tutte le issue di apache/curator
Issue simili
-
[BUG] micronaut-serde-oracle-jdbc-json brings a second OJDBC driver onto the runtime classpathForse già presa @ZARAYACH l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
micronaut-projects/micronaut-serialization#1494 · 4 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
I maintainer di solito rispondono entro 2 giorni
-
code-health feature/sync OS/Android QA/Test-Plan-Specified QA/Yes
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
brave/brave-browser#60327 ·
I maintainer di solito rispondono entro 1 giorno
-
Type: Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
it-at-m/raumreservierung#383 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
aws/context-ontology-accelerator#325 ·
I maintainer di solito rispondono entro 1 giorno