main · last commit
1 month ago ·
2npkec0r
tarantool-etcd-35y Hash/HashKV not wire-compatible with real etcd (cross-member corruption detection broken)
Lined Up
bd update tarantool-etcd-35y --claim
bd close tarantool-etcd-35y
| Created by | Eugene Blikh |
| Owner | bigbes@gmail.com |
| Created | 2026-05-20T06:31:01Z |
| Updated | 2026-05-20T06:31:01Z |
Maintenance.Hash and Maintenance.HashKV compute a CRC32 over Tarantool's reconstructed logical key/value/revision/lease view (app/etcd/maintenance.lua fold/fold_keyspace_now/fold_keyspace_at), NOT over bbolt page bytes the way real etcd does. The hashed inputs are semantically equivalent, but the byte layout being checksummed is entirely Tarantool's, so the resulting hash will never equal a real etcd member's hash for identical data. Impact: works for same-instance 'did my data change between rev A and B' checks, but is useless for etcd's actual purpose — cross-member corruption detection, where the corruption checker compares hashes across peers and expects identical members to agree. A Tarantool node and a real etcd node always disagree; the conformance matrix only passes because both Tarantool cells share the same folding scheme. This is a deliberate divergence. Documented in the maintenance.lua module header (lines 8-10). Tracking here so it is not mistaken for a bug. Achieving true compatibility would require emulating bbolt's physical page encoding, which is likely out of scope.
Divergence, not a defect. The HashKV revision-error contract (compacted->revision_compacted, future->future_revision) IS correct. Cross-reference docs/TODO.md deliberate-divergences section.
No outgoing dependencies.
Nothing depends on this issue.
| id | tarantool-etcd-35y |
| content_hash | 7207410b4edf93dd7a43975af03141bbb6704d601638ce99ebd06a4f81273c21 |
| title | Hash/HashKV not wire-compatible with real etcd (cross-member corruption detection broken) |
| description | Maintenance.Hash and Maintenance.HashKV compute a CRC32 over Tarantool's reconstructed logical key/value/revision/lease view (app/etcd/maintenance.lua fold/fold_keyspace_now/fold_keyspace_at), NOT over bbolt page bytes the way real etcd does. The hashed inputs are semantically equivalent, but the byte layout being checksummed is entirely Tarantool's, so the resulting hash will never equal a real etcd member's hash for identical data. Impact: works for same-instance 'did my data change between rev A and B' checks, but is useless for etcd's actual purpose — cross-member corruption detection, where the corruption checker compares hashes across peers and expects identical members to agree. A Tarantool node and a real etcd node always disagree; the conformance matrix only passes because both Tarantool cells share the same folding scheme. This is a deliberate divergence. Documented in the maintenance.lua module header (lines 8-10). Tracking here so it is not mistaken for a bug. Achieving true compatibility would require emulating bbolt's physical page encoding, which is likely out of scope. |
| design | |
| acceptance_criteria | |
| notes | Divergence, not a defect. The HashKV revision-error contract (compacted->revision_compacted, future->future_revision) IS correct. Cross-reference docs/TODO.md deliberate-divergences section. |
| status | open |
| priority | 3 |
| issue_type | task |
| assignee | NULL |
| estimated_minutes | NULL |
| created_at | 2026-05-20T06:31:01Z |
| created_by | Eugene Blikh |
| owner | bigbes@gmail.com |
| updated_at | 2026-05-20T06:31:01Z |
| 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 |
| issue_id | tarantool-etcd-35y |
| label | milestone:m1-conformance |
| id | bb43477e-f05e-5f24-91b4-804a62100a69 |
| issue_id | tarantool-etcd-35y |
| event_type | label_added |
| actor | Eugene Blikh |
| old_value | NULL |
| new_value | NULL |
| comment | Added label: milestone:m1-conformance |
| created_at | 2026-05-21T14:37:01Z |
| id | c5ae6782-aad5-5691-adc3-31d2a96a7f58 |
| issue_id | tarantool-etcd-35y |
| event_type | created |
| actor | Eugene Blikh |
| old_value | |
| new_value | |
| comment | NULL |
| created_at | 2026-05-20T09:31:01Z |
No comments.