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

Is there a reason not to call Exception.blame automatically? #211

Closed
axelson opened this issue Mar 22, 2019 · 2 comments · Fixed by #219
Closed

Is there a reason not to call Exception.blame automatically? #211

axelson opened this issue Mar 22, 2019 · 2 comments · Fixed by #219

Comments

@axelson
Copy link
Contributor

axelson commented Mar 22, 2019

Is there a specific reason that Exception.blame/3 is not called automatically by Honeybadger? It does say that "This operation is potentially expensive, as it reads data from the file system, parses beam files, evaluates code and so on." but I think this should at least be optional when using honeybadger since it provides a much richer error.

It can convert an error like this:

no function clause matching in Messages.handle_message_created/2

into:

no function clause matching in Messages.build_notifications/3

The following arguments were given to Messages.build_notifications/3:

    # 1
    %Chat.Message{__meta__: #Ecto.Schema.Metadata<:loaded, "messages">, ...snip large struct value}

    # 2
    nil

    # 3
    nil

Attempted function clauses (showing 3 out of 3):

    def build_notifications(message, thread, -%Messages.MessageContainer.MessageContainerImpl{container_id: post_id}-)
    def build_notifications(%{id: message_id}, _thread, -%Communities.Post{message_id: message_id}-)
    def build_notifications(message, thread, -%Communities.Post{} = post-)

Might be related to #123

@sorentwo
Copy link
Collaborator

@axelson There isn't a good reason at this point. Historically the primary reason is that we don't require a kind argument for notify/3 and we treat all exceptions like an error when normalizing.

I think it would be a good change to get in though. I can look into it next week, or if you're interested a PR is certainly welcome =)

axelson pushed a commit to axelson/honeybadger-elixir that referenced this issue May 2, 2019
It can convert an error like this:

no function clause matching in Messages.handle_message_created/2
into:

no function clause matching in Messages.build_notifications/3

The following arguments were given to Messages.build_notifications/3:

    # 1
    %Chat.Message{__meta__: #Ecto.Schema.Metadata<:loaded, "messages">, ...snip large struct value}

    # 2
    nil

    # 3
    nil

Attempted function clauses (showing 3 out of 3):

    def build_notifications(message, thread, -%Messages.MessageContainer.MessageContainerImpl{container_id: post_id}-)
    def build_notifications(%{id: message_id}, _thread, -%Communities.Post{message_id: message_id}-)
    def build_notifications(message, thread, -%Communities.Post{} = post-)

Fixe honeybadger-io#211
axelson pushed a commit to axelson/honeybadger-elixir that referenced this issue May 2, 2019
It can convert an error like this:

no function clause matching in Messages.handle_message_created/2
into:

no function clause matching in Messages.build_notifications/3

The following arguments were given to Messages.build_notifications/3:

    # 1
    %Chat.Message{__meta__: #Ecto.Schema.Metadata<:loaded, "messages">, ...snip large struct value}

    # 2
    nil

    # 3
    nil

Attempted function clauses (showing 3 out of 3):

    def build_notifications(message, thread, -%Messages.MessageContainer.MessageContainerImpl{container_id: post_id}-)
    def build_notifications(%{id: message_id}, _thread, -%Communities.Post{message_id: message_id}-)
    def build_notifications(message, thread, -%Communities.Post{} = post-)

Fixes honeybadger-io#211
@axelson
Copy link
Contributor Author

axelson commented May 2, 2019

This would be really useful for us so I've created a PR #219

sorentwo pushed a commit that referenced this issue May 10, 2019
It can convert an error like this:

no function clause matching in Messages.handle_message_created/2
into:

no function clause matching in Messages.build_notifications/3

The following arguments were given to Messages.build_notifications/3:

    # 1
    %Chat.Message{__meta__: #Ecto.Schema.Metadata<:loaded, "messages">, ...snip large struct value}

    # 2
    nil

    # 3
    nil

Attempted function clauses (showing 3 out of 3):

    def build_notifications(message, thread, -%Messages.MessageContainer.MessageContainerImpl{container_id: post_id}-)
    def build_notifications(%{id: message_id}, _thread, -%Communities.Post{message_id: message_id}-)
    def build_notifications(message, thread, -%Communities.Post{} = post-)

Fixes #211
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 a pull request may close this issue.

2 participants