~bigbes/tarantool-etcd · parade

main · last commit 1 month ago · 2npkec0r

← Back to the parade

tarantool-etcd-mah Unix socket listener for gRPC + JSON (etcd 3.7) Lined Up

status: open P3 feature
bd update tarantool-etcd-mah --claim bd close tarantool-etcd-mah
Created byEugene Blikh
Ownerbigbes@gmail.com
Created2026-07-17T11:30:46Z
Updated2026-07-17T11:30:46Z
Description
etcd 3.7 adds Unix socket endpoints — local communication without a TCP port, aimed at development and edge devices. We bind TCP only: the role's grpc.listen / json.listen are host:port, and there is no unix path handling in app/roles/etcd.lua, app/etcd/grpc.lua, or lib/cmux.lua.

For a Tarantool-embedded etcd this is more than parity: a co-located Tarantool EE instance reading its centralized config from us over a unix socket skips the loopback stack and needs no port allocated or firewalled.

Scope: accept a unix:// (or unix/:) listen URI in the role config, bind an AF_UNIX socket, and confirm the cmux HTTP/2-preface peek and the PeekSock replay work unchanged over it (they should — cmux only needs a stream socket).
Design
Tarantool's socket.tcp_server has a unix-socket sibling; confirm which API the nghttp2 server layer can accept a listening socket from. Decide the socket file lifecycle: stale-file removal on bind, permissions, and unlink on role stop.
Acceptance criteria
Role boots with a unix listen path; grpc + JSON both serve over it; cmux multiplexes both on one unix socket; a conformance or Lua test dials it; socket file is cleaned up on stop.

Depends on

No outgoing dependencies.

Depended on by

Nothing depends on this issue.

No comments.

  • Eugene Blikh created the issue · 2026-07-17T14:30:45Z
Stored rows — what this pane was built from, as read
issues 1 row
id tarantool-etcd-mah
content_hash 9a466a5136be87beabd361f6098012ee8e2ee48bd3ccb1250ca93018108ada6f
title Unix socket listener for gRPC + JSON (etcd 3.7)
description etcd 3.7 adds Unix socket endpoints — local communication without a TCP port, aimed at development and edge devices. We bind TCP only: the role's grpc.listen / json.listen are host:port, and there is no unix path handling in app/roles/etcd.lua, app/etcd/grpc.lua, or lib/cmux.lua. For a Tarantool-embedded etcd this is more than parity: a co-located Tarantool EE instance reading its centralized config from us over a unix socket skips the loopback stack and needs no port allocated or firewalled. Scope: accept a unix:// (or unix/:) listen URI in the role config, bind an AF_UNIX socket, and confirm the cmux HTTP/2-preface peek and the PeekSock replay work unchanged over it (they should — cmux only needs a stream socket).
design Tarantool's socket.tcp_server has a unix-socket sibling; confirm which API the nghttp2 server layer can accept a listening socket from. Decide the socket file lifecycle: stale-file removal on bind, permissions, and unlink on role stop.
acceptance_criteria Role boots with a unix listen path; grpc + JSON both serve over it; cmux multiplexes both on one unix socket; a conformance or Lua test dials it; socket file is cleaned up on stop.
notes
status open
priority 3
issue_type feature
assignee NULL
estimated_minutes NULL
created_at 2026-07-17T11:30:46Z
created_by Eugene Blikh
owner bigbes@gmail.com
updated_at 2026-07-17T11:30:46Z
closed_at NULL
closed_by_session
external_ref NULL
spec_id
compaction_level 0
compacted_at NULL
compacted_at_commit NULL
original_size NULL
sender
ephemeral 0
wisp_type
pinned 0
is_template 0
mol_type
work_type
source_system
metadata <binary>
source_repo
close_reason
event_kind
actor
target
payload
await_type
await_id
timeout_ns 0
waiters
hook_bead
role_bead
agent_state
last_activity NULL
role_type
rig
due_at NULL
defer_until NULL
no_history 0
started_at NULL
is_blocked 0
events 1 row
id 019f6fd7-dd5d-7167-b77f-b97966ab4165
issue_id tarantool-etcd-mah
event_type created
actor Eugene Blikh
old_value
new_value
comment NULL
created_at 2026-07-17T14:30:45Z