`socket-fd` rejects `AF_UNIX` sockets

Aperta
#3,588 5 commenti 1 reazione 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@h7x4 ci sta già lavorando.

Dal 12/8/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

bug
Search before asking
  • I had searched in the issues and found no similar issues.
Version

OS is NixOS from a nixpkgs instance checked out at a9e7b5456522e9ee5857bb9812f27864d8e80f8a
Kvrocks: 2.16.0

Minimal reproduce step

Configure kvrocks with config:

daemonize no
dir /var/lib/kvrocks
socket-fd 3
supervised systemd
unixsocket /run/kvrocks/kvrocks.sock

And socket activate with systemd socket unit:

[Socket]
Accept=false
SocketGroup=kvrocks
SocketUser=kvrocks
ListenStream=/run/kvrocks/kvrocks.sock

[Install]
WantedBy=sockets.target

Systemd service:

[Unit]
After=network.target kvrocks.socket
Requires=kvrocks.socket

[Service]
Type=notify
User=kvrocks
Group=kvrocks
ExecStart=/usr/bin/kvrocks -c /etc/kvrocks/kvrocks.conf

[Install]
WantedBy=multi-user.target
What did you expect to see?

I expected kvrocks to pick up the unix socket provided on fd 3 and use it to listen for connections.

What did you see instead?

From journal:

systemd[1]: Starting Kvrocks - Distributed key value database...
kvrocks[1714]: [2026-08-11T15:45:19.154330+00:00][I][main.cc:171] kvrocks version 2.16.0
systemd[1]: Started Kvrocks - Distributed key value database.
kvrocks[1714]: [2026-08-11T15:45:19.214740+00:00][I][storage.cc:410] [storage] Success to load the data from disk: 49 ms
kvrocks[1714]: [2026-08-11T15:45:19.221324+00:00][E][worker.cc:66] [worker] Failed to listen to socket with fd: 3, Error: The port of the provided socket fd doesn't match the configured port
systemd[1]: kvrocks.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: kvrocks.service: Failed with result 'exit-code'.
Anything Else?

Error triggered here:

https://github.com/apache/kvrocks/blob/3c1ac18172777cef83bbd6d287c1d28fd4231fba/src/server/worker.cc#L232-L236

Implementation of util::GetLocalPort for context:

https://github.com/apache/kvrocks/blob/3c1ac18172777cef83bbd6d287c1d28fd4231fba/src/common/io_util.cc#L350-L364

I'm not entirely sure if the socket-fd field is only intended for workers, but assuming it is not (or maybe even if it is), I don't think it should need to care about whether the port aligns with whatever is set in the config. Whatever provided the file descriptor can be in charge of the chosen port/socket path.

I'd be willing to submit a PR, but I'm not sure what direction you'd like to take this in, so I'll wait for input.

Are you willing to submit a PR?
  • I'm willing to submit a PR!
Lingua principale
C++
Stelle
4.5k
Fork
686
Merge medio
2g 13h
PR unite (30g)
40

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

  • Include un Dockerfile o un file Docker Compose
  • Nessun modello di pull request
  • Nessuna guida per i contributori

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/kvrocks

Tutte le issue di apache/kvrocks

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.