Skip to content

Commit

Permalink
Merge branch 'main' into vianney/data-pipeline/APMSP-1013-stats-can-b…
Browse files Browse the repository at this point in the history
…e-computed-from-the-spans-payload
  • Loading branch information
VianneyRuhlmann committed Sep 20, 2024
2 parents 067fcdf + 4c7552b commit 3475380
Show file tree
Hide file tree
Showing 25 changed files with 851 additions and 371 deletions.
20 changes: 14 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions LICENSE-3rdparty.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
root_name: datadog-alloc, builder, build_common, datadog-profiling-ffi, data-pipeline-ffi, data-pipeline, datadog-ddsketch, datadog-trace-normalization, datadog-trace-protobuf, datadog-trace-obfuscation, datadog-trace-utils, ddcommon, ddcommon-ffi, datadog-crashtracker-ffi, datadog-crashtracker, ddtelemetry, datadog-profiling, ddtelemetry-ffi, symbolizer-ffi, tools, datadog-profiling-replayer, dogstatsd, datadog-ipc, datadog-ipc-macros, tarpc, tarpc-plugins, spawn_worker, cc_utils, datadog-sidecar, datadog-remote-config, datadog-dynamic-configuration, datadog-sidecar-macros, datadog-sidecar-ffi, sidecar_mockgen, test_spawn_from_lib, datadog-serverless-trace-mini-agent, datadog-trace-mini-agent, bin_tests
root_name: datadog-alloc, builder, build_common, datadog-profiling-ffi, data-pipeline-ffi, data-pipeline, datadog-ddsketch, datadog-trace-normalization, datadog-trace-protobuf, datadog-trace-obfuscation, datadog-trace-utils, ddcommon, tinybytes, ddcommon-ffi, datadog-crashtracker-ffi, datadog-crashtracker, ddtelemetry, datadog-profiling, ddtelemetry-ffi, symbolizer-ffi, tools, datadog-profiling-replayer, dogstatsd, datadog-ipc, datadog-ipc-macros, tarpc, tarpc-plugins, spawn_worker, cc_utils, datadog-sidecar, datadog-remote-config, datadog-dynamic-configuration, datadog-sidecar-macros, datadog-sidecar-ffi, sidecar_mockgen, test_spawn_from_lib, datadog-serverless-trace-mini-agent, datadog-trace-mini-agent
third_party_libraries:
- package_name: addr2line
package_version: 0.21.0
Expand Down Expand Up @@ -24432,7 +24432,7 @@ third_party_libraries:
- license: BSD-3-Clause
text: NOT FOUND
- package_name: serde
package_version: 1.0.197
package_version: 1.0.209
repository: https://github.com/serde-rs/serde
license: MIT OR Apache-2.0
licenses:
Expand Down Expand Up @@ -24848,7 +24848,7 @@ third_party_libraries:

END OF TERMS AND CONDITIONS
- package_name: serde_derive
package_version: 1.0.197
package_version: 1.0.209
repository: https://github.com/serde-rs/serde
license: MIT OR Apache-2.0
licenses:
Expand Down Expand Up @@ -25056,7 +25056,7 @@ third_party_libraries:

