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

fix(lambda): avoid OperationAbortedException when using log retention #2237

Merged
merged 2 commits into from
Apr 11, 2019

Conversation

jogold
Copy link
Contributor

@jogold jogold commented Apr 10, 2019

If multiple LogRetention constructs are present in the stack, they will try to
act on the provider's log group at the same time. This can sometime result in
an OperationAbortedException. To avoid this and because this operation is not
critical it is better to catch all errors when acting on the provider's log
group


Pull Request Checklist

  • Testing
    • Unit test added (prefer not to modify an existing test, otherwise, it's probably a breaking change)
    • CLI change?: coordinate update of integration tests with team
    • cdk-init template change?: coordinated update of integration tests with team
  • Docs
    • jsdocs: All public APIs documented
    • README: README and/or documentation topic updated
  • Title and Description
    • Change type: title prefixed with fix, feat will appear in changelog
    • Title: use lower-case and doesn't end with a period
    • Breaking?: last paragraph: "BREAKING CHANGE: <describe what changed + link for details>"
    • Issues: Indicate issues fixed via: "Fixes #xxx" or "Closes #xxx"
  • Sensitive Modules (requires 2 PR approvers)
    • IAM Policy Document (in @aws-cdk/aws-iam)
    • EC2 Security Groups and ACLs (in @aws-cdk/aws-ec2)
    • Grant APIs (only if not based on official documentation with a reference)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license.

If multiple LogRetention constructs are present in the stack, they will try to
act on the provider's log group at the same time. This can sometime result in
an OperationAbortedException. To avoid this and because this operation is not
critical it is better to catch all errors when acting on the provider's log
group
@jogold jogold requested a review from a team as a code owner April 10, 2019 20:16
// same time. This can sometime result in an OperationAbortedException. To
// avoid this and because this operation is not critical we catch all errors.
try {
await createLogGroupSafe(`/aws/lambda/${context.functionName}`);
Copy link
Contributor

Choose a reason for hiding this comment

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

What am I missing? Where is the part that sends the response to cloudformation?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is only to catch errors when setting the log retention on the lambda provider's log group of the custom resource not the log we are targeting, it's an internal try/catch. The external one still exists.

https://github.com/awslabs/aws-cdk/blob/8410d48ac570cd998b14569c5d16e08bac8408cc/packages/%40aws-cdk/aws-lambda/lib/log-retention-provider/index.ts#L66-L70

Copy link
Contributor Author

@jogold jogold Apr 10, 2019

Choose a reason for hiding this comment

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

We don't want to fail the whole process if setting the retention policy of 1 day on the provider's log group (singleton fn) fails.

Copy link
Contributor

Choose a reason for hiding this comment

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

ok. thanks for the clarification. missed that

Copy link
Contributor

@eladb eladb left a comment

Choose a reason for hiding this comment

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

Can you please add a unit test?

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.

2 participants