Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Potential Bug] Implicit creation of ExecutorService in LeaderSelector constructor risks thread leaks

Aperta
#1,282 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

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
  1. Hidden Lifecycle: Users utilizing this constructor may not be aware that a heavy resource (Thread Pool) is created internally.

  2. 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/curator

Tutte le issue di apache/curator

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.