diff --git a/src/leveled_codec.erl b/src/leveled_codec.erl index 72b90b0..5303180 100644 --- a/src/leveled_codec.erl +++ b/src/leveled_codec.erl @@ -226,7 +226,9 @@ compact_inkerkvc({{SQN, ?INKT_STND, LK}, V, CrcCheck}, Strategy) -> {TagStrat, {{SQN, ?INKT_KEYD, LK}, {null, KeyDeltas}, CrcCheck}}; TagStrat -> {TagStrat, null} - end. + end; +compact_inkerkvc(_KVC, _Strategy) -> + skip. split_inkvalue(VBin) -> case is_binary(VBin) of diff --git a/src/leveled_iclerk.erl b/src/leveled_iclerk.erl index a060774..c612367 100644 --- a/src/leveled_iclerk.erl +++ b/src/leveled_iclerk.erl @@ -238,19 +238,26 @@ check_single_file(CDB, FilterFun, FilterServer, MaxSQN, SampleSize, BatchSize) - FN = leveled_cdb:cdb_filename(CDB), PositionList = leveled_cdb:cdb_getpositions(CDB, SampleSize), KeySizeList = fetch_inbatches(PositionList, BatchSize, CDB, []), - R0 = lists:foldl(fun(KS, {ActSize, RplSize}) -> - {{SQN, _Type, PK}, Size} = KS, - Check = FilterFun(FilterServer, PK, SQN), - case {Check, SQN > MaxSQN} of - {true, _} -> - {ActSize + Size - ?CRC_SIZE, RplSize}; - {false, true} -> - {ActSize + Size - ?CRC_SIZE, RplSize}; - _ -> - {ActSize, RplSize + Size - ?CRC_SIZE} - end end, - {0, 0}, - KeySizeList), + + FoldFunForSizeCompare = + fun(KS, {ActSize, RplSize}) -> + case KS of + {{SQN, _Type, PK}, Size} -> + Check = FilterFun(FilterServer, PK, SQN), + case {Check, SQN > MaxSQN} of + {true, _} -> + {ActSize + Size - ?CRC_SIZE, RplSize}; + {false, true} -> + {ActSize + Size - ?CRC_SIZE, RplSize}; + _ -> + {ActSize, RplSize + Size - ?CRC_SIZE} + end; + _ -> + {ActSize, RplSize} + end + end, + + R0 = lists:foldl(FoldFunForSizeCompare, {0, 0}, KeySizeList), {ActiveSize, ReplacedSize} = R0, Score = case ActiveSize + ReplacedSize of 0 ->