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

feat: improve error handling for log_metrics decorator #71

Merged
merged 8 commits into from
Jun 9, 2020

Conversation

to-mc
Copy link
Contributor

@to-mc to-mc commented Jun 8, 2020

Issue #, if available:

Description of changes:

Change default behavior for log_metrics decorator: no longer throws exception if no metrics are emitted during the wrapped function's execution. Added parameter to revert this behavior if exception is desired in this case.

Breaking change checklist

Ignore if it's not a breaking change

RFC issue #:

  • Migration process documented
  • Implement warnings (if it can live side by side)

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@to-mc to-mc requested a review from heitorlessa June 8, 2020 15:00
@codecov-commenter
Copy link

codecov-commenter commented Jun 8, 2020

Codecov Report

Merging #71 into develop will not change coverage.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff            @@
##           develop       #71   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           15        16    +1     
  Lines          508       516    +8     
  Branches        48        49    +1     
=========================================
+ Hits           508       516    +8     
Impacted Files Coverage Δ
aws_lambda_powertools/metrics/metrics.py 100.00% <100.00%> (ø)
aws_lambda_powertools/metrics/base.py 100.00% <0.00%> (ø)
aws_lambda_powertools/metrics/metric.py 100.00% <0.00%> (ø)
aws_lambda_powertools/metrics/__init__.py 100.00% <0.00%> (ø)
aws_lambda_powertools/package_logger.py 100.00% <0.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 967d86e...a78dc10. Read the comment docs.

@heitorlessa
Copy link
Contributor

I'm trying to think of an actual customer scenario where this would be common to have no validation by default - Could you share one or two use cases where you wouldn't have a metric if you want to use Metrics?

I thought about scenarios where metric value would be 0, but even then it's a data point rather than missing data point.

aws_lambda_powertools/metrics/metrics.py Outdated Show resolved Hide resolved
aws_lambda_powertools/metrics/metrics.py Outdated Show resolved Hide resolved
@heitorlessa
Copy link
Contributor

heitorlessa commented Jun 8, 2020 via email

Tom McCarthy added 2 commits June 8, 2020 21:03
add raise_on_empty_metrics param to partial func call
revert mistake in change to test for exception propagation
@to-mc
Copy link
Contributor Author

to-mc commented Jun 8, 2020

That’s fair enough - I thought you were also adding metrics on unhappy path (my expectation). I’m happy with the change - On my phone now, only change I’d request is to use “raise_on...” rather than “raise_for...”

Done!

Tom McCarthy and others added 3 commits June 9, 2020 11:57
@heitorlessa heitorlessa merged commit 59cd561 into develop Jun 9, 2020
@heitorlessa heitorlessa deleted the improv/metric_error_handling branch June 9, 2020 14:39
heitorlessa added a commit that referenced this pull request Jun 10, 2020
* develop: (31 commits)
  docs: fix contrast on highlighted code text (#73)
  feat: improve error handling for log_metrics decorator (#71)
  chore(deps): bump graphql-playground-html from 1.6.19 to 1.6.25 in /docs
  feat: add high level imports (#70)
  fix: correct env var name for publish to pypi test (#69)
  chore: version bump (#68)
  feat: add capture_cold_start_metric for log_metrics (#67)
  chore(deps): bump websocket-extensions from 0.1.3 to 0.1.4 in /docs (#66)
  feat: automate publishing to pypi (#58)
  feat: add pre-commit hooks (#64)
  improv: include example tests in `make tests` (#63)
  chore: rename Makefile target docs-dev to docs-local (#65)
  improv: better namespace/dimension handling for Metrics (#62)
  docs: build on master only
  chore: correct docstring for log_metrics
  chore: fix typo in metrics doc
  chore: Correct test comment
  chore: remove unused import
  chore: formatting
  feat: update Metrics interface to resemble tracer & logger: use "service" as its namespace.
  ...
heitorlessa referenced this pull request in heitorlessa/aws-lambda-powertools-python Jun 17, 2020
* feat: dont throw exception by default from log_metrics if no metrics are emitted

* docs: update details for change to error handling

* chore: rename parameter for clarity

* fix: correct bug in exception handling from previous commits

add raise_on_empty_metrics param to partial func call
revert mistake in change to test for exception propagation

* improv: change log debug statement to warning when no metrics are present

* docs: add note on suppressing warning for empty metric set

* improv: add warning for manual serialization

Signed-off-by: heitorlessa <lessa@amazon.co.uk>

* improv: whitespace and warning supress as info

Signed-off-by: heitorlessa <lessa@amazon.co.uk>

Co-authored-by: heitorlessa <lessa@amazon.co.uk>
heitorlessa referenced this pull request in heitorlessa/aws-lambda-powertools-python Jun 17, 2020
…tools-python into develop

* 'develop' of https://github.com/awslabs/aws-lambda-powertools-python: (104 commits)
  feat: add metrics metadata (#81)
  chore: cleanup tests (#79)
  chore: remove deprecated code before GA (#78)
  docs: customize contributing guide (#77)
  chore: move blockquotes as hidden comments
  chore: update CHANGELOG
  chore: bump version to 0.11.0 (#76)
  chore: version bump 0.10.1
  fix: default dimension creation now happens when metrics are serialized instead of on metrics constructor (#74)
  fix: default dimension creation now happens when metrics are serialized instead of on metrics constructor (#74)
  docs: fix contrast on highlighted code text (#73)
  feat: improve error handling for log_metrics decorator (#71)
  chore(deps): bump graphql-playground-html from 1.6.19 to 1.6.25 in /docs
  feat: add high level imports (#70)
  fix: correct env var name for publish to pypi test (#69)
  chore: version bump (#68)
  feat: add capture_cold_start_metric for log_metrics (#67)
  chore(deps): bump websocket-extensions from 0.1.3 to 0.1.4 in /docs (#66)
  feat: automate publishing to pypi (#58)
  feat: add pre-commit hooks (#64)
  ...
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.

None yet

4 participants