@@ -404,17 +404,23 @@ calc_stats(#handoff_status{stats=Stats,timestamp=StartTS,size=Size}) ->
404
404
{pct_done_decimal , Done }]
405
405
end .
406
406
407
+ -spec get_size (db_size ()|undefined ) -> db_size_result ()|undefined .
407
408
get_size ({F , dynamic }) ->
408
409
F ();
409
410
get_size (S ) ->
410
411
S .
411
412
412
- calc_pct_done (_ , _ , undefined ) ->
413
- undefined ;
414
- calc_pct_done (Objs , _ , {Size , objects }) ->
413
+ -spec calc_pct_done (
414
+ non_neg_integer (),
415
+ non_neg_integer (),
416
+ db_size_result () | undefined ) -> float () | undefined .
417
+ calc_pct_done (Objs , _ , {Size , objects }) when is_integer (Size ), Size > 0 ->
415
418
Objs / Size ;
416
- calc_pct_done (_ , Bytes , {Size , bytes }) ->
417
- Bytes / Size .
419
+ calc_pct_done (_ , Bytes , {Size , bytes }) when is_integer (Size ), Size > 0 ->
420
+ Bytes / Size ;
421
+ calc_pct_done (_ , _ , _ ) ->
422
+ % Will normally expect in this case that db_size_result is undefined
423
+ undefined .
418
424
419
425
filter (none ) ->
420
426
fun (_ ) -> true end ;
@@ -588,12 +594,17 @@ update_stats(StatsUpdate, Stats) ->
588
594
Stats3 = dict :update_counter (bytes , Bytes , Stats2 ),
589
595
dict :store (last_update , LU , Stats3 ).
590
596
591
- validate_size (Size = {N , U }) when is_number (N ) andalso
592
- N > 0 andalso
593
- (U =:= bytes orelse U =:= objects ) ->
597
+
598
+ -spec validate_size (
599
+ db_size ()|{db_dynamic_size_fun (), async }) -> db_size ()|undefined .
600
+ validate_size (Size = {N , U })
601
+ when
602
+ is_number (N ), N > 0 , (U =:= bytes orelse U =:= objects ) ->
594
603
Size ;
595
- validate_size (Size = {F , dynamic }) when is_function (F ) ->
604
+ validate_size (Size = {F , dynamic }) when is_function (F , 0 ) ->
596
605
Size ;
606
+ validate_size ({F , async }) when is_function (F , 0 ) ->
607
+ validate_size (F ());
597
608
validate_size (_ ) ->
598
609
undefined .
599
610
0 commit comments