~bigbes/tarantool-etcd · parade

main · last commit 1 month ago · 2npkec0r

← Back to the parade

tarantool-etcd-tf0 iproto-impl: etcd_maintenance_hash_kv vs Maintenance.HashKV Lined Up

status: open P3 task milestone:m4-iproto-parity
bd update tarantool-etcd-tf0 --claim bd close tarantool-etcd-tf0
Created byEugene Blikh
Ownerbigbes@gmail.com
Created2026-05-19T14:54:39Z
Updated2026-07-17T14:27:36Z
Description
Wrap the existing handler maintenance.hash_kv (already invoked by gRPC/JSON via defs.lua route etcdserverpb.Maintenance.HashKV) as a Lua global etcd_maintenance_hash_kv callable via iproto CALL. Mechanical change in app/etcd/api.lua: add rawset(_G, 'etcd_maintenance_hash_kv', wrap('maintenance', 'hash_kv')) under the appropriate service block; append 'etcd_maintenance_hash_kv' to the funcs table so box.schema.func.create plus guest grant runs at role apply; document the wrapper in the module-level LDoc comment. If Maintenance.HashKV returns UNIMPLEMENTED today, the wrapper still gets added so the iproto caller observes the same UNIMPLEMENTED error gRPC would return. Election.Observe is server-streaming over gRPC; iproto has no stream primitive, so propose a polling shape (observe_create/_pull/_cancel) mirroring the Watch precedent at api.lua:81-83.
Acceptance criteria
etcd_maintenance_hash_kv is callable from net.box:call('etcd_maintenance_hash_kv', {req}) with no Lua error before handler dispatch. Successful request shape produces same successful response shape as gRPC. box.schema.func.create plus guest grant idempotent on role re-apply.
Notes
Epic tarantool-etcd-w8q. Handler at app/etcd/maintenance.lua.

Depends on

No outgoing dependencies.

Depended on by

  • tarantool-etcd-97v — iproto-verify: etcd_maintenance_hash_kv vs Maintenance.HashKV blocks

No comments.

  • Eugene Blikh created the issue · 2026-05-19T17:54:38Z
  • Eugene Blikh tarantool-etcd-97v now depends on this · 2026-05-19T17:54:39Z
  • Eugene Blikh added label milestone:m4-iproto-parity · 2026-05-21T14:37:14Z
Stored rows — what this pane was built from, as read
issues 1 row
id tarantool-etcd-tf0
content_hash 4410402a2773378d989b3453c6d566e9ab0eb85ec6a8ba9eb21801b478e96d73
title iproto-impl: etcd_maintenance_hash_kv vs Maintenance.HashKV
description Wrap the existing handler maintenance.hash_kv (already invoked by gRPC/JSON via defs.lua route etcdserverpb.Maintenance.HashKV) as a Lua global etcd_maintenance_hash_kv callable via iproto CALL. Mechanical change in app/etcd/api.lua: add rawset(_G, 'etcd_maintenance_hash_kv', wrap('maintenance', 'hash_kv')) under the appropriate service block; append 'etcd_maintenance_hash_kv' to the funcs table so box.schema.func.create plus guest grant runs at role apply; document the wrapper in the module-level LDoc comment. If Maintenance.HashKV returns UNIMPLEMENTED today, the wrapper still gets added so the iproto caller observes the same UNIMPLEMENTED error gRPC would return. Election.Observe is server-streaming over gRPC; iproto has no stream primitive, so propose a polling shape (observe_create/_pull/_cancel) mirroring the Watch precedent at api.lua:81-83.
design
acceptance_criteria etcd_maintenance_hash_kv is callable from net.box:call('etcd_maintenance_hash_kv', {req}) with no Lua error before handler dispatch. Successful request shape produces same successful response shape as gRPC. box.schema.func.create plus guest grant idempotent on role re-apply.
notes Epic tarantool-etcd-w8q. Handler at app/etcd/maintenance.lua.
status open
priority 3
issue_type task
assignee NULL
estimated_minutes NULL
created_at 2026-05-19T14:54:39Z
created_by Eugene Blikh
owner bigbes@gmail.com
updated_at 2026-07-17T14:27:36Z
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
labels 1 row
issue_id tarantool-etcd-tf0
label milestone:m4-iproto-parity
dependencies 1 row
id 70d82cfa-0c4a-5bbd-86ce-ba24f81f7d56
issue_id tarantool-etcd-97v
type blocks
created_at 2026-05-19T17:54:39Z
created_by Eugene Blikh
metadata <binary>
thread_id
depends_on_issue_id tarantool-etcd-tf0
depends_on_wisp_id NULL
depends_on_external NULL
events 2 rows
id a4ae3524-e546-5518-beee-94665d4cf440
issue_id tarantool-etcd-tf0
event_type label_added
actor Eugene Blikh
old_value NULL
new_value NULL
comment Added label: milestone:m4-iproto-parity
created_at 2026-05-21T14:37:14Z
id bbf149ce-2ac9-50c0-bdff-56477c0f2177
issue_id tarantool-etcd-tf0
event_type created
actor Eugene Blikh
old_value
new_value
comment NULL
created_at 2026-05-19T17:54:38Z