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

V1.15.0 release #1018

Merged
merged 63 commits into from
Nov 2, 2017
Merged

V1.15.0 release #1018

merged 63 commits into from
Nov 2, 2017

Conversation

jhaynes
Copy link
Contributor

@jhaynes jhaynes commented Oct 17, 2017

  • Feature - Support for provisioning tasks with ENIs.
  • Feature - Support for --init Docker run flag. #996
  • Feature - Introduces container level metadata. #981
  • Enhancement - Enable 'none' logging driver capability by default.
    #1041
  • Bug - Fixed a bug where tasks that fail to pull containers can cause the agent
    to fail to restore properly after a restart. #1033
  • Bug - Fixed default logging level issue. #1016
  • Bug - Fixed a bug where unsupported Docker API client versions could be registered.
    #1014
  • Bug - Fixed a bug where non-essential container state changes were sometimes not submitted.
    #1026

huerdong and others added 30 commits October 4, 2017 13:43
all @huerdong commits squashed for manageable commit history in PR
This commit is fix gomock version mismatch and regenerate all mocks to
fix breaking builds with metadata service changes
This change adds logic in the agent to update the metadata file after
the agent restarts and the related unit test.

Note that we added a MetadataFileUpdated flag in the api.Container
struct and this is included with state file's ECSDataVersion 6 bump.
---* Motivation *---
By hardcoding the host IP as 0.0.0.0, the agent is removing the ability for customers to specify specific host IP addresses (such as when there are multiple network interfaces). By default, the docker daemon defaults to 0.0.0.0, but this value may be overridden by launching the daemon with a --ip flag. https://docs.docker.com/engine/reference/commandline/dockerd/

This also has an implication for the CloudWatch Events published by ECS. Specifically, prior to this change the 'bindIP' field in the ECS Task Status events always contains '0.0.0.0'.

This change will benefit the following customer use cases:
* aws#426
* https://forums.aws.amazon.com/thread.jspa?threadID=173250
* https://serverfault.com/questions/695393/amazon-ecs-docker-binding-container-to-specific-ip-address

---* Detailed Description *---
Do not explicitly set the HostIP property when starting containers and instead defer to the daemon's default.
This change fixes a bug with the Agent's event submission
logic, where if the ENI attachment is ignored if the
ack time sent by the backend has expired. Not doing this
will result in the Agent forever trying to send the
attachment event to the backend as we can't reliably
distinguish between throttle errors and invalid input
errors from SubmitTaskStateChange response.
this change also includes minor changes to  addresses cr
unit tests no manager_test.go no longer depend on error message
format.
The docker events filter part has been moved to docker_events_buffer
samuelkarp and others added 5 commits October 25, 2017 10:32
This test verifies that the agent can be restarted after a task with an
invalid image is cleaned up.  This test fails with v1.14.5 and passes
after this commit.
@samuelkarp samuelkarp added this to the 1.15.0 milestone Oct 26, 2017
Peng Yin and others added 16 commits October 26, 2017 10:37
TestGetTaskByArn and TestMetadataFileUpdatedAgentRestart sometimes can
be flaky due to missing docker api call, as there is no way to stop the
engine from procssing the task. By modifying the desired/known status of
the container/task to reduce this calls.
This commit refactors the 'SubmitTaskEvents' method to
consolidate the duplicate code in event submission logic
into a single method.
Fixed a bug where upon submitting the task state change,
the container sent state was not being updated. This
would cause spurious container state changes in the
submission queue of task handler upon agent restart.
Added a ticker to drain the event queue every minute. If
there are any container state changes not submitted,
the ticker ensures that they do get submitted.
This commit fixes a bunch of things in the task handler code:
1. Breaking up the really long submitTaskEvents method: The callback
for the the backoff has been moved into its own named method from the
in-place anonymous method (send())
2. The backoff callback method now returns an error when there's an
error submitting state change to ECS backend. This fixes a bug with
the old version of the code where the backoff would never happen on
errors because the error was never propagated all the way up
3. The race-condition between startDrainEventsTicker() and
AddStateChangeEvent() when both are trying to submit changes to the
same task is fixed as the tasksToEvents is used to group events
belonging to the same task and only cleaned up when events are submitted
instead of being cleaned before invoking the submitTaskEvents() routine
There was another race condition where, if an event was already
being marked for submission, the batched container changes would
be lost if another submission trigger came in for the same task
from the ticker. This commit makes it so that the two maps
in task handler are updated in a single lock scope to avoid such
a race.

This commit also refactors the code to get rid of most methods
that were not tied to any struct. Instead, each struct
has its own methods to deal with sending state changes to ECS
Update ACS model for getting DNS information about the
ENI
If the container belongs to a task with an ENI,
and if the ENI object has custom DNS overrides
specified, override it in the container's host config
as well.
Record the new DNS fields in ENI state for the
statemanager's version bump for the state file
Agent registers itself as being capable of placing containers
with "none" logging driver on start, without the need for
explicitly specifying this in the config
changed min docker version required to 1.19
@jhaynes jhaynes force-pushed the v1.15.0-stage branch 3 times, most recently from a12a30c to 55a2a13 Compare October 31, 2017 15:34
@jahkeup jahkeup merged commit d2dd240 into aws:master Nov 2, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants