Skip to content

Commit

Permalink
Move SidecarStats and AppOrQueue structs to more appropriate locations.
Browse files Browse the repository at this point in the history
After refactor of sidecar::interface.rs into multiple files AppOrQueue belongs in the telemetry namespace and SidecarStats belongs closer to the code it is generating stats for in SidecarServer.
  • Loading branch information
ekump committed May 8, 2024
1 parent 6104084 commit 64b271d
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 50 deletions.
8 changes: 0 additions & 8 deletions sidecar/src/service/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ use ddcommon::tag::Tag;
use ddcommon::Endpoint;
use ddtelemetry::metrics::MetricContext;
use ddtelemetry::worker::TelemetryActions;
use futures::future::Shared;
use manual_future::ManualFuture;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use std::time::Duration;
Expand Down Expand Up @@ -58,9 +56,3 @@ pub enum SidecarAction {
AddTelemetryMetricPoint((String, f64, Vec<Tag>)),
PhpComposerTelemetryFile(PathBuf),
}

#[allow(clippy::large_enum_variant)]
pub(crate) enum AppOrQueue {
App(Shared<ManualFuture<(String, String)>>),
Queue(EnqueuedTelemetryData),
}
6 changes: 4 additions & 2 deletions sidecar/src/service/runtime_info.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// Copyright 2021-Present Datadog, Inc. https://www.datadoghq.com/
// SPDX-License-Identifier: Apache-2.0

