Skip to content

Commit ae40858

Browse files
authored
Merge branch 'main' into cijothomas/fix-hash
2 parents 6e9323f + a80dedf commit ae40858

File tree

19 files changed

+2436
-1354
lines changed

19 files changed

+2436
-1354
lines changed

.github/workflows/ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
external-types:
5454
strategy:
5555
matrix:
56-
example: [opentelemetry, opentelemetry-sdk]
56+
example: [opentelemetry, opentelemetry-sdk, opentelemetry-otlp, opentelemetry-zipkin]
5757
runs-on: ubuntu-latest
5858
steps:
5959
- uses: actions/checkout@v4

.github/workflows/markdown-link-check.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- uses: actions/checkout@v4
1616

1717
- name: Install markdown-link-check
18-
run: npm install -g markdown-link-check
18+
run: npm install -g markdown-link-check@3.11.2
1919

2020
- name: Run markdown-link-check
2121
run: |

RELEASING.md

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Releasing OpenTelemetry Rust
2+
3+
The primary audience for this is the SIG Maintainers. It provides the list of steps for how to release the crates and the
4+
considerations to make before releasing the crate. It may provide use to consumers of the crate if/when we develop a
5+
release cadence.
6+
7+
## Release cadence
8+
9+
As of Feb 2024, there is no established cadence for the OpenTelemetry crates. The balance is required between too many
10+
breaking changes in a single release, and since we have instability flipping between implementations across 0.x
11+
releases. Perhaps once we've established a 1.0 we can consider adopting a consistent release cadence.
12+
13+
## Considerations
14+
15+
A draft PR can be created, but before releasing consider the following:
16+
17+
* Are there any pending pull requests which should be included in the next release?
18+
* Are they blockers?
19+
* Are there any unresolved issues which should be resolved before the next release?
20+
* Bring it up at a SIG meeting, this can usually get some of these questions answered sooner than later. It will also
21+
help establish a person to perform the release. Ideally this can be someone different each time to ensure that the
22+
process is documented.
23+
24+
## Steps to Release
25+
26+
1. Create a release PR
27+
- For each crate
28+
- Bump appropriate version
29+
- Update change logs to reflect release version.
30+
- Update API/SDK version as necessary
31+
- Attach `integration test` label to the PR to run integration tests
32+
- If there's a large enough set of changes, consider writing a migration guide.
33+
2. Merge the PR
34+
- Get reviews from other Maintainers
35+
- Ensure that there haven't been any interfering PRs
36+
3. Tag the release commit based on the [tagging convention](#tagging-convention). It should usually be a bump on minor version before 1.0
37+
4. Create Github Release
38+
5. [Publish](#publishing-crates) to crates.io using the version as of the release commit
39+
6. Post to [#otel-rust](https://cloud-native.slack.com/archives/C03GDP0H023) on CNCF Slack.
40+
41+
42+
## Tagging Convention
43+
44+
For each crate: it should be `<crate-name>-<version>` `<version>` being the simple `X.Y.Z`.
45+
46+
## Publishing Crates
47+
48+
For now we use the [basic procedure](https://doc.rust-lang.org/cargo/reference/publishing.html) from crates.io.
49+
50+
Follow this for each crate as necessary.
51+
52+
For any new crates remember to add open-telemetry/rust-maintainers to the list.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Copyright The OpenTelemetry Authors
2+
# SPDX-License-Identifier: Apache-2.0
3+
# This is used with cargo-check-external-types to reduce the surface area of downstream crates from
4+
# the public API. Ideally this can have a few exceptions as possible.
5+
allowed_external_types = [
6+
"opentelemetry::*",
7+
"opentelemetry_http::*",
8+
"opentelemetry_sdk::*",
9+
# http is a pre 1.0 crate
10+
"http::uri::InvalidUri",
11+
"http::header::name::InvalidHeaderName",
12+
"http::header::value::InvalidHeaderValue",
13+
# prost is a pre 1.0 crate
14+
"prost::error::EncodeError",
15+
# tonic is a pre 1.0 crate
16+
"tonic::status::Code",
17+
"tonic::status::Status",
18+
"tonic::metadata::map::MetadataMap",
19+
"tonic::transport::channel::Channel",
20+
"tonic::transport::error::Error",
21+
"tonic::service::interceptor::Interceptor",
22+
]

opentelemetry-sdk/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## vNext
44

5+
- Fix SimpleSpanProcessor to be consistent with log counterpart. Also removed
6+
dependency on crossbeam-channel.
7+
[1612](https://github.com/open-telemetry/opentelemetry-rust/pull/1612/files)
8+
59
## v0.22.1
610

711
### Fixed

opentelemetry-sdk/Cargo.toml

+2-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ opentelemetry = { version = "0.22", path = "../opentelemetry/" }
1414
opentelemetry-http = { version = "0.11", path = "../opentelemetry-http", optional = true }
1515
async-std = { workspace = true, features = ["unstable"], optional = true }
1616
async-trait = { workspace = true, optional = true }
17-
crossbeam-channel = { version = "0.5", optional = true }
1817
futures-channel = "0.3"
1918
futures-executor = { workspace = true }
2019
futures-util = { workspace = true, features = ["std", "sink", "async-await-macro"] }
@@ -45,9 +44,9 @@ pprof = { version = "0.13", features = ["flamegraph", "criterion"] }
4544

4645
[features]
4746
default = ["trace"]
48-
trace = ["opentelemetry/trace", "crossbeam-channel", "rand", "async-trait", "percent-encoding"]
47+
trace = ["opentelemetry/trace", "rand", "async-trait", "percent-encoding"]
4948
jaeger_remote_sampler = ["trace", "opentelemetry-http", "http", "serde", "serde_json", "url"]
50-
logs = ["opentelemetry/logs", "crossbeam-channel", "async-trait", "serde_json"]
49+
logs = ["opentelemetry/logs", "async-trait", "serde_json"]
5150
logs_level_enabled = ["logs", "opentelemetry/logs_level_enabled"]
5251
metrics = ["opentelemetry/metrics", "glob", "async-trait"]
5352
testing = ["opentelemetry/testing", "trace", "metrics", "logs", "rt-async-std", "rt-tokio", "rt-tokio-current-thread", "tokio/macros", "tokio/rt-multi-thread"]

opentelemetry-sdk/src/logs/log_processor.rs

+4-6
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,10 @@ pub trait LogProcessor: Send + Sync + Debug {
5252
fn event_enabled(&self, level: Severity, target: &str, name: &str) -> bool;
5353
}
5454

55-
/// A [`LogProcessor`] that exports synchronously when logs are emitted.
56-
///
57-
/// # Examples
58-
///
59-
/// Note that the simple processor exports synchronously every time a log is
60-
/// emitted. If you find this limiting, consider the batch processor instead.
55+
/// A [LogProcessor] that passes logs to the configured `LogExporter`, as soon
56+
/// as they are emitted, without any batching. This is typically useful for
57+
/// debugging and testing. For scenarios requiring higher
58+
/// performance/throughput, consider using [BatchLogProcessor].
6159
#[derive(Debug)]
6260
pub struct SimpleLogProcessor {
6361
exporter: Mutex<Box<dyn LogExporter>>,

0 commit comments

Comments
 (0)