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
38 lines
2.2 KiB
Markdown
38 lines
2.2 KiB
Markdown
# 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-а.**
|