Skip to content

Commit 77f3e5f

Browse files
authored
feat: extract otap-df-pdata-views as a standalone zero-dependency leaf crate (open-telemetry#2130)
Fixes: open-telemetry#2120 ## Summary Extracts the backend-agnostic view traits for logs, traces, resource, and common types from `otap-df-pdata` into a new standalone crate `otap-df-pdata-views`. The motivation is to make these traits consumable outside the otel-arrow ecosystem - for example, by exporters like `geneva-uploader` in `opentelemetry-rust-contrib` - without pulling in the full `otap-df-pdata` dependency stack. See discussion in open-telemetry#2120. ## Changes - **New crate** `crates/pdata-views/` - contains `views::common`, `views::logs`, `views::trace`, `views::resource` with zero external dependencies - `TraceId` and `SpanId` type aliases are defined at the crate root - All consumers within `otap-df-pdata` (otlp/proto, otlp/bytes, otap, encode, payload) updated to import directly from `otap_pdata_views` - the re-export shim layer has been removed - External crates (`otap`, `telemetry`, `contrib-nodes`, `benchmarks`) updated to import view traits directly from `otap_pdata_views` - `#[non_exhaustive]` added to `ValueType` for forward compatibility ## Out of scope **Metrics view traits are intentionally excluded** for now - the metrics view hierarchy is significantly more complex and can be extracted in a follow-up once the pattern is validated for logs and traces. ## Verification - `cargo tree -p otap-pdata-views` confirms zero external dependencies - All existing tests in `otap-df-pdata` pass unchanged
1 parent bcb03a8 commit 77f3e5f

37 files changed

Lines changed: 192 additions & 100 deletions

File tree

rust/otap-dataflow/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ otap-df-engine = { path = "crates/engine" }
5656
otap-df-otap = { path = "crates/otap" }
5757
otap-test-tls-certs = { package = "otap-df-test-tls-certs", path = "crates/otap-test-tls-certs" }
5858
otap-df-pdata = { path = "crates/pdata" }
59+
otap-df-pdata-views = { path = "crates/pdata-views" }
5960
otap-df-telemetry = { path = "crates/telemetry" }
6061
quiver = { package = "otap-df-quiver", path = "crates/quiver" }
6162
data_engine_expressions = { path = "../experimental/query_engine/expressions" }

rust/otap-dataflow/benchmarks/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ otap-df-channel = { path = "../crates/channel" }
2525
otap-df-engine = { path = "../crates/engine"}
2626
otap-df-telemetry = { path="../crates/telemetry"}
2727
otap-df-pdata = { path="../crates/pdata", features = ["bench"]}
28+
otap-df-pdata-views = { workspace = true }
2829

2930
smallvec.workspace = true
3031
tracing.workspace = true

rust/otap-dataflow/benchmarks/benches/otap_logs_view/main.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ use otap_df_pdata::otap::OtapArrowRecords;
2121
use otap_df_pdata::otlp::{ProtoBuffer, ProtoBytesEncoder, logs::LogsProtoBytesEncoder};
2222
use otap_df_pdata::proto::opentelemetry::arrow::v1::ArrowPayloadType;
2323
use otap_df_pdata::proto::opentelemetry::collector::logs::v1::ExportLogsServiceRequest;
24-
use otap_df_pdata::views::common::AttributeView;
25-
use otap_df_pdata::views::logs::{LogRecordView, LogsDataView, ResourceLogsView, ScopeLogsView};
2624
use otap_df_pdata::views::otap::OtapLogsView;
25+
use otap_df_pdata_views::views::common::AttributeView;
26+
use otap_df_pdata_views::views::logs::{
27+
LogRecordView, LogsDataView, ResourceLogsView, ScopeLogsView,
28+
};
2729
use prost::Message;
2830

2931
use arrow::array::Array;

rust/otap-dataflow/crates/contrib-nodes/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ otap-df-engine = { path = "../engine" }
1919
otap-df-engine-macros = { path = "../engine-macros" }
2020
otap-df-otap = { path = "../otap" }
2121
otap-df-pdata = { path = "../pdata" }
22+
otap-df-pdata-views = { workspace = true }
2223
otap-df-telemetry = { path = "../telemetry" }
2324
otap-df-channel = { path = "../channel" }
2425
otap-df-telemetry-macros = { path = "../telemetry-macros" }

rust/otap-dataflow/crates/contrib-nodes/src/exporters/azure_monitor_exporter/exporter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ use otap_df_engine::local::exporter::{EffectHandler, Exporter};
1313
use otap_df_engine::message::{Message, MessageChannel};
1414
use otap_df_engine::terminal_state::TerminalState;
1515
use otap_df_pdata::otlp::OtlpProtoBytes;
16-
use otap_df_pdata::views::logs::LogsDataView;
1716
use otap_df_pdata::views::otap::OtapLogsView;
1817
use otap_df_pdata::views::otlp::bytes::logs::RawLogsData;
1918
use otap_df_pdata::{OtapArrowRecords, OtapPayload};
19+
use otap_df_pdata_views::views::logs::LogsDataView;
2020

2121
use super::auth::Auth;
2222
use super::client::LogsIngestionClientPool;

rust/otap-dataflow/crates/contrib-nodes/src/exporters/azure_monitor_exporter/transformer.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
use bytes::{BufMut, Bytes, BytesMut};
5-
use otap_df_pdata::views::{
6-
common::{AnyValueView, AttributeView, InstrumentationScopeView, Str, ValueType},
7-
logs::{LogRecordView, LogsDataView, ResourceLogsView, ScopeLogsView},
8-
resource::ResourceView,
5+
use otap_df_pdata_views::views::common::{
6+
AnyValueView, AttributeView, InstrumentationScopeView, Str, ValueType,
97
};
8+
use otap_df_pdata_views::views::logs::{
9+
LogRecordView, LogsDataView, ResourceLogsView, ScopeLogsView,
10+
};
11+
use otap_df_pdata_views::views::resource::ResourceView;
1012
use otap_df_telemetry::otel_warn;
1113
use serde::Serialize;
1214
use serde_json::Value;

rust/otap-dataflow/crates/contrib-nodes/src/processors/resource_validator_processor/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,15 @@ use otap_df_engine::processor::ProcessorWrapper;
6262
use otap_df_pdata::OtapArrowRecords;
6363
use otap_df_pdata::OtapPayload;
6464
use otap_df_pdata::otlp::OtlpProtoBytes;
65-
use otap_df_pdata::views::common::{AnyValueView, AttributeView, ValueType};
66-
use otap_df_pdata::views::logs::{LogsDataView, ResourceLogsView};
6765
use otap_df_pdata::views::metrics::{MetricsView, ResourceMetricsView};
6866
use otap_df_pdata::views::otap::OtapLogsView;
6967
use otap_df_pdata::views::otlp::bytes::logs::RawLogsData;
7068
use otap_df_pdata::views::otlp::bytes::metrics::RawMetricsData;
7169
use otap_df_pdata::views::otlp::bytes::traces::RawTraceData;
72-
use otap_df_pdata::views::resource::ResourceView;
73-
use otap_df_pdata::views::trace::{ResourceSpansView, TracesView};
70+
use otap_df_pdata_views::views::common::{AnyValueView, AttributeView, ValueType};
71+
use otap_df_pdata_views::views::logs::{LogsDataView, ResourceLogsView};
72+
use otap_df_pdata_views::views::resource::ResourceView;
73+
use otap_df_pdata_views::views::trace::{ResourceSpansView, TracesView};
7474
use otap_df_telemetry::metrics::MetricSet;
7575
use otap_df_telemetry::otel_warn;
7676
use serde_json::Value;

rust/otap-dataflow/crates/otap/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ otap-df-channel = { path = "../channel" }
5151
otap-df-config = { path = "../config" }
5252
otap-df-opl = { path = "../opl" }
5353
otap-df-pdata = { path = "../pdata" }
54+
otap-df-pdata-views = { workspace = true }
5455
otap-df-query-engine = { path = "../query-engine" }
5556
otap-df-telemetry = { path = "../telemetry" }
5657
otap-df-telemetry-macros = { path = "../telemetry-macros" }

rust/otap-dataflow/crates/otap/src/console_exporter.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ use otap_df_engine::node::NodeId;
2121
use otap_df_engine::terminal_state::TerminalState;
2222
use otap_df_engine::{ConsumerEffectHandlerExtension, ExporterFactory};
2323
use otap_df_pdata::OtapPayload;
24-
use otap_df_pdata::views::common::InstrumentationScopeView;
25-
use otap_df_pdata::views::logs::{LogRecordView, LogsDataView, ResourceLogsView, ScopeLogsView};
2624
use otap_df_pdata::views::otap::OtapLogsView;
2725
use otap_df_pdata::views::otlp::bytes::logs::RawLogsData;
28-
use otap_df_pdata::views::resource::ResourceView;
26+
use otap_df_pdata_views::views::common::InstrumentationScopeView;
27+
use otap_df_pdata_views::views::logs::{
28+
LogRecordView, LogsDataView, ResourceLogsView, ScopeLogsView,
29+
};
30+
use otap_df_pdata_views::views::resource::ResourceView;
2931
use otap_df_telemetry::otel_error;
3032
use otap_df_telemetry::self_tracing::{AnsiCode, ColorMode, LOG_BUFFER_SIZE, StyledBufWriter};
3133
use std::io::Write;

rust/otap-dataflow/crates/otap/src/content_router.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ use otap_df_engine::{
5858
};
5959
use otap_df_pdata::OtapPayload;
6060
use otap_df_pdata::otlp::OtlpProtoBytes;
61-
use otap_df_pdata::views::common::{AnyValueView, AttributeView, ValueType};
62-
use otap_df_pdata::views::logs::{LogsDataView, ResourceLogsView};
6361
use otap_df_pdata::views::metrics::{MetricsView, ResourceMetricsView};
6462
use otap_df_pdata::views::otap::OtapLogsView;
6563
use otap_df_pdata::views::otlp::bytes::logs::RawLogsData;
6664
use otap_df_pdata::views::otlp::bytes::metrics::RawMetricsData;
6765
use otap_df_pdata::views::otlp::bytes::traces::RawTraceData;
68-
use otap_df_pdata::views::resource::ResourceView;
69-
use otap_df_pdata::views::trace::{ResourceSpansView, TracesView};
66+
use otap_df_pdata_views::views::common::{AnyValueView, AttributeView, ValueType};
67+
use otap_df_pdata_views::views::logs::{LogsDataView, ResourceLogsView};
68+
use otap_df_pdata_views::views::resource::ResourceView;
69+
use otap_df_pdata_views::views::trace::{ResourceSpansView, TracesView};
7070
use otap_df_telemetry::instrument::Counter;
7171
use otap_df_telemetry::metrics::MetricSet;
7272

0 commit comments

Comments
 (0)