@@ -3,6 +3,7 @@ use crate::blockstore::provider::BlockfileProvider;
3
3
use crate :: compactor:: CompactionJob ;
4
4
use crate :: errors:: ChromaError ;
5
5
use crate :: execution:: data:: data_chunk:: Chunk ;
6
+ use crate :: execution:: dispatcher:: Dispatcher ;
6
7
use crate :: execution:: operator:: TaskResult ;
7
8
use crate :: execution:: operators:: flush_s3:: FlushS3Input ;
8
9
use crate :: execution:: operators:: flush_s3:: FlushS3Operator ;
@@ -33,8 +34,9 @@ use crate::sysdb::sysdb::GetCollectionsError;
33
34
use crate :: sysdb:: sysdb:: GetSegmentsError ;
34
35
use crate :: sysdb:: sysdb:: SysDb ;
35
36
use crate :: system:: Component ;
37
+ use crate :: system:: ComponentHandle ;
36
38
use crate :: system:: Handler ;
37
- use crate :: system:: Receiver ;
39
+ use crate :: system:: ReceiverForMessage ;
38
40
use crate :: system:: System ;
39
41
use crate :: types:: LogRecord ;
40
42
use crate :: types:: Segment ;
@@ -92,7 +94,7 @@ pub struct CompactOrchestrator {
92
94
pulled_log_offset : Option < i64 > ,
93
95
record_segment : Option < Segment > ,
94
96
// Dispatcher
95
- dispatcher : Box < dyn Receiver < TaskMessage > > ,
97
+ dispatcher : ComponentHandle < Dispatcher > ,
96
98
// number of write segments tasks
97
99
num_write_tasks : i32 ,
98
100
// Result Channel
@@ -149,7 +151,7 @@ impl CompactOrchestrator {
149
151
sysdb : Box < SysDb > ,
150
152
blockfile_provider : BlockfileProvider ,
151
153
hnsw_index_provider : HnswIndexProvider ,
152
- dispatcher : Box < dyn Receiver < TaskMessage > > ,
154
+ dispatcher : ComponentHandle < Dispatcher > ,
153
155
result_channel : Option <
154
156
tokio:: sync:: oneshot:: Sender < Result < CompactionResponse , Box < dyn ChromaError > > > ,
155
157
> ,
@@ -180,7 +182,7 @@ impl CompactOrchestrator {
180
182
// of the segment, and not fully respect the offset_id from the compaction job
181
183
async fn pull_logs (
182
184
& mut self ,
183
- self_address : Box < dyn Receiver < TaskResult < PullLogsOutput , PullLogsError > > > ,
185
+ self_address : Box < dyn ReceiverForMessage < TaskResult < PullLogsOutput , PullLogsError > > > ,
184
186
) {
185
187
self . state = ExecutionState :: PullLogs ;
186
188
let operator = PullLogsOperator :: new ( self . log . clone ( ) ) ;
@@ -215,7 +217,7 @@ impl CompactOrchestrator {
215
217
async fn partition (
216
218
& mut self ,
217
219
records : Chunk < LogRecord > ,
218
- self_address : Box < dyn Receiver < TaskResult < PartitionOutput , PartitionError > > > ,
220
+ self_address : Box < dyn ReceiverForMessage < TaskResult < PartitionOutput , PartitionError > > > ,
219
221
) {
220
222
self . state = ExecutionState :: Partition ;
221
223
// TODO: make this configurable
@@ -236,7 +238,7 @@ impl CompactOrchestrator {
236
238
& mut self ,
237
239
partitions : Vec < Chunk < LogRecord > > ,
238
240
self_address : Box <
239
- dyn Receiver < TaskResult < WriteSegmentsOutput , WriteSegmentsOperatorError > > ,
241
+ dyn ReceiverForMessage < TaskResult < WriteSegmentsOutput , WriteSegmentsOperatorError > > ,
240
242
> ,
241
243
) {
242
244
self . state = ExecutionState :: Write ;
@@ -282,7 +284,7 @@ impl CompactOrchestrator {
282
284
record_segment_writer : RecordSegmentWriter ,
283
285
hnsw_segment_writer : Box < DistributedHNSWSegmentWriter > ,
284
286
metadata_segment_writer : MetadataSegmentWriter < ' static > ,
285
- self_address : Box < dyn Receiver < TaskResult < FlushS3Output , Box < dyn ChromaError > > > > ,
287
+ self_address : Box < dyn ReceiverForMessage < TaskResult < FlushS3Output , Box < dyn ChromaError > > > > ,
286
288
) {
287
289
self . state = ExecutionState :: Flush ;
288
290
@@ -306,7 +308,7 @@ impl CompactOrchestrator {
306
308
& mut self ,
307
309
log_position : i64 ,
308
310
segment_flush_info : Arc < [ SegmentFlushInfo ] > ,
309
- self_address : Box < dyn Receiver < TaskResult < RegisterOutput , RegisterError > > > ,
311
+ self_address : Box < dyn ReceiverForMessage < TaskResult < RegisterOutput , RegisterError > > > ,
310
312
) {
311
313
self . state = ExecutionState :: Register ;
312
314
let operator = RegisterOperator :: new ( ) ;
@@ -494,7 +496,7 @@ impl Component for CompactOrchestrator {
494
496
}
495
497
496
498
async fn on_start ( & mut self , ctx : & crate :: system:: ComponentContext < Self > ) -> ( ) {
497
- self . pull_logs ( ctx. sender . as_receiver ( ) ) . await ;
499
+ self . pull_logs ( ctx. receiver ( ) ) . await ;
498
500
}
499
501
}
500
502
@@ -528,7 +530,7 @@ impl Handler<TaskResult<PullLogsOutput, PullLogsError>> for CompactOrchestrator
528
530
Some ( record) => {
529
531
self . pulled_log_offset = Some ( record. log_offset ) ;
530
532
println ! ( "Pulled Logs Up To Offset: {:?}" , self . pulled_log_offset) ;
531
- self . partition ( records, ctx. sender . as_receiver ( ) ) . await ;
533
+ self . partition ( records, ctx. receiver ( ) ) . await ;
532
534
}
533
535
None => {
534
536
// Log an error and return
@@ -561,7 +563,7 @@ impl Handler<TaskResult<PartitionOutput, PartitionError>> for CompactOrchestrato
561
563
return ;
562
564
}
563
565
} ;
564
- self . write ( records, _ctx. sender . as_receiver ( ) ) . await ;
566
+ self . write ( records, _ctx. receiver ( ) ) . await ;
565
567
}
566
568
}
567
569
@@ -602,7 +604,7 @@ impl Handler<TaskResult<WriteSegmentsOutput, WriteSegmentsOperatorError>> for Co
602
604
output. record_segment_writer ,
603
605
output. hnsw_segment_writer ,
604
606
output. metadata_segment_writer ,
605
- _ctx. sender . as_receiver ( ) ,
607
+ _ctx. receiver ( ) ,
606
608
)
607
609
. await ;
608
610
}
@@ -623,7 +625,7 @@ impl Handler<TaskResult<FlushS3Output, Box<dyn ChromaError>>> for CompactOrchest
623
625
self . register (
624
626
self . pulled_log_offset . unwrap ( ) ,
625
627
msg. segment_flush_info ,
626
- _ctx. sender . as_receiver ( ) ,
628
+ _ctx. receiver ( ) ,
627
629
)
628
630
. await ;
629
631
}
0 commit comments