containerd 1.0.0-alpha2 With another week comes another alpha release. With this release, we have focused on increasing overall quality and consistency across the code base. Several new tests have been added, along with attention to refactoring in various subsystems to match current needs. Unfortunately, we had to break some interfaces to achieve these goals. See the section on Upgrading for details. Again, please download the binaries provided and kick the tires. Please report issues through the https://github.com/containerd/containerd/issues. Your feedback is extremely important at this stage, so please don't be bashful about letting us know what you think. Upgrading Some backwards incompatible changes have been made to the GRPC API and the snapshotter storage format. See the sections on Events and Snapshotters for more details. To upgrade, you'll need to clear out the containerd root, which defaults to `/var/lib/containerd/`. All containers, images and metadata will be lost, if you do this. If this is a problem, please reach out and we can work out a migration script. If such a change was done from a production release, a migration script would have been provided. Also, make sure to update your clients to the latest version that picks up the new definition for the events service. This change would not be accepted in a full released version. Events After dealing with a few deadlock issues, the events subsystem has been completely refactored to match the existing use cases. Specifically, a lot of cruft around the original design, based on Go's context package has been removed. The use of go-events has been cleaned up to ensure correct subscription and distribution of events, in addition to ensuring correct teardown. The nomenclature has also been updated to better reflect familiar "publish" and "subscribe" models. If you closely examine #1246, you'll see that the usage of the `Publisher` interface is much simpler than the `WithTopic` approach. This should allow us to add events to more subsystems. The GRPC API for the Events service was updated to bring the service inline with these changes. Post and Stream have been replaced with Publish and Subscribe, respectively. Clients will have to be updated to use the new API endpoints. After these changes, adding proper filter support should be more straightforward. See a615a6fe for details. Snapshotter Previously, snapshots had an attribute `Readonly` that was only valid for `Active` snapshots. After looking at various conditionals, snapshot behavior and usage, we found that these snapshots were better represented as a discrete type, known as a "view snapshot". Unfortunately, we've add to break compatibility with the existing storage format to correctly enumerate the snapshot types. Users will have to remove the old storage and start from the scratch. See 863784f9 for details. Tar Tars with duplicated symlinks in disparate layers are now handled correctly. See afec478b for details. - Windows support - snapshot command now supports "commit" - More testing Windows Support Progress on supporting windows has received a major boost. Windows integration has been refactored to more closely follow existing changes throughout containerd. Commands A new command has been added to `ctr snapshot` to allow committing of active snapshots. The help output has been reordered to be alphabetical. Changes 856b0384 Merge pull request #1253 from stevvooe/alpha2 997a1b5a release: prepare for v1.0.0-alpha2 b84817a2 Merge pull request #1246 from stevvooe/events-refactor 03623285 Merge pull request #1248 from dmcgowan/snapshot-storage-kind-test 366ebfd6 Merge pull request #1249 from dmcgowan/client-rename-with-rootfs c7cc6ad2 Add root mounts to task info 73bec3ed client: rename rootfs to snapshot in "With" functions a615a6fe events: refactor event distribution 6012f504 Update storage kind test 9434bf9e Merge pull request #1236 from stevvooe/snapshot-column-kind 050c7d24 Merge pull request #1247 from darrenstahlmsft/revendorMicrosoft cec6331e Revendor hcsshim and go-winio 1251413a Merge pull request #1245 from dmcgowan/archive-more-tar-fixes afec478b Update tar path resolution 863784f9 snapshot: replace "readonly" with View snapshot type a9ab45fb Merge pull request #1241 from stevvooe/allow-resumable-upload bfe747da Merge pull request #1242 from mlaventure/appveyor-no-coverage-only-master f5bd8bbb Merge pull request #1243 from crosbymichael/reg-diff-urls a3769f88 Panic when registering the same type but diff urls 219c3e39 Disable coverage tests on Windows CI 2eaac710 Only run Windows CI on master branch d0e396aa metadata: defer ingest lock to backend c52523c4 Merge pull request #1238 from crosbymichael/reg-specs f98b2979 Merge pull request #1239 from crosbymichael/roadmap ba577f71 Merge pull request #1227 from tossmilestone/fix-comment-typo becf0015 Replace roadmap with link to milestones b7e0101b Merge pull request #1228 from dmcgowan/content-testsuite 228f7d45 Register spec types in client 8e1591bd Call upload status tests bb3c9c59 Rename content/fs to content/local 938f3185 Add content test suite 44236524 Move content store implementation 9b53b8b6 Merge pull request #1237 from WeiZhang555/remove-hardcoded-str adeec483 Replace hardcoded debug address with const var 856c351f Improve the comment 4118a256 Merge pull request #1234 from dmcgowan/update-logrus 14912932 Update dependencies for logrus rename 1d2a079f update to github.com/sirupsen/logrus v1.0.0 dd7642fc Merge pull request #1196 from mlaventure/update-windows-runtime a2df6d1a Merge pull request #1141 from ijc/rootfsPropagation 0f6959a2 Merge pull request #1160 from darkowlzz/1082-snapshot-commit a6211858 Merge pull request #1179 from AkihiroSuda/makefile-i aeab9355 Fix vet errors eb4e0b5f Add AppVeyor configuration e3fcde69 Fix deadlock in events service 5ea5fbdf Fix deadlock in TestContainerExec if `process.Wait()` fails d4e780d7 Ensure tasks are started when running tests 3df07cbc Cancel io if task is deleted without being started 8e12d1fc ctr: Allow deleting a container in the Created state 4d14bfd8 go-winio: Don't increment the wait count if the file is closing 7f786cf0 go-winio: Prevent Data Race when accessing closing db1b0a2a Update go-winio to v0.4.3 651aaff7 Update integration test to support windows 79d04ded Make integration a bit more verbose b2d9db2e windows: Use runtime event topic constants 5c8e0efb windows: Add servicing code 4bb9ac28 Sort ctr commands alphabetically d0166c42 Register content command with ctr d10c62d4 Wrap typeurl returned errors with the provided url/type 5fd004a1 Update vendoring 546f0451 Update errdefs.ErrInvalidArgument message 674b460d Move typeurl registrations to runtime package a4aaa09c Update ctr so it works again on windows 61fbd231 windows: Refactor whole code fc82e149 windows: Move runtime options out of the spec field acf863a0 windows: Rely on the OCI specs instead of custom type bff040d0 windows: Ensure pids are not reused if active d42cb88b Loop umount'ing rootfs until there are no more mounts d63d2ecf Simplify mount cleanup on failure by using defer 300f0831 Cleanup mounts if we fail to mount one element of rootfs 8b365117 containerd-shim: Do not remount root MS_SLAVE 912ddbae cmd/ctr: add commit command to snapshot b6dbbd33 Fix typo error in Protobuild.toml 7822819f .travis.yml: run go build -i f72e97db Makefile: `go build -i` -> `go build`