Correct the recording of excess work
This commit is contained in:
parent
376176eba3
commit
a73c233154
2 changed files with 10 additions and 8 deletions
|
@ -73,7 +73,7 @@
|
||||||
{info, "Rolling level zero to filename ~s"}},
|
{info, "Rolling level zero to filename ~s"}},
|
||||||
{"P0020",
|
{"P0020",
|
||||||
{info, "Work at Level ~w to be scheduled for ~w with ~w "
|
{info, "Work at Level ~w to be scheduled for ~w with ~w "
|
||||||
++ "queue items outstanding"}},
|
++ "queue items outstanding at all levels"}},
|
||||||
{"P0021",
|
{"P0021",
|
||||||
{info, "Allocation of work blocked as L0 pending"}},
|
{info, "Allocation of work blocked as L0 pending"}},
|
||||||
{"P0022",
|
{"P0022",
|
||||||
|
|
|
@ -787,15 +787,16 @@ return_work(State, From) ->
|
||||||
{WorkQ, BasementL} = assess_workqueue([], 0, State#state.manifest, 0),
|
{WorkQ, BasementL} = assess_workqueue([], 0, State#state.manifest, 0),
|
||||||
case length(WorkQ) of
|
case length(WorkQ) of
|
||||||
L when L > 0 ->
|
L when L > 0 ->
|
||||||
[{SrcLevel, Manifest}|OtherWork] = WorkQ,
|
Excess = lists:foldl(fun({_, _, OH}, Acc) -> Acc+OH end, 0, WorkQ),
|
||||||
leveled_log:log("P0020", [SrcLevel, From, length(OtherWork)]),
|
[{SrcLevel, Manifest, _Overhead}|_OtherWork] = WorkQ,
|
||||||
|
leveled_log:log("P0020", [SrcLevel, From, Excess]),
|
||||||
IsBasement = if
|
IsBasement = if
|
||||||
SrcLevel + 1 == BasementL ->
|
SrcLevel + 1 == BasementL ->
|
||||||
true;
|
true;
|
||||||
true ->
|
true ->
|
||||||
false
|
false
|
||||||
end,
|
end,
|
||||||
Backlog = L >= ?WORKQUEUE_BACKLOG_TOLERANCE,
|
Backlog = Excess >= ?WORKQUEUE_BACKLOG_TOLERANCE,
|
||||||
case State#state.levelzero_pending of
|
case State#state.levelzero_pending of
|
||||||
true ->
|
true ->
|
||||||
% Once the L0 file is completed there will be more work
|
% Once the L0 file is completed there will be more work
|
||||||
|
@ -1095,8 +1096,9 @@ assess_workqueue(WorkQ, LevelToAssess, Man, BasementLevel) ->
|
||||||
maybe_append_work(WorkQ, Level, Manifest,
|
maybe_append_work(WorkQ, Level, Manifest,
|
||||||
MaxFiles, FileCount)
|
MaxFiles, FileCount)
|
||||||
when FileCount > MaxFiles ->
|
when FileCount > MaxFiles ->
|
||||||
leveled_log:log("P0024", [FileCount - MaxFiles, Level]),
|
Overhead = FileCount - MaxFiles,
|
||||||
lists:append(WorkQ, [{Level, Manifest}]);
|
leveled_log:log("P0024", [Overhead, Level]),
|
||||||
|
lists:append(WorkQ, [{Level, Manifest, Overhead}]);
|
||||||
maybe_append_work(WorkQ, _Level, _Manifest,
|
maybe_append_work(WorkQ, _Level, _Manifest,
|
||||||
_MaxFiles, _FileCount) ->
|
_MaxFiles, _FileCount) ->
|
||||||
WorkQ.
|
WorkQ.
|
||||||
|
@ -1246,7 +1248,7 @@ compaction_work_assessment_test() ->
|
||||||
{{o, "B2", "K3", null}, {o, "B4", "K4", null}, dummy_pid}],
|
{{o, "B2", "K3", null}, {o, "B4", "K4", null}, dummy_pid}],
|
||||||
Manifest = [{0, L0}, {1, L1}],
|
Manifest = [{0, L0}, {1, L1}],
|
||||||
{WorkQ1, 1} = assess_workqueue([], 0, Manifest, 0),
|
{WorkQ1, 1} = assess_workqueue([], 0, Manifest, 0),
|
||||||
?assertMatch(WorkQ1, [{0, Manifest}]),
|
?assertMatch([{0, Manifest, 1}], WorkQ1),
|
||||||
L1Alt = lists:append(L1,
|
L1Alt = lists:append(L1,
|
||||||
[{{o, "B5", "K0001", null}, {o, "B5", "K9999", null},
|
[{{o, "B5", "K0001", null}, {o, "B5", "K9999", null},
|
||||||
dummy_pid},
|
dummy_pid},
|
||||||
|
@ -1264,7 +1266,7 @@ compaction_work_assessment_test() ->
|
||||||
dummy_pid}]),
|
dummy_pid}]),
|
||||||
Manifest3 = [{0, []}, {1, L1Alt}],
|
Manifest3 = [{0, []}, {1, L1Alt}],
|
||||||
{WorkQ3, 1} = assess_workqueue([], 0, Manifest3, 0),
|
{WorkQ3, 1} = assess_workqueue([], 0, Manifest3, 0),
|
||||||
?assertMatch(WorkQ3, [{1, Manifest3}]).
|
?assertMatch([{1, Manifest3, 1}], WorkQ3).
|
||||||
|
|
||||||
confirm_delete_test() ->
|
confirm_delete_test() ->
|
||||||
Filename = 'test.sft',
|
Filename = 'test.sft',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue