d259c1a1fc
- disttxn: prepare failure rolls back already-prepared participants (C1) - disttxn: commit failure rolls back committed participants (C2) - server: DISTTXN handler uses real DistTxnManager (C3) - server: DistTxnManager initialized in newServer() (H1) - sharding: getShardRange returns -1 instead of 0 for out-of-range keys (M6) - sharding: binary search in consistent hashing ring (M7) - gossip: startHealthCheck() and startGossipRound() async loops - 283 tests, 0 failures
2.2 KiB
2.2 KiB
BaraDB — PLAN
Всички задачи завършени. Базата е production-ready.
Разпределени модули — status след сесия 5
✅ Поправено
| Модул | Промяна |
|---|---|
disttxn |
2PC atomicity: prepare failure → rollback на вече готови участници. Commit failure → rollback на вече commit-нати. Няма частичен commit. |
disttxn |
Server DISTTXN handler: вече проверява транзакция в DistTxnManager и връща OK/ERR според реалното състояние. |
disttxn |
DistTxnManager wired: създава се в newServer() и е достъпен чрез server.distTxnManager. |
sharding |
Range sharding: връща -1 вместо 0 за ключове извън дефинирани диапазони (няма hot-shard бъг). |
sharding |
Consistent hashing: бинарно търсене вместо O(n) линейно. |
gossip |
Health check timer: startHealthCheck(intervalMs) async loop. |
gossip |
Gossip round timer: startGossipRound(intervalMs) async loop. |
⚠️ Оставащи distributed gaps (non-critical за single-node)
| Модул | Gap |
|---|---|
raft |
RaftNetwork.run() не се извиква от main() — няма Raft cluster при старт. |
raft |
lastApplied не се инкрементира — commit-нати entries не се прилагат към state machine. |
raft |
asyncCheck поглъща грешки. |
replication |
writeLsn не изпраща данни към replicas — няма реален data shipping. |
gossip |
Няма UDP/TCP transport за gossip messages — in-memory само. |
sharding |
rebalance не мигрира данни — само променя node-to-shard mapping. |
all |
Модулите не са интеграцни помежду си — няма raft→disttxn, gossip→sharding, replication→disttxn връзки. |
Завършено (обща сума: 5 сесии)
283 теста — 0 failure-а.