* [WIP] Implement the BatchingProcessor
* Add TestExportSync
* Add TestChunker
* Test export error default to ErrorHandler
* Fix lint
* Fix chunk smaller than size error
* Add batch tests
* Fix lint
* Update OnEmit test
Check the len of records in eventually assertion given that is what we
are going to measure.
* Revert unneeded change to BatchingProcessor doc
* Add batch type
* Refactor testing of batching config
The BatchingProcessor is not expected to ultimately contain
configuration fields for queue size or export parameters (see #5093).
This will break TestNewBatchingProcessorConfiguration which tests the
configuration by evaluating the BatchingProcessor directly.
Instead, test the batchingConfig and rename the test to
TestNewBatchingConfig to match what is being tested.
* Implement the BatchingProcessor without polling
* Add TestBatchingProcessor
* Add ConcurrentSafe test
* Expand Shutdown tests
* Test context canceled for ForceFlush
* Refactor batch to queue
* Use exportSync
* Update docs and naming
* Split buffered export to its own type
* Update comments and naming
* Fix lint
* Remove redundant triggered type
* Add interval polling
* Refactor test structure
* Add custom ring implimementation
* Add BenchmarkBatchingProcessor
* Fix merge
* Remove custom ring impl
* Remove BenchmarkBatchingProcessor
* Update dev docs
* Test nil exporter
* Update OnEmit test
Ensure the poll goroutine will completely flush the queue of batches.
* Test RetriggerFlushNonBlocking
* Update ascii diagram
* Fix flaky OnEmit
* Revert unnecessary change to test pkg name
* Use batching term in docs
* Document EnqueueExport
* Return from EnqueueExport if blocked
Do not wait for the enqueue to succeed.
* Do not drop failed flush log records
* Use cancelable ctx in concurrency test
* Fix comments
* Apply feedback
Do not spawn a goroutine for the flush operation.
* Return true from EnqueueExport when stopped
* Update sdk/log/batch.go
Co-authored-by: Robert Pająk <pellared@hotmail.com>
* Remove TODO
* Comment re-trigger in poll
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>
* Replace Record lim methods with DroppedAttributes
* Add changelog entry
* Add TestRecordDroppedAttributes
* Add TestRecordCompactAttr
* Add an indexPool
* Fix gramatical error
* Apply feedback
Reduce indentation level.
* Apply feedback
Comment compactAttr and deduplicate.
* Deduplicate all attributes when added
* Comment why head is not used
* Clarify comments
* Move TestAllocationLimits to new file
Do not run this test when the race detector is on.
* Comment follow-up task
* add trace flags to OTLP export
* add changelog entry
* add span flags to links too
* rely on the parent span context for span flags
* test BuildSpanFlags, not with an actual span
* Update exporters/otlp/otlptrace/internal/tracetransform/span.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Chester Cheung <cheung.zhy.csu@gmail.com>
build(deps): bump google.golang.org/grpc from 1.63.0 to 1.63.2 in /exporters/otlp/otlptrace/otlptracehttp
build(deps): bump google.golang.org/grpc from 1.63.0 to 1.63.2 in /bridge/opentracing/test
build(deps): bump google.golang.org/grpc from 1.63.0 to 1.63.2 in /exporters/otlp/otlptrace/otlptracegrpc
build(deps): bump google.golang.org/grpc from 1.63.0 to 1.63.2 in /exporters/otlp/otlpmetric/otlpmetrichttp
build(deps): bump google.golang.org/grpc from 1.63.0 to 1.63.2 in /exporters/otlp/otlpmetric/otlpmetricgrpc
build(deps): bump go.opentelemetry.io/proto/otlp from 1.1.0 to 1.2.0 in /exporters/otlp/otlplog/otlploghttp
build(deps): bump google.golang.org/grpc from 1.63.0 to 1.63.2 in /example/otel-collector
* Add concurrency test for Exporter to otlploghttp
* Update exporters/otlp/otlplog/otlploghttp/exporter_test.go
Co-authored-by: Robert Pająk <pellared@hotmail.com>
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>
* upgrade the generated otlp proto to 1.2.0
* add changelog entry
* mod tidy in collector example
* fix changelog entry
* Update CHANGELOG.md
Co-authored-by: Robert Pająk <pellared@hotmail.com>
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* introduce in-memory log exporter
* add changelog entry
* move logtest into a recorder within the api
* rename GetRecords to Result
* rename InMemoryRecorder to Recorder
* name the struct r
* ensure Logger creates a struct copy
* replace severity with enabledFn
* Update CHANGELOG.md
Co-authored-by: Robert Pająk <pellared@hotmail.com>
* kUpdate log/logtest/config.go
Co-authored-by: Robert Pająk <pellared@hotmail.com>
* store all scope records, so we can retrieve everything with `Result()`
* store child loggers instead of all scope records
* no need to explicitly create a new slice
* add concurrent safe test
* handle default enabled function if the struct was manually created
* rename WithEnabledFn to WithEnabledFunc
* test result/reset with child loggers
* add enabled to concurrent safe
* fix lint missing period
* rename defaultEnabledFn to defaultEnabledFunc
* merge recorder.go and config.go
* Update log/logtest/recorder_test.go
Co-authored-by: Robert Pająk <pellared@hotmail.com>
* create empty recorder in concurrent safe test
* Update log/logtest/recorder_test.go
Co-authored-by: Robert Pająk <pellared@hotmail.com>
* fix lint
* Update log/logtest/recorder.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* Update log/logtest/recorder.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* Update log/logtest/recorder.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* Update log/logtest/recorder.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* Update log/logtest/recorder.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* Update log/logtest/recorder.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* Update log/logtest/recorder.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* Update log/logtest/recorder.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* make enabledFunc callable from outside the package
* replace expected with want
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Sam Xie <sam@samxie.me>
build(deps): bump golang.org/x/tools from 0.19.0 to 0.20.0 in /internal/tools
build(deps): bump go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp from 0.49.0 to 0.50.0 in /example/dice
build(deps): bump golang.org/x/sys from 0.18.0 to 0.19.0 in /sdk
* Bump versions in versions.yaml
* Prepare stable-v1 for version v1.25.0
* Prepare experimental-metrics for version v0.47.0
* Prepare experimental-logs for version v0.1.0-alpha
* Prepare experimental-schema for version v0.0.8
* Update changelog
* Run go mod tidy
* Update CHANGELOG.md
---------
Co-authored-by: Damien Mathieu <damien.mathieu@elastic.co>
Co-authored-by: Robert Pająk <pellared@hotmail.com>
build(deps): bump github.com/itchyny/gojq from 0.12.14 to 0.12.15 in /internal/tools
build(deps): bump google.golang.org/grpc from 1.62.1 to 1.63.0 in /exporters/otlp/otlpmetric/otlpmetricgrpc
build(deps): bump google.golang.org/grpc from 1.62.1 to 1.63.0 in /bridge/opentracing/test
build(deps): bump google.golang.org/grpc from 1.62.1 to 1.63.0 in /example/otel-collector
build(deps): bump google.golang.org/grpc from 1.62.1 to 1.63.0 in /exporters/otlp/otlptrace/otlptracegrpc
build(deps): bump github.com/prometheus/client_model from 0.6.0 to 0.6.1 in /exporters/prometheus
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* Adds some basic constants for metrics utilizing a new jinja template
* Updates generated comments with more explicit nomenclature; Adds Unit and Description consts for each metric; append 'Name' to metric const instead of 'Key'
* Update CHANGELOG
* fix overlooked merge conflict
* change the types of generated consts to string; format generation to handle empty stability and descriptions
* trim trailing (repeated) periods in the description
* manual formatting of some proper nouns; simplify the license header
* update metrics file with concise generated license header
* revert special formatting logic for JVM and ASPNETCore
* Update CHANGELOG.md
* Update CHANGELOG.md
Co-authored-by: Damien Mathieu <42@dmathieu.com>
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Sam Xie <sam@samxie.me>
Co-authored-by: Damien Mathieu <42@dmathieu.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* Bump Go versions used in CI systems
The latest releases of Go 1.22 and 1.21 contain security fixes for
`net/http`. Explicitly set the CI system to not use vulnerable versions
when testing so our vulnerable checker does not fail (and we aren't
vulnerable).
* Upgrade golang.org/x/net to v0.23.0
* Add changelog entry
* Add chunker exporter
The batching log processor needs to be able to export payloads in
chuncks. This adds a chunker type that will forward all Shutdown and
ForceFlush calls to the embedded exporter and chunk data passed to
Export.
* Concurrent safe testExporter
* Add test for zero size
* Fix lint
* Refactor chunker into chunkExporter
* Remove ExportTrigger
build(deps): bump github.com/cenkalti/backoff/v4 from 4.2.1 to 4.3.0 in /exporters/otlp/otlpmetric/otlpmetricgrpc
build(deps): bump github.com/cenkalti/backoff/v4 from 4.2.1 to 4.3.0 in /exporters/otlp/otlptrace/otlptracehttp
* Add export sync
The batching log processor will generate records from 4 different
locations (polling, OnEmit, ForceFlush, Shutdown). In order to ensure an
Exporter is called serially, as is required by the interface, this
function will be used in the processor to centralize the interaction
with its Exporter.
Part of #5063.
See #5093 for the implementation use.
* Concurrent safe testExporter
---------
Co-authored-by: Sam Xie <sam@samxie.me>