-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Adds comparable constraint to reader #3080
Adds comparable constraint to reader #3080
Conversation
* Remove prometheus example code * Remove prometheus exporter code * Remove stdoutmetric code * Remove sdk/metric/* packages * Remove opencensus example code * Remove otlpmetric exporter code * Remove OpenCensus bridge code * go mod tidy * Remove empty modules
* Remove prometheus example code * Remove prometheus exporter code * Remove stdoutmetric code * Remove sdk/metric/* packages * Remove opencensus example code * Remove otlpmetric exporter code * Remove OpenCensus bridge code * go mod tidy * Remove empty modules * Add MeterProvider/meter structure to new SDK * Add vanity imports * go mod tidy * Add MeterProvider Flush/Shutdown required by spec * Cast nil ptr instead of alloc for comp time check * Apply suggestions from code review Co-authored-by: Aaron Clawson <[email protected]> * Apply suggested Shutdown comment * Apply fixes from feedback Co-authored-by: Aaron Clawson <[email protected]>
* Add sdk/metric/view package structure * Vanity import
…ry#2885) * Add the manual reader to the sdk. * Incoperate feedback from PR. * additional PR comments * Fix lint * Fixes for PR. * Unexport ManualReader fix a few comments
* Refactor reader testing into a harness * Run lint
…_sdk-main Merge main into new_sdk/main
* Add the metric.Exporter interface * Move the reader errors to reader.go * Update Reader.Collect docs Remove TODO being addressed in this PR and restate purpose of method. * Initial draft of the periodic reader * Refer to correct config in periodic reader opts * Refactor reader testing into a harness * Move wait group handling out of run * Refactor ticker creation to allow testing * Honor export timeout in run * Fix wait group wait bug * Add periodic reader tests * Fix lint * Update periodic reader comments * Add concurrency test for readers * Simplify the ticker stop deferral * Only register once * Restrict build of metric sdk to Go>1.16 * Clean up ShutdownBeforeRegister test
The specification requires the SDK prevent duplicate registrations for readers. This adds a test for that and fixes this for the manualReader.
* Add WithReader and WithResource Options * Run lint * Update WithReader fn signature based on feedback * crosslink * Remove zero-len check in unify * Restrict build to Go > 1.16
* Unify reader implementations Use an atomic.Value to manage concurrency without a lock. * Lint
* Use already enabled revive linter and add depguard (open-telemetry#2883) * Refactor golangci-lint conf Order settings alphabetically. * Add revive settings to golangci conf * Check blank imports * Check bool-literal-in-expr * Check constant-logical-expr * Check context-as-argument * Check context-key-type * Check deep-exit * Check defer * Check dot-imports * Check duplicated-imports * Check early-return * Check empty-block * Check empty-lines * Check error-naming * Check error-return * Check error-strings * Check errorf * Stop ignoring context first arg in tests * Check exported comments * Check flag-parameter * Check identical branches * Check if-return * Check increment-decrement * Check indent-error-flow * Check deny list of go imports * Check import shadowing * Check package comments * Check range * Check range val in closure * Check range val address * Check redefines builtin id * Check string-format * Check struct tag * Check superfluous else * Check time equal * Check var naming * Check var declaration * Check unconditional recursion * Check unexported return * Check unhandled errors * Check unnecessary stmt * Check unnecessary break * Check waitgroup by value * Exclude deep-exit check in example*_test.go files * Move the minimum version to go 1.17 (open-telemetry#2917) * Move the minimum version to go 1.17 * Update readme and changelog Co-authored-by: Chester Cheung <[email protected]> * Make lint Co-authored-by: Aaron Clawson <[email protected]> Co-authored-by: Chester Cheung <[email protected]>
* WIP views public * Add attribute filters and comments. * Fixes for lint * Address comments * Fix lint * Changed view matching to expand end Removed the dscriptor, it was moved in previous patch * change wildcards into regex * Update comments * address comments. * Address more PR comments * renamed WithDescription to WithSetDescription. Co-authored-by: Chester Cheung <[email protected]>
* Implement stubbed meter create method * Rename return value to avoid comment * Encapsulate meterRegistry tests with identifying name * Run lint fix * Comment meterRegistry being concurrent safe * Remove ordered meter tracking in the meterRegistry * Test range completeness instead of order * Remove provider field from meter
…ind (open-telemetry#2949) * Introduce Temporality and InstrumentKind Because Temporality is the responsibility of the Reader additional methods are added to the Reader interface. And New options are created to configure the temporality selector. * Addresses comments, and adds tests. * Fix addition PR comment
* Add aggregation pkg and options * Update documentation for the aggregation pkg * Test Aggregation.Err * Fix aggregation pkg comment * Add WithAggregation comment * Add default aggregation * Rename WithAggregation and add AggregationSelector * Fix DefaultAggregationSelector use and decl * Replace Aggregation struct with iface * Add Copy method to hist and fix Err method * Additional test for monotonic bounds * Add aggregation method to Reader * Use AggregationSelector instead of inline func type * Switch RecordMinMax to NoMinMax * Deep copy and validate in options * Test the DefaultAggregationSelector * nolint for import-shadow of method * Fix Default aggregation comment * Test the explicit bucket histogram deep copy
Match the WithAggregationSelector option pattern: define a TemporalitySelector type, export the DefaultTemporalitySelector function, and name the option with a Selector suffix.
* Add the aggtor package * Restrict to Go 1.18 * Add missing build block to view_test.go * Comment Aggregator iface * Use Go 1.18 as the default ci version * Update Aggregator iface from feedback * Accept hist conf * Flatten aggtor into just internal * Add Cycler interface Separate the duties of aggregation and maintaining state across aggregation periods. * Remove build flags for doc.go * Clarify Cycler documentation * Remove aggregation fold logic * Rename Number to Atomic * Add tests for Atomic impls * Remove unneeded Atomic implementation Add back when filling in structures. * Fix article in Float64 docs * Remove Atomic This is an implementation detail. * Add aggregator_example_test * Fix hist example * Add issue numbers to all TODO and FIXME * Remove zero parameter comment * Combine the cycler into the aggregators * Remove the drop aggregator * Fix lint * Use attribute.Set instead of ptr to it Co-authored-by: Anthony Mirabella <[email protected]>
* Use already enabled revive linter and add depguard (open-telemetry#2883) * Refactor golangci-lint conf Order settings alphabetically. * Add revive settings to golangci conf * Check blank imports * Check bool-literal-in-expr * Check constant-logical-expr * Check context-as-argument * Check context-key-type * Check deep-exit * Check defer * Check dot-imports * Check duplicated-imports * Check early-return * Check empty-block * Check empty-lines * Check error-naming * Check error-return * Check error-strings * Check errorf * Stop ignoring context first arg in tests * Check exported comments * Check flag-parameter * Check identical branches * Check if-return * Check increment-decrement * Check indent-error-flow * Check deny list of go imports * Check import shadowing * Check package comments * Check range * Check range val in closure * Check range val address * Check redefines builtin id * Check string-format * Check struct tag * Check superfluous else * Check time equal * Check var naming * Check var declaration * Check unconditional recursion * Check unexported return * Check unhandled errors * Check unnecessary stmt * Check unnecessary break * Check waitgroup by value * Exclude deep-exit check in example*_test.go files * Move the minimum version to go 1.17 (open-telemetry#2917) * Move the minimum version to go 1.17 * Update readme and changelog Co-authored-by: Chester Cheung <[email protected]> * Use ByteSliceToString from golang.org/x/sys/unix (open-telemetry#2924) Use unix.ByteSliceToString to convert Utsname []byte fields to strings. This also allows to drop the charsToString helper which serves the same purpose and matches ByteSliceToString's implementation. Signed-off-by: Tobias Klauser <[email protected]> Co-authored-by: Tyler Yahn <[email protected]> * docs: fix typo (open-telemetry#2935) * add timeout to grpc connection in otel-collector example (open-telemetry#2939) * Closes: open-telemetry#2951 (open-telemetry#2952) This PR updates the example listed in the getting started doc so that it will compile without error. It also makes this example consistent with the code found in https://github.com/open-telemetry/opentelemetry-go/blob/main/example/fib/main.go Signed-off-by: Brad Topol <[email protected]> * fix data-model link (open-telemetry#2955) * Bump go.opentelemetry.io/proto/otlp from v0.16.0 to v0.18.0 (open-telemetry#2960) * Move to using Instrumentation Scope (open-telemetry#2976) * Move to using Instrumentation Scope * Use type alias, not definition * Add a changelog entry * docs(website_docs): fix exporting_data.md and getting-started.md toc (open-telemetry#2930) * docs(website_docs): fix toc * docs(website_docs): fix toc * update exporting_data.md for rerun check-links * update exporting_data.md for rerun check-links Co-authored-by: Chester Cheung <[email protected]> Co-authored-by: Tyler Yahn <[email protected]> * Update getting-started.md (open-telemetry#2984) grammar edit for line 175 of readme * fix typo (open-telemetry#2986) * fix typo * spell fix * typo fix (open-telemetry#2991) * added traces.txt to gitignore for fib (open-telemetry#2993) * Deprecate Library and move all uses to Scope (open-telemetry#2977) * Deprecate Library and move all uses to Scope * Add PR number to changelog * Don't change signatures in stable modules * Revert some changes * Rename internal struct names * A bit more renaming * Update sdk/trace/span.go Co-authored-by: Tyler Yahn <[email protected]> * Update based on feedback * Revert change Co-authored-by: Tyler Yahn <[email protected]> Co-authored-by: Anthony Mirabella <[email protected]> * Feat/bridge support text map (open-telemetry#2911) * feat: support TextMap * doc: add comment * test: support for ot.TextMap * Retrieve lost code due to merge * fix: retrieve lost code due to merge. test: support for ot.HTTPHeaders * go mod tidy * Optimized code style, add changelog * doc: Restore comments * wip: add test cases * test: fix args error * delete empty line * Fix syntax and changelog errors * Fix formatting errors Co-authored-by: Chester Cheung <[email protected]> Co-authored-by: Anthony Mirabella <[email protected]> * Add a release template (open-telemetry#2863) * Add a release template * Update the about field Co-authored-by: Damien Mathieu <[email protected]> * Fix linting Issues * Add ignore for template link Co-authored-by: Damien Mathieu <[email protected]> Co-authored-by: Chester Cheung <[email protected]> Co-authored-by: Anthony Mirabella <[email protected]> * Fix merge of CHANGELOG.md Co-authored-by: Aaron Clawson <[email protected]> Co-authored-by: Chester Cheung <[email protected]> Co-authored-by: Tobias Klauser <[email protected]> Co-authored-by: petrie <[email protected]> Co-authored-by: Damien Mathieu <[email protected]> Co-authored-by: Brad Topol <[email protected]> Co-authored-by: Craig Pastro <[email protected]> Co-authored-by: Kshitija Murudi <[email protected]> Co-authored-by: Petrie Liu <[email protected]> Co-authored-by: Guangya Liu <[email protected]> Co-authored-by: Craig Pastro <[email protected]> Co-authored-by: Anthony Mirabella <[email protected]> Co-authored-by: ttoad <[email protected]>
* Move InstrumentKind to view, Add view filter * remove TODO * Add the Option function, fix lint * use local var over 0 * Fix missing undefinedInstrumnet Co-authored-by: Tyler Yahn <[email protected]>
* Change View Attribute Filter to detect if not set. * Fix PR comments. * Rework test for no filter logic.
* Add last-value aggregator * Add test of last-value reset of unseen attrs * Add benchmark * Use generic DataPoint value * Fix assertion_fail_test.go * Fix tests * Remove unused test increment values
Signed-off-by: liupengfei <[email protected]> Co-authored-by: Tyler Yahn <[email protected]>
* Add delta/cumulative histogram implementation * Add histogram unit tests * Fix histValues Aggregate Store the new buckets value back to the values map. Ensure min/max are measured values, not zero values. * Fix lint * Add benchmarks * Test histograms internal functionality * Fix lint * Add TODO to look at memory use for cumu hist * Update sdk/metric/internal/histogram.go Co-authored-by: Chester Cheung <[email protected]> Co-authored-by: Chester Cheung <[email protected]>
Signed-off-by: Petrie <[email protected]> Co-authored-by: Aaron Clawson <[email protected]>
* Implement the sum aggregators * Add unit tests for delta/cumulative sums * Add benchmarks * Merge sum tests into one * Remove unused start time from cumulative sum * Refactor benchmark tests Split benchmarks for the Aggregations and Aggregate methods so computational resource use can be determined. * goimports * Move timestamp out of lock * Refactor testing * Fix spelling mistake * Name param of expectFunc * Reset delta sum to zero instead of delete * Revert to deleting unused attr sets * Refactor testing to allow use across other aggs * Add TODO to bound cumulative sum mem usage * Fix misspelling * Unify aggregator benchmark code in aggregator_test * Use generic DataPoint value * Fix assertion_fail_test.go * Use generic metricdata types * Fix tests * Fix benchmarks * Fix lint * Update sum documentation * Remove leftover encapsulating test run * Use t.Cleanup to mock time * Consolidate expecter logic into funcs * Move errNegVal closer to use * Run the agg test * Add tests for monotonic sum Aggregate err * Run make lint * Make monotonic an arg of creation funcs * Remove Aggregate monotonic validation * Rename sum to valueMap The term sum is a good variable name that we do not want to take and valueMap better describes the type as the storage of the aggregator.
* Adds a filter Aggregator. * Add lock and tests * Add Concurrency tests * fix lint errors * Add memory constrained todo. * Update filter comment. Co-authored-by: Tyler Yahn <[email protected]> Co-authored-by: Chester Cheung <[email protected]> Co-authored-by: Tyler Yahn <[email protected]>
* PoC stdoutmetric exporter * Use stringer to generate String for Temporality * Add vanity imports * Update Temporality string expected output * Do not return error from newConfig * Add shutdown unit tests * Fix spelling error * Unify testing of ctx errors and test ForceFlush * Add unit test for Export handle of ctx errs * Clarify documentation about alt OTLP exporter * Remove unused ErrUnrecognized A third party encoder can produce their own errors. This code does nothing unique with this error, therefore, it is removed. * Lint exporter_test.go * Refactor example_test.go removing FIXME * Add test for Export shutdown err * Add a discard encoder for testing * Acknowledged error is returned from Shutdown * Remove unexpected SchemaURL from stdouttrace test * Remove unneeded *testing.T arg from testEncoderOption * Fix the location of now * Revise and edit docs Co-authored-by: Aaron Clawson <[email protected]>
Also added nil tests.
This is required so that they can be used as ComparableReaders.
This change isn't as straightforward as I thought. For it to work, we will have to expose both ManualReader and PeriodicReader, because you can't convert a |
Codecov Report
@@ Coverage Diff @@
## new_sdk/main #3080 +/- ##
==============================================
+ Coverage 74.0% 76.6% +2.6%
==============================================
Files 114 131 +17
Lines 7930 9104 +1174
==============================================
+ Hits 5874 6982 +1108
- Misses 1921 1969 +48
- Partials 135 153 +18
|
So this creates more problems than it solves. We will need to add checks for empty readers, &ManualReader{} and &PeriodicReader{}. I think it might be a good path to go, but a bit more work needs to be put into it. |
I'm going to close this as a different, and better approach can be taken. |
This is a solution to the discussion of #3044 (comment).
This adds a constraint to the WithReader Option, so that all Readers within the SDK will be comparable.
ComparableReader isn't used within the MeterProvider/Meter ecosystem because it is A) a type constraint so you can't have a
map[ComparableReader]struct{}
and B) would color the structs so you could only have one kind of reader per MeterProvider/Meter.