This directory holds Kudu design documents. These documents are typically written from a point-of-time view, and do not necessarily represent the current state of the system. They are useful for learning why design decisions were made.
| Document | Component(s) | Discussion |
|---|---|---|
| Scan optimization and partition pruning | Client, Tablet | gerrit |
| CFile format | Tablet | N/A |
| Codegen API and impl. details | Server | N/A |
| Consensus design | Consensus | N/A |
| Raft config change design | Consensus | N/A |
| Tablet Copy design | Consensus | N/A |
| Master design | Master | N/A |
| RPC design and impl. details | RPC | N/A |
| Tablet design, impl. details and comparison to other systems | Tablet | N/A |
| Tablet compaction design and impl. | Tablet | N/A |
| Tablet compaction policy | Tablet | N/A |
| Schema change design | Master, Tablet | N/A |
| Maintenance operation scheduling | Master, Tablet Server | N/A |
| C++ client design and impl. details | Client | N/A |
| (old) Heartbeating between tservers and multiple masters | Master | gerrit |
| Scan Token API | Client | gerrit |
| Full multi-master support for Kudu 1.0 | Master, Client | gerrit |
| Non-covering Range Partitions | Master, Client | gerrit |
| Permanent failure handling of masters for Kudu 1.0 | Master | |
| RPC Retry/Failover semantics | Client/TS/Master | gerrit |
| Tablet history garbage collection | Tablet | gerrit |
| Documentation Style Guide | Documentation |