v0.11.0
Changelog
Migration Disclaimer
Version 0.11.0 of M3 includes further work on supporting writing data at arbitrary times (within the retention period). While most of these changes are transparent to the user in terms of functionality and performance, we had to make a change to the naming format of the files that get persisted to disk (#1720). This change was required to handle multiple fileset volumes per block, which is necessary after introducing "cold flushes" (#1624).
The redesign is backwards compatible but not forwards compatible. This means that you should be able upgrade your < 0.11.0 clusters to 0.11.0 with no issues, but you will not be able to downgrade without taking some additional steps.
Troubleshooting and Rolling Back
If you run into any issues with the upgrade or need to downgrade to a previous version for any reason, follow these steps:
- Stop the node that is having trouble with the upgrade or that you're trying to downgrade.
- Remove the filesets that include a volume index in them, e.g. this is a filename with the new volumed format:
fileset-1257890400000000000-0-data.db
, and this is the corresponding filename in the original format:fileset-1257890400000000000-data.db
. - Modify the
bootstrappers
config in the M3DB YAML file fromfilesystem, commitlog, peers, uninitialized_topology
tofilesystem, peers, commitlog, uninitialized_topology
. This will force the node to bootstrap from its peers instead of the local snapshot and commitlog files it has on disk, which is important otherwise when the node restarts, it will think that it has already been bootstrapped. - Turn the node back on.
Features
- M3DB: Add cluster repair capability for non-indexed data (#1831, #1849, #1862, #1874)
- M3DB: Enable arbitrary out of order writes for non-indexed data (#1780, #1790, #1829)
- M3DB: Expose debug dump on /debug/dump for zip file of profiles and data about the environment for debugging (#1811)
- M3Query: Allow lookback duration to be set in query parameters for configurable lookback windowing (#1793)
Performance
- M3DB: Improve base line write performance using pre-encoded tags instead of encoding just before commit log write (#1898, #1904)
- M3DB: Avoid allocating expensive digest readers in seek.Open() (#1835)
Bug Fixes
- M3Query: Fix PromQL variadic functions with no params specified (#1846)
- M3Query: Fix PromQL absent function (#1871)
- M3Query: Fix PromQL binary comparisons that use the time function (#1888)
- M3Query: Fix multi-deployment queries (e.g. cross region) using temporal functions (#1901)
- M3DB: Index queries to local node now returns only IDs owned by the node at time of read (#1822)
- M3DB: Automatically create folder for KV cache, avoiding common error logs (#1757)
- M3Query: Batch remote server responses to avoid large individual RPC messages (#1784)
- M3DB: Use rlimit and setcap together to raise file descriptor limits to desired setting if possible (#1792, #1745, #1850)