Skip to content

Commit 67200b4

Browse files
Dev (#662)
* estimate span size before any processing (#654) * Feat/lam 682 (#655) * feat: update delete project, fix spans filters * fix: rendering, model fallback * feat: move delete endpoint to next * feat: fix margins * feat: update delete project data in ch, fix comments * fix: command * feat: add debug console * feat: move helper function * allow CTES in SQL editor (#653) * allow CTES in SQL editor * remove debug console.log * fix reset usage when upgrading (#657) * Hotfix/ack browser events (#660) * first ack browser events, then increment usage * don't wait for async insert on browser events * feat: fix decode key by passing in docker file (#661) * feat: fix decode key by passing in docker file * feat: add key to full build --------- Co-authored-by: Dinmukhamed Mailibay <47117969+dinmukhamedm@users.noreply.github.com>
1 parent 0496551 commit 67200b4

File tree

24 files changed

+539
-415
lines changed

24 files changed

+539
-415
lines changed

app-server/src/browser_events/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ async fn inner_process_browser_events(
9292

9393
match backoff::future::retry(exponential_backoff, insert_browser_events).await {
9494
Ok(recorded_bytes) => {
95+
if let Err(e) = acker.ack().await {
96+
log::error!("Failed to ack MQ delivery (browser events): {:?}", e);
97+
}
9598
if let Err(e) = increment_project_browser_events_bytes_ingested(
9699
&db.pool,
97100
&project_id,
@@ -104,9 +107,6 @@ async fn inner_process_browser_events(
104107
e
105108
);
106109
}
107-
if let Err(e) = acker.ack().await {
108-
log::error!("Failed to ack MQ delivery (browser events): {:?}", e);
109-
}
110110
}
111111
Err(e) => {
112112
log::error!(

app-server/src/ch/browser_events.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ pub async fn insert_browser_events(
3838
);
3939
e
4040
})?
41-
.with_option("async_insert", "1")
42-
.with_option("wait_for_async_insert", "1");
41+
.with_option("async_insert", "1");
4342

4443
let mut total_size_bytes = 0;
4544

app-server/src/db/projects.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,3 @@ pub async fn create_project(
4848

4949
Ok(project)
5050
}
51-
52-
pub async fn delete_project(pool: &PgPool, project_id: &Uuid) -> Result<()> {
53-
sqlx::query("DELETE FROM projects WHERE id = $1")
54-
.bind(project_id)
55-
.execute(pool)
56-
.await?;
57-
58-
Ok(())
59-
}

app-server/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ fn main() -> anyhow::Result<()> {
550550
.service(routes::labels::update_label_class)
551551
.service(routes::traces::get_traces_metrics)
552552
.service(routes::provider_api_keys::save_api_key)
553-
.service(routes::spans::create_span),
553+
.service(routes::spans::create_span)
554554
)
555555
.service(routes::probes::check_health)
556556
.service(routes::probes::check_ready)

app-server/src/routes/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ pub mod error;
55
pub mod evaluations;
66
pub mod labels;
77
pub mod probes;
8-
pub mod projects;
98
pub mod provider_api_keys;
109
pub mod spans;
1110
pub mod traces;

app-server/src/routes/projects.rs

Lines changed: 0 additions & 24 deletions
This file was deleted.

app-server/src/traces/consumer.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ use crate::{
1313
features::{Feature, is_feature_enabled},
1414
mq::{MessageQueue, MessageQueueDeliveryTrait, MessageQueueReceiverTrait, MessageQueueTrait},
1515
storage::Storage,
16+
traces::IngestedBytes,
17+
utils::estimate_json_size,
1618
};
1719

1820
pub async fn process_queue_spans(
@@ -100,8 +102,15 @@ async fn inner_process_queue_spans(
100102
}
101103
}
102104
}
103-
104105
let mut span: Span = rabbitmq_span_message.span;
106+
let events = rabbitmq_span_message.events;
107+
108+
// Make sure we count the sizes before any processing, as soon as
109+
// we pick up the span from the queue.
110+
let span_bytes = estimate_json_size(
111+
&serde_json::to_value(&span.get_attributes().attributes).unwrap_or_default(),
112+
);
113+
let events_bytes = estimate_json_size(&serde_json::to_value(&events).unwrap_or_default());
105114

106115
// Parse and enrich span attributes for input/output extraction
107116
// This heavy processing is done on the consumer side
@@ -121,12 +130,14 @@ async fn inner_process_queue_spans(
121130
}
122131
}
123132

124-
let events = rabbitmq_span_message.events;
125-
126133
process_spans_and_events(
127134
&mut span,
128135
events,
129136
&rabbitmq_span_message.project_id,
137+
&IngestedBytes {
138+
span_bytes,
139+
events_bytes,
140+
},
130141
db.clone(),
131142
clickhouse.clone(),
132143
cache.clone(),

app-server/src/traces/mod.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ use crate::{
2121
provider::convert_span_to_provider_format,
2222
utils::{get_llm_usage_for_span, record_labels_to_db_and_ch, record_span_to_db},
2323
},
24-
utils::estimate_json_size,
2524
};
2625

2726
pub mod attributes;
@@ -39,10 +38,16 @@ pub const OBSERVATIONS_QUEUE: &str = "observations_queue";
3938
pub const OBSERVATIONS_EXCHANGE: &str = "observations_exchange";
4039
pub const OBSERVATIONS_ROUTING_KEY: &str = "observations_routing_key";
4140

41+
pub struct IngestedBytes {
42+
pub span_bytes: usize,
43+
pub events_bytes: usize,
44+
}
45+
4246
pub async fn process_spans_and_events(
4347
span: &mut Span,
4448
events: Vec<Event>,
4549
project_id: &Uuid,
50+
ingested_bytes: &IngestedBytes,
4651
db: Arc<DB>,
4752
clickhouse: clickhouse::Client,
4853
cache: Arc<Cache>,
@@ -120,9 +125,7 @@ pub async fn process_spans_and_events(
120125
let _ = acker.ack().await.map_err(|e| {
121126
log::error!("Failed to ack MQ delivery (span): {:?}", e);
122127
});
123-
estimate_json_size(
124-
&serde_json::to_value(&span.get_attributes().attributes).unwrap_or_default(),
125-
)
128+
ingested_bytes.span_bytes
126129
}
127130
Err(e) => {
128131
log::error!(
@@ -147,7 +150,7 @@ pub async fn process_spans_and_events(
147150
}
148151

149152
let recorded_events_bytes = match record_events(db.clone(), clickhouse.clone(), &events).await {
150-
Ok(_) => estimate_json_size(&serde_json::to_value(&events).unwrap_or_default()),
153+
Ok(_) => ingested_bytes.events_bytes,
151154
Err(e) => {
152155
log::error!("Failed to record events: {:?}", e);
153156
0
@@ -157,7 +160,7 @@ pub async fn process_spans_and_events(
157160
if let Err(e) = increment_project_spans_bytes_ingested(
158161
&db.pool,
159162
&project_id,
160-
recorded_span_bytes + recorded_events_bytes,
163+
recorded_events_bytes + recorded_span_bytes,
161164
)
162165
.await
163166
{

docker-compose-full.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ services:
128128
CLICKHOUSE_USER: ${CLICKHOUSE_USER}
129129
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
130130
OPENAI_API_KEY: ${OPENAI_API_KEY}
131+
AEAD_SECRET_KEY: ${AEAD_SECRET_KEY}
131132

132133
volumes:
133134
clickhouse-data:

docker-compose-local-build.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@ services:
2525
- type: volume
2626
source: clickhouse-logs
2727
target: /var/log/clickhouse-server/
28-
- type: bind
29-
source: ./clickhouse/config/users.xml
30-
target: /etc/clickhouse-server/users.d/users.xml
31-
read_only: true
28+
environment:
29+
CLICKHOUSE_USER: ${CLICKHOUSE_USER}
30+
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
3231
ulimits:
3332
nofile:
3433
soft: 262144
@@ -80,8 +79,6 @@ services:
8079
- "${APP_SERVER_GRPC_HOST_PORT:-8001}:8001"
8180
build:
8281
context: ./app-server
83-
args:
84-
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
8582
container_name: app-server
8683
depends_on:
8784
postgres:
@@ -103,6 +100,8 @@ services:
103100
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
104101
ENVIRONMENT: FULL
105102
AGENT_MANAGER_URL: http://agent-manager:8901
103+
AEAD_SECRET_KEY: ${AEAD_SECRET_KEY}
104+
106105
frontend:
107106
build:
108107
context: ./frontend
@@ -124,6 +123,7 @@ services:
124123
CLICKHOUSE_USER: ${CLICKHOUSE_USER}
125124
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
126125
OPENAI_API_KEY: ${OPENAI_API_KEY}
126+
AEAD_SECRET_KEY: ${AEAD_SECRET_KEY}
127127

128128
volumes:
129129
clickhouse-data:

0 commit comments

Comments
 (0)