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

Support grpc.so_reuseport in @grpc/grpc-js on Linux

Aperta Adatta ai principianti
#3,108 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
70/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
nodejs, typescript

Direzione di ricerca

Inizia dove il server associa il proprio listener TCP e passa l'indirizzo alla chiamata listen del server HTTP/2, come mostra lo snippet nell'issue, e verifica come viene letta lì l'opzione di canale grpc.so_reuseport. Passa reusePort: true solo quando tale opzione è esattamente 1 e l'indirizzo contiene una porta. È completato quando un test o un'esecuzione manuale mostra che due server associano la stessa porta su Linux e il comportamento predefinito rimane invariato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Is your feature request related to a problem? Please describe.

We want to run multiple worker threads for one gRPC service, all listening on the same port.

grpc-js currently ignores:

  new grpc.Server({
    'grpc.so_reuseport': 1
  });

so the second worker fails with EADDRINUSE.

This came up before in #794 and #1547. In #1547, Node did not yet expose a JavaScript API for SO_REUSEPORT. It does now:

  http2Server.listen({ host, port, reusePort: true });
Describe the solution you'd like

Make grpc-js honor grpc.so_reuseport when binding a TCP listener.

Something along these lines:

  const listenAddress =
    this.options['grpc.so_reuseport'] === 1 && 'port' in address
      ? { ...address, reusePort: true }
      : address;

  http2Server.listen(listenAddress, callback);

No behavior change unless the option is explicitly set to 1.

Describe alternatives you've considered

We can maintain a local patch-package patch or monkey-patch grpc-js internals, but both depend on private implementation details and need maintenance on grpc-js upgrades.

Keeping one worker per gRPC process works, but prevents worker-thread scaling.

Additional context

This is for several workers of the same service sharing one endpoint, not unrelated services sharing a port.

Linux only is fine for us. We run Node 24.

Lingua principale
TypeScript
Stelle
4.8k
Fork
720
Merge medio
2g 9h
PR unite (30g)
21

Preparare l'ambiente

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 grpc/grpc-node

Tutte le issue di grpc/grpc-node

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.