Skip to content

Confusing error message in newrelic_record_custom_event() when pas an array as one of the attributes #722

Open
@php4fan

Description

@php4fan

Description

Consider the function newrelic_record_custom_events($name, $attributes).

If one of the elements of the $attributes array is itself an array, which is not supported, the error message is very confusing.

See details below.

Steps to Reproduce

Run this:

newrelic_record_custom_event("MyEvent", ['foo' => 123, 'bar' => [4,5,6]]);

Note that I'm passing an invalid set of attributes as the second parameter, given that the element bar is an array while only scalar attributes are supported.

Expected Behavior

I expect to get an error message something like this:

WARNING: newrelic_record_custom_event: expects parameter 2 to be an associative array where each element is a scalar; array given at key `'bar'.

I am very bad at phrasing error messages and you can phrase the message however you please, but the bare minimum amount of information that I demand is as above.
In particular:

  • that the issue is with the second argument passed to the function
  • that the elements of that array are what is expected to be scalar, while one of them was an array
  • what element was an array.

Observed Behavior

The error message actually thrown is this:

Warning: newrelic_record_custom_event(): newrelic_record_custom_event: expects parameter to be scalar, array given

which sucks because it lacks all the information mentioned above.

This message is extremely confusing because it looks very similar to PHP's native error message

function_name expects parameter N to be scalar, array given

so I'm induced to immediately inspect the two arguments that I passed to the function (and I'm already irritated that it's not telling me which one is the problematic one), and since the first one (the event name) is the one that is actually expected to be scalar, I'm thinking that I accidentally passed an array for the event name. So this is misleading me.

It took me a long while to realize that this was not PHP's native error message complaining about one of the two arguments passed to the function not being an array, but instead, the function's own error message complaining that one of the "parameters" (meaning one of the items of the $attributes array passed as a second argument) is an array. And still I need to figure out which one.

Your Environment

  • PHP 7.4
  • Debian 10

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions