Skip to content

Commit 090829b

Browse files
committed
fix: post rebase shenanigans
1 parent 0b0384e commit 090829b

4 files changed

Lines changed: 44 additions & 146 deletions

File tree

datadog-sidecar-macros/src/lib.rs

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

44
use proc_macro::TokenStream;
5-
<<<<<<< HEAD
65
use quote::quote;
76
use syn::{
87
parse::{Parse, ParseStream},
98
parse_macro_input,
109
};
11-
=======
12-
use quote::{format_ident, quote};
13-
use syn::FnArg::Typed;
14-
use syn::__private::Span;
15-
use syn::parse::{Parse, ParseStream};
16-
use syn::{parse_macro_input, parse_quote, Arm, Ident, ItemTrait, Pat, TraitItem};
17-
18-
fn snake_to_camel(ident_str: &str) -> String {
19-
let mut camel_ty = String::with_capacity(ident_str.len());
20-
21-
let mut last_char_was_underscore = true;
22-
for c in ident_str.chars() {
23-
match c {
24-
'_' => last_char_was_underscore = true,
25-
c if last_char_was_underscore => {
26-
camel_ty.extend(c.to_uppercase());
27-
last_char_was_underscore = false;
28-
}
29-
c => camel_ty.extend(c.to_lowercase()),
30-
}
31-
}
32-
33-
camel_ty.shrink_to_fit();
34-
camel_ty
35-
}
36-
37-
#[proc_macro_attribute]
38-
pub fn extract_request_id(_attr: TokenStream, input: TokenStream) -> TokenStream {
39-
let mut item: ItemTrait = syn::parse(input).unwrap();
40-
let name = &format_ident!("{}Request", item.ident);
41-
let mut arms: Vec<Arm> = vec![];
42-
let mut backpressure_variants: Vec<Ident> = vec![];
43-
44-
for inner in item.items.iter_mut() {
45-
if let TraitItem::Fn(func) = inner {
46-
// Strip #[force_backpressure] and record which methods carry it.
47-
let had_force_backpressure = func.attrs.iter().any(|attr| {
48-
attr.meta
49-
.path()
50-
.get_ident()
51-
.is_some_and(|i| i == "force_backpressure")
52-
});
53-
func.attrs.retain(|attr| {
54-
attr.meta
55-
.path()
56-
.get_ident()
57-
.is_none_or(|i| i != "force_backpressure")
58-
});
59-
60-
let method = Ident::new(
61-
&snake_to_camel(&func.sig.ident.to_string()),
62-
Span::mixed_site(),
63-
);
64-
65-
if had_force_backpressure {
66-
backpressure_variants.push(method.clone());
67-
}
68-
69-
for any_arg in &func.sig.inputs {
70-
if let Typed(arg) = any_arg {
71-
if let Pat::Ident(ident) = &*arg.pat {
72-
let matched_enum_type = match ident.ident.to_string().as_str() {
73-
"session_id" => Some(format_ident!("SessionId")),
74-
"instance_id" => Some(format_ident!("InstanceId")),
75-
_ => None,
76-
};
77-
if let Some(enum_type) = matched_enum_type {
78-
arms.push(parse_quote! {
79-
#name::#method { #ident, .. } => RequestIdentifier::#enum_type(#ident.clone())
80-
});
81-
}
82-
}
83-
}
84-
}
85-
}
86-
}
87-
88-
let backpressure_body = if backpressure_variants.is_empty() {
89-
quote! { false }
90-
} else {
91-
quote! { matches!(self, #(#name::#backpressure_variants { .. })|*) }
92-
};
93-
94-
TokenStream::from(quote! {
95-
#item
96-
97-
impl RequestIdentification for tarpc::Request<#name> {
98-
fn extract_identifier(&self) -> RequestIdentifier {
99-
match &self.message {
100-
#(
101-
#arms,
102-
)*
103-
_ => RequestIdentifier::None,
104-
}
105-
}
106-
}
107-
108-
impl #name {
109-
/// Returns true if this request variant was annotated with `#[force_backpressure]`.
110-
pub fn requires_backpressure(&self) -> bool {
111-
#backpressure_body
112-
}
113-
}
114-
})
115-
}
116-
>>>>>>> 86f25e094 (chore: style & unused dependancies)
11710

