-
Notifications
You must be signed in to change notification settings - Fork 824
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
feat: direct calling of metric instruments #507
feat: direct calling of metric instruments #507
Conversation
* | ||
* @param value value to be checked for null equality | ||
*/ | ||
export function notNull<T>(value: T | null): value is T { |
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.
This function is in Utils.ts, accidentally added here, just clear it up.
Codecov Report
@@ Coverage Diff @@
## master #507 +/- ##
==========================================
+ Coverage 90.24% 90.42% +0.17%
==========================================
Files 142 144 +2
Lines 7064 7309 +245
Branches 645 650 +5
==========================================
+ Hits 6375 6609 +234
- Misses 689 700 +11
|
* @param value the value to add. | ||
* @param labelSet the canonicalized LabelSet used to associate with this metric's handle. | ||
*/ | ||
add(value: number, labelSet: types.LabelSet) { |
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.
Do you think we should include this on the top level API in types package.
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.
yes, I thought about it, do you think it makes sense to add a update(value, labelSet)
in types/Metric you linked to? thanks~
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.
Maybe record(value, labelSet)
, if we can't use add(value, labelSet)
and set(value, labelSet)
. WDYT?
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.
would it be a little bit confused with measure's record function? WDYT?
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.
Hmm makes sense. I am ok with current approach for now. Let's wait for others to comment on this.
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.
You could add something like this to the Metric type:
export interface Metric<T> {
...
add: T extends CounterHandle ? CounterHandle["add"] : never;
set: T extends GaugeHandle ? GaugeHandle["set"] : never;
record: T extends MeasureHandle ? MeasureHandle["record"] : never;
}
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.
@dyladan Thanks for your advice. I didn't make your suggestion work.. but it helps me find out Pick interface that enables what we need here. Please take a look and let me know if it works. 😁
* Records the given value to this measure. | ||
*/ | ||
|
||
record(value: number, labelSet: LabelSet): void; |
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.
Can you add the overload versions that take distributed context and span context?
See here:
record(value: number): void; |
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.
yeah, fixed it, thanks.
@open-telemetry/javascript-approvers Please review and approve if looks good. |
Which problem is this PR solving?
Short description of the changes