Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Complete changelog for 0.7.0 #1443

Merged
merged 10 commits into from
Mar 12, 2019
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)
richardartoul marked this conversation as resolved.
Show resolved Hide resolved

## 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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be good to add this to docs as well? More people would look at those than at the changelogs IMO

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Theres not really a clear place to put this in the docs and we already explain all the bootstrappers there :/ I think this is probably the best place for now because the DB node won't return a specific error saying anything is wrong

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure sounds good. At some point maybe we should introduce Migration Guides sections now that it's picking up traction for any breaking changes we introduce. Eg we already have a breaking issue in query so might be good at some point to have a single reference section to describe all migration procedures


## New Features

- **M3DB**: Restructuring of commitlog and snapshotting feature as described above (#1384)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be good to have it in the docs, then link here rather than saying described above

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same comment as before, should be transparent upgrade for everyone anyways

- **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)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So very nit, but I think we should lowercase m3coordinator, m3query, m3nsch since they're names, whereas M3DB is an abbreviation

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, on # 0.4.8 (2018-10-20) and before, they just say DB, Coordinator, etc. so we should definitely be consistent

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To the latter point, I think it's fine that your changelogs become a bit more polished and expressive as time and adoption goes up; probably no reason to be shackled to conventions which were largely ad-hoc decisions

- **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
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,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 -e GIT_BRANCH -e GIT_VERSION -e BUILD_DATE -e BUILD_TS_UNIX -e BASE_PACKAGE -v $(PWD):$(GO_RELEASER_WORKING_DIR) -w $(GO_RELEASER_WORKING_DIR) $(GO_RELEASER_DOCKER_IMAGE) release

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