END OF TERMS AND CONDITIONS
- package_name: serde_json
package_version: 1.0.120
package_version: 1.0.127
repository: https://github.com/serde-rs/json
license: MIT OR Apache-2.0
licenses:
Expand Down
5 changes: 2 additions & 3 deletions data-pipeline/src/trace_exporter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use datadog_trace_utils::trace_utils::{
self, compute_top_level_span, has_top_level, SendData, TracerHeaderTags,
};
use datadog_trace_utils::tracer_payload;
use datadog_trace_utils::tracer_payload::TraceEncoding;
use datadog_trace_utils::tracer_payload::TraceCollection;
use ddcommon::{connector, Endpoint};
use hyper::http::uri::PathAndQuery;
use hyper::{Body, Client, Method, Uri};
Expand Down Expand Up @@ -362,11 +362,10 @@ impl TraceExporter {
),
TraceExporterOutputFormat::V07 => {
let tracer_payload = trace_utils::collect_trace_chunks(
traces,
TraceCollection::V07(traces),
&header_tags,
&mut tracer_payload::DefaultTraceChunkProcessor,
self.endpoint.api_key.is_some(),
TraceEncoding::V07,
);

let endpoint = Endpoint {
Expand Down
4 changes: 4 additions & 0 deletions ipc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ serde = { version = "1.0", default-features = false, features = ["derive"] }
tokio-serde = { version = "0.8", features = ["bincode"] }
tokio-util = { version = "0.6.9", features = ["codec"] }
libc = { version = "0.2" }
tinybytes = { path = "../tinybytes", optional = true }

# tarpc needed extensions to allow 1 way communication and to export some internal structs
tarpc = { path = "tarpc/tarpc", default-features = false, features = ["serde-transport"], package = "tarpc" }
Expand Down Expand Up @@ -63,3 +64,6 @@ path = "benches/ipc.rs"

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(polyfill_glibc_memfd)'] }

[features]
tiny-bytes = ["tinybytes"]
11 changes: 11 additions & 0 deletions ipc/src/platform/mem_handle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ use serde::{Deserialize, Serialize};
#[cfg(all(unix, not(target_os = "macos")))]
use std::os::unix::prelude::AsRawFd;
use std::{ffi::CString, io};
#[cfg(feature = "tiny-bytes")]
use tinybytes::UnderlyingBytes;

#[derive(Clone, Serialize, Deserialize, Debug)]
pub struct ShmHandle {
Expand Down Expand Up @@ -203,6 +205,15 @@ impl From<ShmHandle> for PlatformHandle<OwnedFileHandle> {
unsafe impl<T> Sync for MappedMem<T> where T: FileBackedHandle {}
unsafe impl<T> Send for MappedMem<T> where T: FileBackedHandle {}

impl AsRef<[u8]> for MappedMem<ShmHandle> {
fn as_ref(&self) -> &[u8] {
self.as_slice()
}
}

#[cfg(feature = "tiny-bytes")]
impl UnderlyingBytes for MappedMem<ShmHandle> {}

#[cfg(test)]
mod tests {
use crate::platform::{FileBackedHandle, NamedShmHandle, ShmHandle};
Expand Down
3 changes: 2 additions & 1 deletion sidecar/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ datadog-trace-utils = { path = "../trace-utils" }
datadog-trace-normalization = { path = "../trace-normalization" }
datadog-remote-config = { path = "../remote-config" }
datadog-crashtracker = { path = "../crashtracker" }
tinybytes = { path = "../tinybytes" }

futures = { version = "0.3", default-features = false }
manual_future = "0.1.1"
Expand All @@ -34,7 +35,7 @@ hyper = { version = "0.14", features = ["client"], default-features = false }
lazy_static = "1.4"
pin-project = "1"

datadog-ipc = { path = "../ipc" }
datadog-ipc = { path = "../ipc", features = ["tiny-bytes"] }
datadog-ipc-macros = { path = "../ipc/macros" }

rand = "0.8.3"
Expand Down
16 changes: 12 additions & 4 deletions sidecar/src/service/sidecar_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ use datadog_ipc::platform::FileBackedHandle;
use datadog_ipc::tarpc::server::{Channel, InFlightRequest};
use datadog_remote_config::fetch::ConfigInvariants;
use datadog_trace_utils::tracer_header_tags::TracerHeaderTags;
use tinybytes;

type NoResponse = Ready<()>;

Expand Down Expand Up @@ -248,7 +249,12 @@ impl SidecarServer {
.expect("Unable to acquire lock on sessions")
}

fn send_trace_v04(&self, headers: &SerializedTracerHeaderTags, data: &[u8], target: &Endpoint) {
fn send_trace_v04(
&self,
headers: &SerializedTracerHeaderTags,
data: tinybytes::Bytes,
target: &Endpoint,
) {
let headers: TracerHeaderTags = match headers.try_into() {
Ok(headers) => headers,
Err(e) => {
Expand Down Expand Up @@ -741,7 +747,7 @@ impl SidecarInterface for SidecarServer {
_: Context,
instance_id: InstanceId,
handle: ShmHandle,
len: usize,
_len: usize,
headers: SerializedTracerHeaderTags,
) -> Self::SendTraceV04ShmFut {
if let Some(endpoint) = self
Expand All @@ -753,7 +759,8 @@ impl SidecarInterface for SidecarServer {
tokio::spawn(async move {
match handle.map() {
Ok(mapped) => {
self.send_trace_v04(&headers, &mapped.as_slice()[..len], &endpoint);
let bytes = tinybytes::Bytes::from(mapped);
self.send_trace_v04(&headers, bytes, &endpoint);
}
Err(e) => error!("Failed mapping shared trace data memory: {}", e),
}
Expand All @@ -779,7 +786,8 @@ impl SidecarInterface for SidecarServer {
.clone()
{
tokio::spawn(async move {
self.send_trace_v04(&headers, data.as_slice(), &endpoint);
let bytes = tinybytes::Bytes::from(data);
self.send_trace_v04(&headers, bytes, &endpoint);
});
}

Expand Down
9 changes: 9 additions & 0 deletions tinybytes/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,12 @@ once_cell = "1.8"
pretty_assertions = "1.3"
proptest = {version = "1.5", features = ["std"], default-features = false}
test-case = "2.2"
serde_json = "1.0.127"
tinybytes = { path = ".", features = ["bytes_string", "serialization"] }

[dependencies]
serde = { version = "1.0.209", optional = true }

[features]
bytes_string = []
serialization = ["serde"]
Loading

0 comments on commit 3475380

Please sign in to comment.