Releases: m3db/m3
Releases · m3db/m3
v1.5.0
Changelog
Features and Performance
- M3DB: Optimize snapshotting by 30x or more which can speedup bootstrapping for workloads with large snapshots. (#4093)
Bug Fixes
v1.4.2
Changelog
Bug Fixes
- M3Coordinator: Guard against duplicate rollup tags in aggregation matching logic. (#3950)
Performance
- M3DB: Improve index query performance by avoid cloning of roaring bitmap in conjunctionSearcher. (#3948)
- M3DB: Improve bootstrapping memory profile by fixing entry leak in series ref resolver. (#3980)
- M3DB: Provide better balanced shard placement by fixing unbalanced initial shard allocation. (#4020)
v1.4.1
v1.4.0
Changelog
Features
- M3Query: Add write endpoint support for M3-Map-Tags-JSON header in InfluxDB path (#3816)
- M3Query: Add support for
last_over_time
in M3Query engine (#3884) - M3Aggregator: Add p75/p25 as aggregation options (#3867)
Bug Fixes
- M3DB: Fix M3TSZ to be deterministic when encoding high precision values (3872)
- M3DB: Gracefully handle reads including documents with stale index state (3905)
Performance
- M3Aggregator: Rework close and remove
persitFlushTimesEvery
semantics in leader flushing in favour of always persisting shard flush times on a successful flush for optimized graceful failovers (#3890) - M3DB: Optimize
filesetFiles
function during bootstrapping for namespaces with long retentions to prevent CPU spikes (#3900) - M3DB: Avoid loading blocks in memory for namespaces with snapshots disabled during bootstrapping to reduce memory usage (#3919)
v1.3.0
Changelog
Features
- M3Coordinator: Add support for Prometheus Remote Write storage backend for sending aggregated and unaggregated metrics (#3742, #3768, #3783, #3791, #3814, #3777)
- M3Coordinator: Add support for InfluxDB write endpoint GZip compression, setting timestamp precision and allowing an empty request body (#3373)
- M3DB: Add SYSCTL_VM_MAX_MAP_COUNT env var for sysctl-setter sidecar allowing for custom VM max map count (#3689)
Bug Fixes
- M3DB: Fix writes briefly degrading when creating a new namespace due to coarse lock acquisition (#3765)
- M3DB: Fix compiled regexp DFA cache eviction on full bug that can lead to slow memory leak with large number of unique regexps (#3806)
Performance
v1.2.0
Changelog
Features
- M3Query: Support Prometheus matchers with match[] URL parameters in label endpoints (#3180)
- M3Query: Support Prometheus start and end time URL parameters for label and series metadata endpoints (#3214)
- M3Query: Add Graphite functions and update functions with new arguments that were missing (#3048, #3367, #3370, #3145, #3149, #3142, #3469, #3484, #3545, #3576, #3582, #3583, #3521, #3602, #3641, #3644, #3648)
- M3Query: Fix Graphite treatment of
**
to allow to match an empty segment instead of one or more (#3366, #3593) - M3Query: Add M3-Limit-Max-Range header to optionally truncate time range of queries (#3538)
- M3Coordinator: Add ability to use an exclude by rollup rule to rollup metrics without specific dimensions (#3318)
- M3DB: Use better heuristics to cap the series and aggregate query limits that individual DB nodes apply for a query so in larger clusters the query can be clamped earlier (#3516, #3518, #3519, #3520, #3527)
- M3DB: Add repair option full_sweep and ability to force a repair via API call (#3573, #3550)
Bug Fixes
- M3DB: Fix aggregate series metadata query limits (#3112)
- M3Coordinator: Make bad aggregated namespace headers return bad request status code instead of internal server error (#3070)
- M3Coordinator: Propagate Require-Exhaustive parameter for aggregate series metadata queries (#3115)
- M3Query: Add determinism to Graphite sort and reduce functions (#3164)
Performance
- M3DB: Rearchitect index segments to compact and expire series on block rotation instead of build a new segment for new block (#3464)
- M3DB: Add postings list cache for searches and repopulate during active block index segment compaction before segment made visible for queries (#3671)
- M3DB: Avoid allocating index entry fields per series and read from backing mmap directly (#3050, #3062, #3057)
- M3DB: Avoid allocating series IDs when read from disk (#3093)
- M3DB: Improve speed of tag byte reuse from ID for tags by speeding up search (#3075)
- M3DB: Improve speed of bootstrap by using StreamingReadMetadata API for reads from disk (#2938)
- M3DB: Improve speed of bootstrap by using an asynchronously evaluated series resolver API that can be written to while bootstrapping reliably (#3316)
- M3DB: Add limits for total series being read at any one time globally (#3141)
- M3DB: Restrict the time a query can hold an index worker to help allow small queries to continue to execute while larger ones are paused and resumed (#3269)
- M3DB: Use adaptive WriteBatch allocations to dynamically match workload throughput and batch sizes (#3429)
- M3Coordinator: Improve rule matching speed by improving per element rule matching and disabling cache which puts locks in the hot path (#3080, #3083)
- M3Query: Improve speed of M3TSZ decoding by using 64 bit operations (#2827)
- M3Query: Improve speed of M3TSZ decoding by using int64 type xtime.UnixNano instead of time.Time (#3515)
- M3Query: Improve speed of quorum reads by improving multi-replica iterator (#3512)
v1.1.0
Changelog
Features
- M3Coordinator: Add /ready endpoint for readiness probe which checks current write/read consistency level achievability (#2976)
- M3Coordinator: Add per endpoint status code response codes and latency metrics (#2880)
- M3Coordinator: Add Graphite carbon ingest latency metrics (#3045)
- M3Coordinator: Add Graphite carbon ingest rule matcher contains to compliment regexp for faster matching (#3046)
- M3Coordinator: Return 504 errors on timeout to downstream M3DB nodes or other cross-region coordinators (#2886)
- M3Coordinator: Validate placements when using the raw placement upsert endpoint unless force set is specified (#2922)
- M3Query: Add Graphite powSeries function (#3038)
- M3Query: Add Graphite support for ** with metric path selectors (#3020)
- M3DB: Add ability to configure regexp DFA and FSA limits (#2926)
- M3DB: Add Alibaba Cloud storage class Kubernetes manifest for disk provisioning in Aliyun (#2908)
Bug Fixes
- M3Coordinator: Always set content type JSON for error responses (#2917)
- M3Query: Fix invalid query resulting in 500 instead of 400 (#2910)
- M3Query: Allow Graphite variadic functions to omit variadic args (#2882)
Performance
- M3DB: Skip out of retention index segments during bootstrap (#2992)
Documentation
- All: Add clustering getting started guides for both Kubernetes operator and binaries deployment (#2795)
v1.0.0-rc.2
Changelog
3746bf0 [dbnode] Add validation to ensure index claims is singleton (#2877)
a0a96a7 [dbnode] Default HostID and Discovery config for minimal config (#2876)
251dc3d [dbnode] Add claims for index segments volume index (#2846)
5b5c050 [dbnode] Remove namespaces from example config and integration tests (#2866)
a0a4c61 [dbnode] Resurrect flaky test skip (#2868)
47cde34 [aggregator] Fix checkCampaignStateLoop (#2867)
2d8dfe5 [dbnode] implement deletion method in namespace kvadmin service (#2861)
v1.0.0
Changelog
Overview
This release makes breaking changes to the APIs and configuration to provide a simpler experience both for setup and operating M3.
- New M3 website.
- New M3 documentation.
- Simple M3DB configuration and guides.
- M3DB hard limits limits for high resiliency under load.
- Bootstrap rearchitecture, now able to boostrap hundreds of millions of recently written datapoints in minutes for reads on restart.
- Continued focus on baseline performance release-over-release.
Features
- M3DB: Namespace resolution and retention now configured dynamically via API and stored in etcd instead of being defined statically in M3Coordinator configuration.
message DatabaseCreateRequest {
// ...
// Optional aggregated namespace to create in
// addition to unaggregated namespace
AggregatedNamespace aggregated_namespace = 8;
}
- M3DB: Minimal configuration file with default settings looks like:
coordinator: {}
db: {}
and includes common settings such as global query limits.
Backwards Incompatible Changes
Configuration
- M3DB:
db.bootstrap.bootstrappers
removed - M3DB:
db.config
nested underdb.discovery.config
(discovery
can optionally accept differenttype
s of defaults instead of a customconfig
) - M3DB:
db.fs
config key renamed todb.filesystem
- M3DB:
db.writeNewSeriesLimitPerSecond
config key nested underdb.limits
asdb.limits.writeNewSeriesPerSecond
- M3Coordinator:
cluster.namespaces.storageMetricsType
removed - M3Coordinator:
tagOptions.tagOptions
no longer supportslegacy
type - M3Query:
limits.perQuery.maxComputedDatapoints
removed - M3Query:
limits.perQuery.maxFetchedDatapoints
removed - M3Query:
limits.global.maxFetchedDatapoints
removed - M3Query:
cache
removed - M3Query:
listenAddress
changed to always be resolved as a string from config. Format changed from
listenAddress:
config: "..."
value: "..."
to
listenAddress: "..."
API
- M3DB:
/services/m3db/database/config/bootstrappers
dynamic bootstappers endpoint removed - M3Coordinator: Removed deprecated URL
/api/v1/namespace
in favor of stable preferred URL/api/v1/services/m3db/namespace
- M3Coordinator: Removed deprecated URL
/api/v1/namespace/init
in favor of stable preferred URL/api/v1/services/m3db/namespace/init
- M3Coordinator: Removed deprecated URL
/api/v1/namespace/unagg
in favor of stable preferred URL/api/v1/services/m3db/namespace/unagg
- M3Coordinator: Removed deprecated URL
/api/v1/placement
in favor of stable preferred URL/api/v1/services/m3db/placement
- M3Coordinator: Removed deprecated URL
/api/v1/placement/init
in favor of stable preferred URL/api/v1/services/m3db/placement/init
Misc
- M3Query: Concept of data point limit enforcers removed in favor of the other remaining query limits (e.g. max series). This also removed metrics
cost_reporter_datapoints
,cost_reporter_datapoints_counter
, andcost_reporter_over_datapoints_limit
.