11811
struct EnvOrDefault {
11912
name: syn::LitStr,

libdd-data-pipeline/src/stats_exporter.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
use std::{
55
borrow::Borrow,
6-
collections::HashMap,
76
sync::{
87
atomic::{AtomicU64, Ordering},
98
Arc, Mutex,

libdd-data-pipeline/src/trace_exporter/mod.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use crate::stats_exporter::StatsExporter;
2424
#[cfg(feature = "telemetry")]
2525
use crate::telemetry::{SendPayloadTelemetry, TelemetryClient};
2626
use crate::trace_exporter::agent_response::{
27-
AgentResponsePayloadVersion, DATADOG_RATES_PAYLOAD_VERSION_HEADER,
27+
AgentResponsePayloadVersion, DATADOG_RATES_PAYLOAD_VERSION,
2828
};
2929
#[cfg(not(target_arch = "wasm32"))]
3030
use crate::trace_exporter::error::InternalErrorKind;
@@ -36,6 +36,7 @@ use crate::{
3636
};
3737
use arc_swap::{ArcSwap, ArcSwapOption};
3838
use bytes::Bytes;
39+
use http::header::HeaderMap;
3940
use http::uri::PathAndQuery;
4041
use http::Uri;
4142
use libdd_capabilities::{HttpClientTrait, MaybeSend};
@@ -53,7 +54,7 @@ use libdd_trace_utils::trace_utils::TracerHeaderTags;
5354
use std::io;
5455
use std::sync::{Arc, Mutex};
5556
use std::time::Duration;
56-
use std::{borrow::Borrow, collections::HashMap, str::FromStr};
57+
use std::{borrow::Borrow, str::FromStr};
5758
use tokio::runtime::Runtime;
5859
use tracing::{debug, error, warn};
5960

@@ -170,8 +171,8 @@ impl<'a> From<&'a TracerMetadata> for TracerHeaderTags<'a> {
170171
}
171172
}
172173

173-
impl<'a> From<&'a TracerMetadata> for HashMap<&'static str, String> {
174-
fn from(tags: &'a TracerMetadata) -> HashMap<&'static str, String> {
174+
impl<'a> From<&'a TracerMetadata> for HeaderMap {
175+
fn from(tags: &'a TracerMetadata) -> HeaderMap {
175176
TracerHeaderTags::from(tags).into()
176177
}
177178
}
@@ -655,7 +656,7 @@ impl<H: HttpClientTrait + MaybeSend + Sync + 'static> TraceExporter<H> {
655656
&self,
656657
endpoint: &Endpoint,
657658
mp_payload: Vec<u8>,
658-
headers: HashMap<&'static str, String>,
659+
headers: HeaderMap,
659660
chunks: usize,
660661
chunks_dropped_p0: usize,
661662
) -> Result<AgentResponse, TraceExporterError> {
@@ -825,7 +826,7 @@ impl<H: HttpClientTrait + MaybeSend + Sync + 'static> TraceExporter<H> {
825826
let is_success = response.status().is_success();
826827
let version_header = response
827828
.headers()
828-
.get(DATADOG_RATES_PAYLOAD_VERSION_HEADER)
829+
.get(DATADOG_RATES_PAYLOAD_VERSION)
829830
.and_then(|v| v.to_str().ok());
830831
match (
831832
is_success,
@@ -945,7 +946,6 @@ mod tests {
945946
use libdd_trace_utils::msgpack_encoder;
946947
use libdd_trace_utils::span::v04::SpanBytes;
947948
use libdd_trace_utils::span::v05;
948-
use std::collections::HashMap;
949949
use std::net;
950950
use std::time::Duration;
951951
use tokio::time::sleep;
@@ -989,17 +989,17 @@ mod tests {
989989
..Default::default()
990990
};
991991

992-
let hashmap: HashMap<&'static str, String> = (&tracer_tags).into();
992+
let headers: HeaderMap = (&tracer_tags).into();
993993

994-
assert_eq!(hashmap.get("datadog-meta-tracer-version").unwrap(), "v0.1");
995-
assert_eq!(hashmap.get("datadog-meta-lang").unwrap(), "rust");
996-
assert_eq!(hashmap.get("datadog-meta-lang-version").unwrap(), "1.52.1");
994+
assert_eq!(headers.get("datadog-meta-tracer-version").unwrap(), "v0.1");
995+
assert_eq!(headers.get("datadog-meta-lang").unwrap(), "rust");
996+
assert_eq!(headers.get("datadog-meta-lang-version").unwrap(), "1.52.1");
997997
assert_eq!(
998-
hashmap.get("datadog-meta-lang-interpreter").unwrap(),
998+
headers.get("datadog-meta-lang-interpreter").unwrap(),
999999
"rustc"
10001000
);
1001-
assert!(hashmap.contains_key("datadog-client-computed-stats"));
1002-
assert!(hashmap.contains_key("datadog-client-computed-top-level"));
1001+
assert!(headers.contains_key("datadog-client-computed-stats"));
1002+
assert!(headers.contains_key("datadog-client-computed-top-level"));
10031003
}
10041004

10051005
fn read(socket: &net::UdpSocket) -> String {

libdd-trace-utils/src/send_data/mod.rs

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ use crate::tracer_payload::TracerPayloadCollection;
1010
use anyhow::{anyhow, Context};
1111
use futures::stream::FuturesUnordered;
1212
use futures::StreamExt;
13-
use http::header::CONTENT_TYPE;
13+
use http::{header::CONTENT_TYPE, HeaderMap, HeaderValue};
1414
use libdd_capabilities::HttpClientTrait;
1515
use libdd_common::{
1616
header::{
17-
APPLICATION_MSGPACK_STR, APPLICATION_PROTOBUF_STR, DATADOG_SEND_REAL_HTTP_STATUS_STR,
18-
DATADOG_TRACE_COUNT_STR,
17+
APPLICATION_MSGPACK, APPLICATION_PROTOBUF, DATADOG_SEND_REAL_HTTP_STATUS,
18+
DATADOG_TRACE_COUNT,
1919
},
2020
Endpoint,
2121
};
@@ -69,7 +69,7 @@ pub struct SendData {
6969
pub(crate) tracer_payloads: TracerPayloadCollection,
7070
pub(crate) size: usize, // have a rough size estimate to force flushing if it's large
7171
target: Endpoint,
72-
headers: HashMap<&'static str, String>,
72+
headers: HeaderMap,
7373
retry_strategy: RetryStrategy,
7474
#[cfg(feature = "compression")]
7575
compression: Compression,
@@ -86,7 +86,7 @@ pub struct SendDataBuilder {
8686
pub(crate) tracer_payloads: TracerPayloadCollection,
8787
pub(crate) size: usize,
8888
target: Endpoint,
89-
headers: HashMap<&'static str, String>,
89+
headers: HeaderMap,
9090
retry_strategy: RetryStrategy,
9191
#[cfg(feature = "compression")]
9292
compression: Compression,
@@ -99,8 +99,8 @@ impl SendDataBuilder {
9999
tracer_header_tags: TracerHeaderTags,
100100
target: &Endpoint,
101101
) -> SendDataBuilder {
102-
let mut headers: HashMap<&'static str, String> = tracer_header_tags.into();
103-
headers.insert(DATADOG_SEND_REAL_HTTP_STATUS_STR, "1".to_string());
102+
let mut headers: HeaderMap = tracer_header_tags.into();
103+
headers.insert(DATADOG_SEND_REAL_HTTP_STATUS, HeaderValue::from_static("1"));
104104
SendDataBuilder {
105105
tracer_payloads: tracer_payload,
106106
size,
@@ -161,8 +161,8 @@ impl SendData {
161161
tracer_header_tags: TracerHeaderTags,
162162
target: &Endpoint,
163163
) -> SendData {
164-
let mut headers: HashMap<&'static str, String> = tracer_header_tags.into();
165-
headers.insert(DATADOG_SEND_REAL_HTTP_STATUS_STR, "1".to_string());
164+
let mut headers: HeaderMap = tracer_header_tags.into();
165+
headers.insert(DATADOG_SEND_REAL_HTTP_STATUS, HeaderValue::from_static("1"));
166166
SendData {
167167
tracer_payloads: tracer_payload,
168168
size,
@@ -245,7 +245,7 @@ impl SendData {
245245
client: &H,
246246
chunks: u64,
247247
payload: Vec<u8>,
248-
headers: HashMap<&'static str, String>,
248+
headers: HeaderMap,
249249
endpoint: Option<&Endpoint>,
250250
) -> (SendWithRetryResult, u64, u64) {
251251
#[allow(clippy::unwrap_used)]
@@ -269,7 +269,7 @@ impl SendData {
269269
}
270270

271271
#[cfg(feature = "compression")]
272-
fn compress_payload(&self, payload: Vec<u8>, headers: &mut HashMap<&str, String>) -> Vec<u8> {
272+
fn compress_payload(&self, payload: Vec<u8>, headers: &mut HeaderMap) -> Vec<u8> {
273273
match self.compression {
274274
Compression::Zstd(level) => {
275275
let result = (|| -> std::io::Result<Vec<u8>> {
@@ -280,7 +280,10 @@ impl SendData {
280280

281281
match result {
282282
Ok(compressed_payload) => {
283-
headers.insert("Content-Encoding", "zstd".to_string());
283+
headers.insert(
284+
http::header::CONTENT_ENCODING,
285+
HeaderValue::from_static("zstd"),
286+
);
284287
compressed_payload
285288
}
286289
Err(_) => payload,
@@ -318,7 +321,7 @@ impl SendData {
318321
#[cfg(not(feature = "compression"))]
319322
let final_payload = serialized_trace_payload;
320323

321-
request_headers.insert(CONTENT_TYPE.as_str(), APPLICATION_PROTOBUF_STR.to_string());
324+
request_headers.insert(CONTENT_TYPE, APPLICATION_PROTOBUF);
322325

323326
let (response, bytes_sent, chunks) = self
324327
.send_payload(
@@ -352,8 +355,9 @@ impl SendData {
352355
#[allow(clippy::unwrap_used)]
353356
let chunks = u64::try_from(tracer_payload.chunks.len()).unwrap();
354357
let mut headers = self.headers.clone();
355-
headers.insert(DATADOG_TRACE_COUNT_STR, chunks.to_string());
356-
headers.insert(CONTENT_TYPE.as_str(), APPLICATION_MSGPACK_STR.to_string());
358+
headers.reserve(2);
359+
headers.insert(DATADOG_TRACE_COUNT, chunks.into());
360+
headers.insert(CONTENT_TYPE, APPLICATION_MSGPACK);
357361

358362
let payload = match rmp_serde::to_vec_named(tracer_payload) {
359363
Ok(p) => p,
@@ -373,8 +377,9 @@ impl SendData {
373377
#[allow(clippy::unwrap_used)]
374378
let chunks = u64::try_from(self.tracer_payloads.size()).unwrap();
375379
let mut headers = self.headers.clone();
376-
headers.insert(DATADOG_TRACE_COUNT_STR, chunks.to_string());
377-
headers.insert(CONTENT_TYPE.as_str(), APPLICATION_MSGPACK_STR.to_string());
380+
headers.reserve(2);
381+
headers.insert(DATADOG_TRACE_COUNT, chunks.into());
382+
headers.insert(CONTENT_TYPE, APPLICATION_MSGPACK);
378383

379384
let payload = msgpack_encoder::v04::to_vec(payload);
380385

@@ -390,8 +395,9 @@ impl SendData {
390395
#[allow(clippy::unwrap_used)]
391396
let chunks = u64::try_from(self.tracer_payloads.size()).unwrap();
392397
let mut headers = self.headers.clone();
393-
headers.insert(DATADOG_TRACE_COUNT_STR, chunks.to_string());
394-
headers.insert(CONTENT_TYPE.as_str(), APPLICATION_MSGPACK_STR.to_string());
398+
headers.reserve(2);
399+
headers.insert(DATADOG_TRACE_COUNT, chunks.into());
400+
headers.insert(CONTENT_TYPE, APPLICATION_MSGPACK);
395401

396402
let payload = match rmp_serde::to_vec(payload) {
397403
Ok(p) => p,
@@ -576,8 +582,8 @@ mod tests {
576582
assert_eq!(data.target.api_key, None);
577583
assert_eq!(data.target.url.path(), "/foo/bar");
578584

579-
for (key, value) in HashMap::from(header_tags) {
580-
assert_eq!(data.headers.get(key).unwrap(), &value);
585+
for (key, value) in &HeaderMap::from(header_tags) {
586+
assert_eq!(data.headers.get(key), Some(value));
581587
}
582588
}
583589

@@ -686,7 +692,7 @@ mod tests {
686692
let mock = server
687693
.mock_async(|when, then| {
688694
when.method(POST)
689-
.header(DATADOG_TRACE_COUNT_STR, "1")
695+
.header("x-datadog-trace-count", "1")
690696
.header("Content-type", "application/msgpack")
691697
.header("datadog-meta-lang", header_tags.lang)
692698
.header(
@@ -745,7 +751,7 @@ mod tests {
745751
let mock = server
746752
.mock_async(|when, then| {
747753
when.method(POST)
748-
.header(DATADOG_TRACE_COUNT_STR, "1")
754+
.header("x-datadog-trace-count", "1")
749755
.header("Content-type", "application/msgpack")
750756
.header("datadog-meta-lang", header_tags.lang)
751757
.header(
@@ -933,7 +939,7 @@ mod tests {
933939
let mock = server
934940
.mock_async(|when, then| {
935941
when.method(POST)
936-
.header(DATADOG_TRACE_COUNT_STR, "2")
942+
.header("x-datadog-trace-count", "2")
937943
.header("Content-type", "application/msgpack")
938944
.header("datadog-meta-lang", header_tags.lang)
939945
.header(

0 commit comments

Comments
 (0)