@@ -5,10 +5,10 @@ use fusio::DynFs;
5
5
use fusio_parquet:: writer:: AsyncWriter ;
6
6
use futures_util:: StreamExt ;
7
7
use parquet:: arrow:: { AsyncArrowWriter , ProjectionMask } ;
8
- use parquet_lru:: LruCache ;
9
8
use thiserror:: Error ;
10
9
use tokio:: sync:: oneshot;
11
10
11
+ use crate :: ParquetLru ;
12
12
use crate :: {
13
13
fs:: { manager:: StoreManager , FileId , FileType } ,
14
14
inmem:: {
@@ -60,13 +60,10 @@ where
60
60
}
61
61
}
62
62
63
- pub ( crate ) async fn check_then_compaction < C > (
63
+ pub ( crate ) async fn check_then_compaction (
64
64
& mut self ,
65
- parquet_lru_cache : C ,
66
- ) -> Result < ( ) , CompactionError < R > >
67
- where
68
- C : LruCache < FileId > + Unpin ,
69
- {
65
+ parquet_lru_cache : ParquetLru ,
66
+ ) -> Result < ( ) , CompactionError < R > > {
70
67
let mut guard = self . schema . write ( ) . await ;
71
68
72
69
guard. trigger . reset ( ) ;
@@ -114,7 +111,7 @@ where
114
111
& mut delete_gens,
115
112
& guard. record_instance ,
116
113
& self . manager ,
117
- & parquet_lru_cache,
114
+ parquet_lru_cache,
118
115
)
119
116
. await ?;
120
117
}
@@ -193,7 +190,7 @@ where
193
190
}
194
191
195
192
#[ allow( clippy:: too_many_arguments) ]
196
- pub ( crate ) async fn major_compaction < C > (
193
+ pub ( crate ) async fn major_compaction (
197
194
version : & Version < R > ,
198
195
option : & DbOption < R > ,
199
196
mut min : & R :: Key ,
@@ -202,11 +199,8 @@ where
202
199
delete_gens : & mut Vec < ( FileId , usize ) > ,
203
200
instance : & RecordInstance ,
204
201
manager : & StoreManager ,
205
- parquet_cache : & C ,
206
- ) -> Result < ( ) , CompactionError < R > >
207
- where
208
- C : LruCache < FileId > + Unpin ,
209
- {
202
+ parquet_cache : ParquetLru ,
203
+ ) -> Result < ( ) , CompactionError < R > > {
210
204
let mut level = 0 ;
211
205
212
206
while level < MAX_LEVEL - 2 {
@@ -391,18 +385,15 @@ where
391
385
( meet_scopes_l, start_l, end_l - 1 )
392
386
}
393
387
394
- async fn build_tables < ' scan , C > (
388
+ async fn build_tables < ' scan > (
395
389
option : & DbOption < R > ,
396
390
version_edits : & mut Vec < VersionEdit < <R as Record >:: Key > > ,
397
391
level : usize ,
398
- streams : Vec < ScanStream < ' scan , R , C > > ,
392
+ streams : Vec < ScanStream < ' scan , R > > ,
399
393
instance : & RecordInstance ,
400
394
fs : & Arc < dyn DynFs > ,
401
- ) -> Result < ( ) , CompactionError < R > >
402
- where
403
- C : LruCache < FileId > + Unpin ,
404
- {
405
- let mut stream = MergeStream :: < R , C > :: from_vec ( streams, u32:: MAX . into ( ) ) . await ?;
395
+ ) -> Result < ( ) , CompactionError < R > > {
396
+ let mut stream = MergeStream :: < R > :: from_vec ( streams, u32:: MAX . into ( ) ) . await ?;
406
397
407
398
// Kould: is the capacity parameter necessary?
408
399
let mut builder = R :: Columns :: builder ( & instance. arrow_schema :: < R > ( ) , 8192 ) ;
@@ -529,8 +520,9 @@ pub(crate) mod tests {
529
520
use fusio_dispatch:: FsOptions ;
530
521
use fusio_parquet:: writer:: AsyncWriter ;
531
522
use parquet:: arrow:: AsyncArrowWriter ;
532
- use parquet_lru:: NoopCache ;
523
+ use parquet_lru:: { DynLruCache , NoCache } ;
533
524
use tempfile:: TempDir ;
525
+ use ulid:: Ulid ;
534
526
535
527
use crate :: {
536
528
compaction:: Compactor ,
@@ -827,7 +819,7 @@ pub(crate) mod tests {
827
819
& mut vec ! [ ] ,
828
820
& RecordInstance :: Normal ,
829
821
& manager,
830
- & NoopCache :: default ( ) ,
822
+ Arc :: new ( NoCache :: default ( ) ) ,
831
823
)
832
824
. await
833
825
. unwrap ( ) ;
@@ -1219,7 +1211,7 @@ pub(crate) mod tests {
1219
1211
& mut vec ! [ ] ,
1220
1212
& RecordInstance :: Normal ,
1221
1213
& manager,
1222
- & NoopCache :: default ( ) ,
1214
+ Arc :: new ( NoCache :: default ( ) ) ,
1223
1215
)
1224
1216
. await
1225
1217
. unwrap ( ) ;
@@ -1240,7 +1232,7 @@ pub(crate) mod tests {
1240
1232
option. major_default_oldest_table_num = 1 ;
1241
1233
option. trigger_type = TriggerType :: Length ( 5 ) ;
1242
1234
1243
- let db: DB < Test , TokioExecutor , _ > = DB :: new ( option, TokioExecutor :: new ( ) ) . await . unwrap ( ) ;
1235
+ let db: DB < Test , TokioExecutor > = DB :: new ( option, TokioExecutor :: new ( ) ) . await . unwrap ( ) ;
1244
1236
1245
1237
for i in 5 ..9 {
1246
1238
let item = Test {
0 commit comments