use crate::service::telemetry::AppInstance;
use crate::service::{AppOrQueue, InstanceId, QueueId};
use crate::service::{
telemetry::{AppInstance, AppOrQueue},
InstanceId, QueueId,
};
use ddtelemetry::worker::{LifecycleAction, TelemetryActions};
use futures::{
future::{self, join_all, Shared},
Expand Down
49 changes: 31 additions & 18 deletions sidecar/src/service/sidecar_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@

use crate::config::get_product_endpoint;
use crate::log;
use crate::log::{MULTI_LOG_FILTER, MULTI_LOG_WRITER};
use crate::service::telemetry::SidecarStats;
use crate::service::EnqueuedTelemetryData;
use crate::log::{TemporarilyRetainedMapStats, MULTI_LOG_FILTER, MULTI_LOG_WRITER};
use crate::service::{
sidecar_interface::ServeSidecarInterface, telemetry::AppInstance, tracing::TraceFlusher,
AppOrQueue, InstanceId, QueueId, RequestIdentification, RequestIdentifier, RuntimeInfo,
RuntimeMetadata, SerializedTracerHeaderTags, SessionConfig, SessionInfo, SidecarAction,
SidecarInterface, SidecarInterfaceRequest, SidecarInterfaceResponse,
sidecar_interface::ServeSidecarInterface,
telemetry::{AppInstance, AppOrQueue},
tracing::TraceFlusher,
EnqueuedTelemetryData, InstanceId, QueueId, RequestIdentification, RequestIdentifier,
RuntimeInfo, RuntimeMetadata, SerializedTracerHeaderTags, SessionConfig, SessionInfo,
SidecarAction, SidecarInterface, SidecarInterfaceRequest, SidecarInterfaceResponse,
};
use datadog_ipc::platform::{AsyncChannel, ShmHandle};
use datadog_ipc::tarpc;
Expand All @@ -20,7 +20,9 @@ use datadog_trace_protobuf::pb;
use datadog_trace_utils::trace_utils;
use datadog_trace_utils::trace_utils::SendData;
use ddcommon::Endpoint;
use ddtelemetry::worker::{LifecycleAction, TelemetryActions, TelemetryWorkerBuilder};
use ddtelemetry::worker::{
LifecycleAction, TelemetryActions, TelemetryWorkerBuilder, TelemetryWorkerStats,
};
use futures::future;
use futures::future::{join_all, Ready};
use manual_future::{ManualFuture, ManualFutureCompleter};
Expand All @@ -33,7 +35,10 @@ use std::sync::{Arc, Mutex, MutexGuard};
use tracing::{debug, enabled, error, info, warn, Level};

use futures::FutureExt;
use serde::{Deserialize, Serialize};

use crate::service::telemetry::enqueued_telemetry_stats::EnqueuedTelemetryStats;
use crate::service::tracing::trace_flusher::TraceFlusherStats;
use datadog_ipc::platform::FileBackedHandle;
use datadog_ipc::tarpc::server::{Channel, InFlightRequest};

Expand All @@ -43,6 +48,23 @@ fn no_response() -> NoResponse {
future::ready(())
}

#[derive(Serialize, Deserialize)]
struct SidecarStats {
trace_flusher: TraceFlusherStats,
sessions: u32,
session_counter_size: u32,
runtimes: u32,
apps: u32,
active_apps: u32,
enqueued_apps: u32,
enqueued_telemetry_data: EnqueuedTelemetryStats,
telemetry_metrics_contexts: u32,
telemetry_worker: TelemetryWorkerStats,
telemetry_worker_errors: u32,
log_writer: TemporarilyRetainedMapStats,
log_filter: TemporarilyRetainedMapStats,
}

/// The `SidecarServer` struct represents a server that handles sidecar operations.
///
/// It maintains a list of active sessions and a counter for each session.
Expand Down Expand Up @@ -293,16 +315,7 @@ impl SidecarServer {
self.trace_flusher.enqueue(data);
}

/// Computes and returns stats for the SidecarServer.
///
/// This function aggregates various statistics such as the number of active sessions,
/// telemetry worker errors, and submitted payloads. It also includes statistics related
/// to the trace flusher, log filter, and log writer.
///
/// # Returns
///
/// * `SidecarStats`: A struct containing various statistics related to the SidecarServer.
pub(crate) async fn compute_stats(&self) -> SidecarStats {
async fn compute_stats(&self) -> SidecarStats {
let mut telemetry_stats_errors = 0;
let telemetry_stats = join_all({
let sessions = self.lock_sessions();
Expand Down
27 changes: 7 additions & 20 deletions sidecar/src/service/telemetry/mod.rs
Original file line number Diff line number Diff line change
@@ -1,30 +1,17 @@
// Copyright 2021-Present Datadog, Inc. https://www.datadoghq.com/
// SPDX-License-Identifier: Apache-2.0

use crate::log::TemporarilyRetainedMapStats;
use crate::service::telemetry::enqueued_telemetry_stats::EnqueuedTelemetryStats;
use crate::service::tracing::trace_flusher::TraceFlusherStats;
use crate::service::telemetry::enqueued_telemetry_data::EnqueuedTelemetryData;
pub use app_instance::AppInstance;
use ddtelemetry::worker::TelemetryWorkerStats;
use serde::{Deserialize, Serialize};
use futures::future::Shared;
use manual_future::ManualFuture;

mod app_instance;
pub mod enqueued_telemetry_data;
pub mod enqueued_telemetry_stats;

#[derive(Serialize, Deserialize)]
pub(crate) struct SidecarStats {
pub(crate) trace_flusher: TraceFlusherStats,
pub(crate) sessions: u32,
pub(crate) session_counter_size: u32,
pub(crate) runtimes: u32,
pub(crate) apps: u32,
pub(crate) active_apps: u32,
pub(crate) enqueued_apps: u32,
pub(crate) enqueued_telemetry_data: EnqueuedTelemetryStats,
pub(crate) telemetry_metrics_contexts: u32,
pub(crate) telemetry_worker: TelemetryWorkerStats,
pub(crate) telemetry_worker_errors: u32,
pub(crate) log_writer: TemporarilyRetainedMapStats,
pub(crate) log_filter: TemporarilyRetainedMapStats,
#[allow(clippy::large_enum_variant)]
pub(crate) enum AppOrQueue {
App(Shared<ManualFuture<(String, String)>>),
Queue(EnqueuedTelemetryData),
}
4 changes: 2 additions & 2 deletions sidecar/src/service/tracing/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0

pub(crate) use trace_flusher::TraceFlusher;

use trace_send_data::TraceSendData;

pub(crate) mod trace_flusher;
pub(crate) mod trace_send_data;
mod trace_send_data;

0 comments on commit 64b271d

Please sign in to comment.