Skip to content

Commit 34410cd

Browse files
committed
Cleanup
1 parent ae28869 commit 34410cd

File tree

5 files changed

+40
-15
lines changed

5 files changed

+40
-15
lines changed

rust/worker/src/execution/operators/commit_segment_writer.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ impl<'a> Operator<CommitSegmentWriterInput<'a>, CommitSegmentWriterOutput>
6767
.finish()
6868
.instrument(tracing::info_span!(
6969
"segment_writer.finish()",
70+
otel.name = format!(".finish() on {:?}", input.segment_writer.get_name()),
7071
segment = input.segment_writer.get_name()
7172
))
7273
.await

rust/worker/src/execution/operators/flush_segment_writer.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ impl Operator<FlushSegmentWriterInput, FlushSegmentWriterOutput> for FlushSegmen
6969
.clone()
7070
.flush()
7171
.instrument(trace_span!(
72-
"flush segment",
72+
"Flush segment",
73+
otel.name = format!("Flush {:?}", input.segment_flusher.get_name()),
7374
segment = input.segment_flusher.get_name()
7475
))
7576
.await?;

rust/worker/src/execution/orchestration/compact.rs

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ enum ExecutionState {
8686
Pending,
8787
PullLogs,
8888
Partition,
89-
Materialize,
90-
ApplyingCommittingFlushing,
89+
MaterializeApplyCommitFlush,
9190
Register,
9291
}
9392

@@ -108,8 +107,9 @@ pub struct CompactOrchestrator {
108107
pulled_log_offset: Option<i64>,
109108
// Dispatcher
110109
dispatcher: ComponentHandle<Dispatcher>,
111-
// number of write segments tasks // todo
110+
// Tracks the total remaining number of ApplyLogToSegmentWriter tasks per segment
112111
num_uncompleted_log_apply_tasks: HashMap<SegmentUuid, usize>,
112+
// Tracks the total remaining number of FlushSegmentWriter tasks
113113
num_uncompleted_flush_tasks: usize,
114114
// Result Channel
115115
result_channel:
@@ -124,6 +124,7 @@ pub struct CompactOrchestrator {
124124
MetadataSegmentWriter<'static>,
125125
)>,
126126
flush_results: Vec<SegmentFlushInfo>,
127+
// We track a parent span for each segment type so we can group all the spans for a given segment type (makes the resulting trace much easier to read)
127128
segment_spans: HashMap<SegmentUuid, Span>,
128129
}
129130

@@ -157,6 +158,8 @@ enum CompactionError {
157158
SystemTimeError(#[from] std::time::SystemTimeError),
158159
#[error("Result channel dropped")]
159160
ResultChannelDropped,
161+
#[error("Invariant violation: {}", .0)]
162+
InvariantViolation(&'static str),
160163
}
161164

162165
impl ChromaError for CompactionError {
@@ -290,7 +293,7 @@ impl CompactOrchestrator {
290293
>,
291294
ctx: &crate::system::ComponentContext<CompactOrchestrator>,
292295
) {
293-
self.state = ExecutionState::Materialize;
296+
self.state = ExecutionState::MaterializeApplyCommitFlush;
294297

295298
let record_segment = match self.get_segment(SegmentType::BlockfileRecord).await {
296299
Ok(segment) => segment,
@@ -389,8 +392,16 @@ impl CompactOrchestrator {
389392
}
390393

391394
fn get_segment_flusher_span(&mut self, flusher: &ChromaSegmentFlusher) -> Span {
392-
let span = self.segment_spans.get(&flusher.get_id()).unwrap(); // todo
393-
span.clone()
395+
match self.segment_spans.get(&flusher.get_id()) {
396+
Some(span) => span.clone(),
397+
None => {
398+
tracing::error!(
399+
"No span found for segment: {:?}. This should never happen because get_segment_writer_span() should have previously created a span.",
400+
flusher.get_name()
401+
);
402+
Span::current()
403+
}
404+
}
394405
}
395406

396407
async fn dispatch_apply_log_to_segment_writer_task(
@@ -452,7 +463,7 @@ impl CompactOrchestrator {
452463

453464
async fn dispatch_segment_flush(
454465
&mut self,
455-
segment_flusher: ChromaSegmentFlusher, // todo: rename
466+
segment_flusher: ChromaSegmentFlusher,
456467
self_address: Box<
457468
dyn ReceiverForMessage<
458469
TaskResult<FlushSegmentWriterOutput, FlushSegmentWriterOperatorError>,
@@ -806,10 +817,23 @@ impl
806817
.entry(message.segment_writer.get_id())
807818
.and_modify(|e| *e -= 1);
808819

809-
let num_tasks_left = self
820+
let num_tasks_left = match self
810821
.num_uncompleted_log_apply_tasks
811822
.get(&message.segment_writer.get_id())
812-
.unwrap(); // todo
823+
{
824+
Some(num_tasks_left) => num_tasks_left,
825+
None => {
826+
terminate_with_error(
827+
self.result_channel.take(),
828+
Box::new(CompactionError::InvariantViolation(
829+
"Segment writer not found",
830+
)),
831+
ctx,
832+
);
833+
return;
834+
}
835+
};
836+
813837
if *num_tasks_left == 0 {
814838
self.dispatch_segment_writer_commit(message.segment_writer, ctx.receiver())
815839
.await;
@@ -862,9 +886,8 @@ impl Handler<TaskResult<FlushSegmentWriterOutput, FlushSegmentWriterOperatorErro
862886
let message = message.into_inner();
863887
match message {
864888
Ok(message) => {
865-
self.segment_spans
866-
.remove(&message.flush_info.segment_id)
867-
.unwrap(); // todo
889+
// Drops the span so that the end timestamp is accurate
890+
let _ = self.segment_spans.remove(&message.flush_info.segment_id);
868891

869892
self.flush_results.push(message.flush_info);
870893
self.num_uncompleted_flush_tasks -= 1;

rust/worker/src/segment/distributed_hnsw_segment.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub struct HnswIndexParamsFromSegment {
2525
}
2626

2727
#[derive(Clone)]
28-
pub(crate) struct DistributedHNSWSegmentWriter {
28+
pub struct DistributedHNSWSegmentWriter {
2929
index: HnswIndexRef,
3030
hnsw_index_provider: HnswIndexProvider,
3131
pub(crate) id: SegmentUuid,

rust/worker/src/segment/types.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,7 @@ pub trait SegmentFlusher {
792792
pub enum ChromaSegmentWriter<'a> {
793793
RecordSegment(RecordSegmentWriter),
794794
MetadataSegment(MetadataSegmentWriter<'a>),
795-
DistributedHNSWSegment(Box<DistributedHNSWSegmentWriter>), // todo: should be boxed?
795+
DistributedHNSWSegment(Box<DistributedHNSWSegmentWriter>),
796796
}
797797

798798
impl<'a> SegmentWriter for ChromaSegmentWriter<'a> {

0 commit comments

Comments
 (0)