@@ -355,6 +355,19 @@ impl ProcessorTrait for DefaultProcessor {
355
355
)
356
356
. await ;
357
357
358
+ // These vectors could be super large and take a lot of time to drop, move to background to
359
+ // make it faster.
360
+ tokio:: task:: spawn ( async move {
361
+ drop ( txns) ;
362
+ drop ( block_metadata_transactions) ;
363
+ drop ( write_set_changes) ;
364
+ drop ( move_modules) ;
365
+ drop ( move_resources) ;
366
+ drop ( table_items) ;
367
+ drop ( current_table_items) ;
368
+ drop ( table_metadata) ;
369
+ } ) ;
370
+
358
371
let db_insertion_duration_in_secs = db_insertion_start. elapsed ( ) . as_secs_f64 ( ) ;
359
372
match tx_result {
360
373
Ok ( _) => Ok ( ProcessingResult :: DefaultProcessingResult (
@@ -403,7 +416,7 @@ fn process_transactions(
403
416
TransactionModel :: from_transactions ( & transactions) ;
404
417
let mut block_metadata_transactions = vec ! [ ] ;
405
418
for block_metadata_txn in block_metadata_txns {
406
- block_metadata_transactions. push ( block_metadata_txn. clone ( ) ) ;
419
+ block_metadata_transactions. push ( block_metadata_txn) ;
407
420
}
408
421
let mut move_modules = vec ! [ ] ;
409
422
let mut move_resources = vec ! [ ] ;
@@ -412,19 +425,19 @@ fn process_transactions(
412
425
let mut table_metadata = AHashMap :: new ( ) ;
413
426
for detail in wsc_details {
414
427
match detail {
415
- WriteSetChangeDetail :: Module ( module) => move_modules. push ( module. clone ( ) ) ,
416
- WriteSetChangeDetail :: Resource ( resource) => move_resources. push ( resource. clone ( ) ) ,
428
+ WriteSetChangeDetail :: Module ( module) => move_modules. push ( module) ,
429
+ WriteSetChangeDetail :: Resource ( resource) => move_resources. push ( resource) ,
417
430
WriteSetChangeDetail :: Table ( item, current_item, metadata) => {
418
- table_items. push ( item. clone ( ) ) ;
431
+ table_items. push ( item) ;
419
432
current_table_items. insert (
420
433
(
421
434
current_item. table_handle . clone ( ) ,
422
435
current_item. key_hash . clone ( ) ,
423
436
) ,
424
- current_item. clone ( ) ,
437
+ current_item,
425
438
) ;
426
439
if let Some ( meta) = metadata {
427
- table_metadata. insert ( meta. handle . clone ( ) , meta. clone ( ) ) ;
440
+ table_metadata. insert ( meta. handle . clone ( ) , meta) ;
428
441
}
429
442
} ,
430
443
}
@@ -440,6 +453,11 @@ fn process_transactions(
440
453
. sort_by ( |a, b| ( & a. table_handle , & a. key_hash ) . cmp ( & ( & b. table_handle , & b. key_hash ) ) ) ;
441
454
table_metadata. sort_by ( |a, b| a. handle . cmp ( & b. handle ) ) ;
442
455
456
+ println ! (
457
+ "table_items: {}, current_table_items: {}" ,
458
+ table_items. len( ) ,
459
+ current_table_items. len( )
460
+ ) ;
443
461
if flags. contains ( TableFlags :: MOVE_RESOURCES ) {
444
462
move_resources. clear ( ) ;
445
463
}
0 commit comments