-
-
Notifications
You must be signed in to change notification settings - Fork 477
fix: skip prometheus metrics trackProtocolStream for identify #8958
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
Closed
lodekeeper
wants to merge
1
commit into
ChainSafe:unstable
from
lodekeeper:fix/libp2p3-unknown-peers
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While this direct method reassignment (
metrics.trackProtocolStream = ...) effectively implements the workaround, directly modifying methods of external library instances can be fragile. If theprometheusMetricslibrary's internal implementation oftrackProtocolStreamchanges (e.g., how it usesthisor other internal state), this patch might break or behave unexpectedly. For a more robust solution, consider creating a custom metrics wrapper class that implements theMetricsinterface and explicitly delegates calls to an internalprometheusMetricsinstance, overridingtrackProtocolStreamwith your custom logic. This provides better encapsulation and makes the dependency on the external library's internal structure less direct.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gemini-code-assist Good point about fragility. This is intentionally a minimal workaround — the proper fix belongs upstream in
@libp2p/prometheus-metrics(the_track()method should use a non-consuming observer pattern rather thanaddEventListener('message', ...)). A full wrapper class adds complexity for what should be a temporary patch. If the upstream fix lands, we remove this entirely. IftrackProtocolStreamchanges signature, the TypeScript compiler will catch it at build time since we preserve the type viaas typeof metrics.trackProtocolStream.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a fair point regarding the temporary nature of the fix and the upstream root cause. Given that the proper solution lies in the
_track()method of@libp2p/prometheus-metricsand that TypeScript provides compile-time checks for signature changes, this minimal workaround is a pragmatic approach for the interim.