Skip to content

Commit

Permalink
Complete changelog for 0.7.0 (#1443)
Browse files Browse the repository at this point in the history
  • Loading branch information
richardartoul authored Mar 12, 2019
1 parent 1d95fb4 commit 0cd8980
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 4 deletions.
23 changes: 21 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,40 @@
# Changelog

# 0.7.0 (UNRELEASED)
# 0.7.0 (2019-03-12)

## Migration Disclaimer

Version 0.7.0 of M3 includes a redesign of the snapshotting and commitlog components (#1384 among others). This redesign was critical to improve M3DB's consistency guarantees, reduce the amount of disk space that is wasted by commitlogs, and enable future feature development to support writing data at arbitrary times.

The redesign is **backwards compatible** but not **forwards compatible**. This means that you should be able upgrade your < 0.7.0 clusters to 0.7.0 with no issues, but you will not be able to downgrade without taking some additional steps. Note that the first bootstrap after the upgrade may take longer than usual, but subsequent bootstraps should be just as fast as they used to be, or even faster.

### Troubleshotting and Rolling Back
### 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:

1. Stop the node that is having trouble with the upgrade or that you're trying to downgrade.
2. Modify the `bootstrappers` config in the M3DB YAML file from `filesystem, commitlog, peers, uninitialized_topology` to `filesystem, 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, bypassing any issues related to file incompatibility between versions.
3. Turn the node back on and wait for it to finish bootstrapping and snapshotting. Once everything looks stable, change the config back to `filesystem, commitlog, peers, uninitialized_topology` so that the next time the node is restarted it will default to using the snapshot and commitlog files.

## New Features

- **M3DB**: Restructuring of commitlog and snapshotting feature as described above (#1384)
- **M3DB**: Obtain a lock on data directory on startup (#1376)
- **M3Coordinator**: Add support for zone / environment override headers in namespace APIs so multiple M3DB clusters can be administered from the same M3Coordinator instance / etcd cluster (#1427)
- **M3Query**: Add Jaeger tracing to M3Query, and mechanism to plugin custom opentracing implementations (#1321)
- **M3nsch**: Add basic Grafana dashboard showing success rates and latencies (#1401)
- **M3nsch**: Support generating new unique metrics (#1397)

## Performance
- **M3DB**: Optimize OStream implementation which reduces CPU synchronization for each write. Should result in modest improvement in load average for metrics workloads and a massive improvement in load average for any workload using large annotations (#1399, #1437)
- **M3DB**: Prevent duplicate writes from being written to the commitlog (#1375)
- **M3DB**: Construct RPC service once and share it with TChannel and HTTP servers to prevent pools from being initialized multiple times reducing memory footprint (#1420)
- **M3Query**: Add LRU cache for query conversion. Should help dashboards with expensive regex query in particular (#1398)

## Bug Fixes
- **M3Coordinator**: Better error responses from namespace APIs when namespace is unknown (#1412)
- **M3Query**: Fix panic in temporal functions (#1429)


# 0.6.1 (2019-02-20)

Expand Down
12 changes: 10 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,17 @@ GO_BUILD_LDFLAGS := $(shell $(GO_BUILD_LDFLAGS_CMD))
GO_BUILD_COMMON_ENV := CGO_ENABLED=0
LINUX_AMD64_ENV := GOOS=linux GOARCH=amd64 $(GO_BUILD_COMMON_ENV)
GO_RELEASER_DOCKER_IMAGE := goreleaser/goreleaser:v0.93
GO_RELEASER_WORKING_DIR := /m3
GO_RELEASER_WORKING_DIR := /go/src/github.com/m3db/m3
GOMETALINT_VERSION := v2.0.5

# LD Flags
GIT_REVISION :=$(git rev-parse --short HEAD)
GIT_BRANCH :=$(git rev-parse --abbrev-ref HEAD)
GIT_VERSION :=$(git describe --tags --abbrev=0 2>/dev/null || echo unknown)
BUILD_DATE :=$(date '+%F-%T') # outputs something in this format 2017-08-21-18:58:45
BUILD_TS_UNIX :=$(date '+%s') # second since epoch
BASE_PACKAGE :=${PROJECT_PACKAGE}/vendor/github.com/m3db/m3x/instrument

export NPROC := 2 # Maximum package concurrency for unit tests.

SERVICES := \
Expand Down Expand Up @@ -177,7 +185,7 @@ check-for-goreleaser-github-token:
.PHONY: release
release: check-for-goreleaser-github-token
@echo Releasing new version
docker run -e "GITHUB_TOKEN=$(GITHUB_TOKEN)" -v $(PWD):$(GO_RELEASER_WORKING_DIR) -w $(GO_RELEASER_WORKING_DIR) $(GO_RELEASER_DOCKER_IMAGE) release
$(GO_BUILD_LDFLAGS_CMD) && docker run -e "GITHUB_TOKEN=$(GITHUB_TOKEN)" -e "GIT_REVISION=$(GIT_REVISION)" -e "GIT_BRANCH=$(GIT_BRANCH)" -e "GIT_VERSION=$(GIT_VERSION)" -e "BUILD_DATE=$(BUILD_DATE)" -e "BUILD_TS_UNIX=$(BUILD_TS_UNIX)" -e "BASE_PACKAGE=$(BASE_PACKAGE)" -v $(PWD):$(GO_RELEASER_WORKING_DIR) -w $(GO_RELEASER_WORKING_DIR) $(GO_RELEASER_DOCKER_IMAGE) release --rm-dist

.PHONY: release-snapshot
release-snapshot: check-for-goreleaser-github-token
Expand Down

0 comments on commit 0cd8980

Please sign in to comment.