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

Plugin for Azure Functions #1542

Open
wants to merge 2 commits into
base: next
Choose a base branch
from

Conversation

dpolivy
Copy link

@dpolivy dpolivy commented Oct 16, 2021

Goal

This is an initial commit of a @bugsnag/js plugin for Azure Functions. It wraps the Azure Functions handler and catches unhandled exceptions. It also automatically adds the Azure Functions context to any errors reported to Bugsnag.

Design

This plugin is based on the AWS Lambda plugin. It exports a function to create a wrapper function which can be used around the individual Azure Functions handler.

I'm not very familiar with this codebase so I took my best guess on appropriate changes to integrate it based on the AWS Lambda plugin. Hopefully it provides a good starting point to getting this incorporated!

Changeset

A new plugin was added for Azure Functions

Testing

Basic unit tests are included, based on the AWS Lambda unit tests. I don't have the proper environment to be able to do much more e2e testing.

This is an initial commit of a @bugsnag/js plugin for Azure Functions. It wraps the Azure Functions handler and catches unhandled exceptions. It also automatically adds the Azure Functions context to any errors reported to Bugsnag.

This plugin is based on the AWS Lambda plugin.

Basic unit tests are included.
@yousif-bugsnag yousif-bugsnag added backlog We hope to fix this feature/bug in the future feature request Request for a new feature labels Oct 18, 2021
@yousif-bugsnag
Copy link
Contributor

Hi @dpolivy, thanks for the PR! We'll look to get this reviewed as soon as priorities allow.

If two function invocations overlap, it is possible the context sent on an error contains incorrect data. Imagine this sequence:

    1. Func 1 starts
    2. Func 2 starts
    3. Func 1 throws an error

In this scenario, since we're using a per-process client, the context reported with the error is a combination of function 1 and function 2 context.

To address this, we treat the scenario similar to the express plugin, and clone the client for each invocation so the metadata associated with it is correct.

This also adds a bugsnag property to the context, which the function can use to notify of errors (and have context included automatically).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backlog We hope to fix this feature/bug in the future feature request Request for a new feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants