-
Notifications
You must be signed in to change notification settings - Fork 6.7k
RocksDB Release Methodology
Release version has three parts: MAJOR.MINOR.PATCH. An example would be 6.8.2.
See RocksDB version macros for how to keep track with version you're using.
There are not objective criteria to distinguish a major version and a minor version. All features and improvements can go to minor versions, and they are applicable to new options, option default changes or public API change if needed.
A major version is usually made when several major features or improvements become stable.
Only bug fixes go to patch releases. No option of public API change is will be made in patch releases within a minor version, unless they cannot be unavoidable to fix a critical bug.
See RocksDB Compatibility Between Different Releases.
RocksDB has time-based periodic releases. We typically try to make a minor release once every month.
- The 'master' branch is used for code development. It should be somewhat stable and in usable state. It is not recommended for production use, though.
- When we release, we cut-off the branch from master. For example, release 3.0 will have a branch 3.0.fb. Once the branch is stable enough (bug fixes go to both master and the branch), we create a release tag with a name 'v3.0.0'. While we develop version 3.1 in master branch, we maintain '3.0.fb' branch and push bug fixes there. We release 3.0.1, 3.0.2, etc. as tags on a '3.0.fb' branch with names 'v3.0.X'. Once we release 3.1, we stop maintaining '3.0.fb' branch. We don't have a concept of long term supported releases.
Here is an example:
-----+---------------------+-----------------------------------> branch: master
| |
| +--------(*)---------(*)---------------> branch 3.2.fb
| 3.2.0 3.2.1
|
+-----(*)----------(*)---------(*)---> branch: 3.1.fb
3.1.0 3.1.1 3.1.2
All bug fixes go to release branches need to first to go master, and back port from the newest release branch to older ones. Note that some release branches may have been cut but not yet releases, so don't forget to backport bugs to there too. For example, one a bug is found that needs to be backported to 3.1. Here is the order:
-----+---------------------+-----------------------------------[fix]-> branch: master
| | |
| | V
| +--------(*)---------(*)------------[fix]---(*)-> branch 3.2.fb
| 3.2.0 3.2.1 | 3.2.2
| V
+-----(*)----------(*)---------(*)------------------------[fix]---(*)-> branch: 3.1.fb
3.1.0 3.1.1 3.1.2 3.1.3
Before an official release, release branch is used within Facebook servers for two weeks or more. We encourage other people to try out release branches before they are officially released too. When an official release is made, you can assume that it has been stably running in production for two weeks.
(Under construction)
Contents
- RocksDB Wiki
- Overview
- RocksDB FAQ
- Terminology
- Requirements
- Contributors' Guide
- Release Methodology
- RocksDB Users and Use Cases
- RocksDB Public Communication and Information Channels
-
Basic Operations
- Iterator
- Prefix seek
- SeekForPrev
- Tailing Iterator
- Compaction Filter
- Multi Column Family Iterator
- Read-Modify-Write (Merge) Operator
- Column Families
- Creating and Ingesting SST files
- Single Delete
- SST Partitioner
- Low Priority Write
- Time to Live (TTL) Support
- Transactions
- Snapshot
- DeleteRange
- Atomic flush
- Read-only and Secondary instances
- Approximate Size
- User-defined Timestamp
- Wide Columns
- BlobDB
- Online Verification
- Options
- MemTable
- Journal
- Cache
- Write Buffer Manager
- Compaction
- SST File Formats
- IO
- Compression
- Full File Checksum and Checksum Handoff
- Background Error Handling
- Huge Page TLB Support
- Tiered Storage (Experimental)
- Logging and Monitoring
- Known Issues
- Troubleshooting Guide
- Tests
- Tools / Utilities
-
Implementation Details
- Delete Stale Files
- Partitioned Index/Filters
- WritePrepared-Transactions
- WriteUnprepared-Transactions
- How we keep track of live SST files
- How we index SST
- Merge Operator Implementation
- RocksDB Repairer
- Write Batch With Index
- Two Phase Commit
- Iterator's Implementation
- Simulation Cache
- [To Be Deprecated] Persistent Read Cache
- DeleteRange Implementation
- unordered_write
- Extending RocksDB
- RocksJava
- Performance
- Projects Being Developed
- Misc