Files
Baradb/PLAN.md
T
dimgigov d259c1a1fc fix(distributed): 2PC atomicity, DISTTXN handler, sharding bugs, gossip timers
- 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
2026-05-07 14:13:17 +03:00

38 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-а.**