@@ -640,15 +640,21 @@ pub struct LogServer {
640
640
}
641
641
642
642
impl LogServer {
643
- fn should_initialize_log ( & self , collection : CollectionUuid ) -> bool {
644
- todo ! ( ) ;
645
- }
646
-
647
643
async fn forward_push_logs (
648
644
& self ,
649
645
request : Request < PushLogsRequest > ,
650
646
) -> Result < Response < PushLogsResponse > , Status > {
651
- todo ! ( ) ;
647
+ if let Some ( proxy) = self . proxy . as_ref ( ) {
648
+ let resp = proxy. clone ( ) . push_logs ( request) . await ?;
649
+ let resp = resp. into_inner ( ) ;
650
+ if resp. log_is_sealed {
651
+ todo ! ( ) ;
652
+ } else {
653
+ Ok ( Response :: new ( resp) )
654
+ }
655
+ } else {
656
+ Err ( Status :: failed_precondition ( "proxy not initialized" ) )
657
+ }
652
658
}
653
659
654
660
async fn forward_scout_logs (
@@ -734,19 +740,6 @@ impl LogService for LogServer {
734
740
{
735
741
Ok ( log) => log,
736
742
Err ( wal3:: Error :: UninitializedLog ) => {
737
- if self . should_initialize_log ( collection_id) {
738
- if let Err ( err) = LogWriter :: initialize (
739
- & self . config . writer ,
740
- & self . storage ,
741
- & prefix,
742
- "push_logs initializer" ,
743
- )
744
- . await
745
- {
746
- return Err ( Status :: unknown ( err. to_string ( ) ) ) ;
747
- }
748
- return Box :: pin ( self . push_logs ( Request :: new ( push_logs) ) ) . await ;
749
- }
750
743
return self . forward_push_logs ( Request :: new ( push_logs) ) . await ;
751
744
}
752
745
Err ( err) => {
@@ -800,15 +793,7 @@ impl LogService for LogServer {
800
793
let limit_position = match log_reader. maximum_log_position ( ) . await {
801
794
Ok ( limit_position) => limit_position,
802
795
Err ( wal3:: Error :: UninitializedLog ) => {
803
- // NOTE(rescrv): In this case, what we have is a guarantee that we know the
804
- // log is ours. This only comes from the by-tenant or by-collection alt-log
805
- // shunts. The log is uninitialized, so we know it's not because
806
- // has_manifest().
807
- if self . should_initialize_log ( collection_id) {
808
- LogPosition :: from_offset ( 1 )
809
- } else {
810
- return self . forward_scout_logs ( Request :: new ( scout_logs) ) . await ;
811
- }
796
+ return self . forward_scout_logs ( Request :: new ( scout_logs) ) . await ;
812
797
}
813
798
Err ( err) => {
814
799
if err. code ( ) == chroma_error:: ErrorCodes :: FailedPrecondition {
@@ -861,13 +846,7 @@ impl LogService for LogServer {
861
846
{
862
847
Ok ( fragments) => fragments,
863
848
Err ( wal3:: Error :: UninitializedLog ) => {
864
- // NOTE(rescrv): Same as with ScoutLogs.
865
- if self . should_initialize_log ( collection_id) {
866
- tracing:: info!( "Uninitialized log for collection {}" , collection_id) ;
867
- return Ok ( Response :: new ( PullLogsResponse { records : vec ! [ ] } ) ) ;
868
- } else {
869
- return self . forward_pull_logs ( Request :: new ( pull_logs) ) . await ;
870
- }
849
+ return self . forward_pull_logs ( Request :: new ( pull_logs) ) . await ;
871
850
}
872
851
Err ( err) => {
873
852
return Err ( Status :: new ( err. code ( ) . into ( ) , err. to_string ( ) ) ) ;
@@ -953,25 +932,7 @@ impl LogService for LogServer {
953
932
if let Err ( err) = log_reader. maximum_log_position ( ) . await {
954
933
match err {
955
934
wal3:: Error :: UninitializedLog => {
956
- // NOTE(rescrv): Same as with ScoutLogs.
957
- if self . should_initialize_log ( source_collection_id) {
958
- LogWriter :: initialize (
959
- & self . config . writer ,
960
- & storage,
961
- & source_prefix,
962
- "fork logs initializer" ,
963
- )
964
- . await
965
- . map_err ( |err| {
966
- Status :: new (
967
- err. code ( ) . into ( ) ,
968
- format ! ( "Failed to initialize log for fork: {err:?}" ) ,
969
- )
970
- } ) ?;
971
- return Box :: pin ( self . fork_logs ( Request :: new ( request) ) ) . await ;
972
- } else {
973
- return self . forward_fork_logs ( Request :: new ( request) ) . await ;
974
- }
935
+ return self . forward_fork_logs ( Request :: new ( request) ) . await ;
975
936
}
976
937
_ => {
977
938
return Err ( Status :: new (
@@ -1205,15 +1166,9 @@ impl LogService for LogServer {
1205
1166
1206
1167
let res = log_reader. maximum_log_position ( ) . await ;
1207
1168
if let Err ( wal3:: Error :: UninitializedLog ) = res {
1208
- if self . should_initialize_log ( collection_id) {
1209
- return Err ( Status :: failed_precondition (
1210
- "uninitialized log has its cursor updated" ,
1211
- ) ) ;
1212
- } else {
1213
- return self
1214
- . forward_update_collection_log_offset ( Request :: new ( request) )
1215
- . await ;
1216
- }
1169
+ return self
1170
+ . forward_update_collection_log_offset ( Request :: new ( request) )
1171
+ . await ;
1217
1172
}
1218
1173
res. map_err ( |err| Status :: unknown ( err. to_string ( ) ) ) ?;
1219
1174
0 commit comments