Improve handling of logging with proxies #15478
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What it does
packr
will attempt to usetoJSON
to serialize an object if sees thattoJSON
is defined. That means that if an object is logged that includes a reference to an RPC proxy,packr
will attempt to calltoJSON
, and a type error will be logged if the remote target does not implementtoJSON
(even if it does,packr
isn't expecting aPromise
!). This PR returnsundefined
whentoJSON
is requested from a proxy to preventpackr
from attempting to use that method to serialize the object.How to test
FileService
)this.target[method] is not a function
Follow-ups
Breaking changes
Note
Since
toJSON
is JS API, proxies generally shouldn't implement it, and I don't see any cases where it is included in an interface in the repo. But an adopter could have defined that method in something they proxy, and it would now fail.Attribution
Review checklist
Reminder for reviewers