diff options
author | Tony Sun <tony.sun427@gmail.com> | 2020-07-23 11:26:26 -0700 |
---|---|---|
committer | Tony Sun <tony.sun427@gmail.com> | 2020-07-23 11:26:26 -0700 |
commit | 9a62255ccc6984855418627234288665847c2caf (patch) | |
tree | 13eb6793b6893f2ddace62142bde0877cae4726e | |
parent | 56bb3bed8efbc74f0786dfc4bfa9c8d436471fdd (diff) | |
download | couchdb-9a62255ccc6984855418627234288665847c2caf.tar.gz |
scrub extra info from get_active_job_ids
-rw-r--r-- | src/couch_jobs/src/couch_jobs.erl | 18 | ||||
-rw-r--r-- | src/fabric/src/fabric2_active_tasks.erl | 24 |
2 files changed, 25 insertions, 17 deletions
diff --git a/src/couch_jobs/src/couch_jobs.erl b/src/couch_jobs/src/couch_jobs.erl index c99034236..1610b0f3a 100644 --- a/src/couch_jobs/src/couch_jobs.erl +++ b/src/couch_jobs/src/couch_jobs.erl @@ -19,7 +19,8 @@ remove/3, get_job_data/3, get_job_state/3, - get_active_jobs/2, + get_active_jobs_ids/2, + get_types/1, % Job processing accept/1, @@ -105,11 +106,20 @@ get_job_state(Tx, Type, JobId) when is_binary(JobId) -> end). --spec get_active_jobs(jtx(), job_type()) -> {ok, job_data()} | {error, +-spec get_active_jobs_ids(jtx(), job_type()) -> [job_id()] | {error, any()}. -get_active_jobs(Tx, Type) -> +get_active_jobs_ids(Tx, Type) -> couch_jobs_fdb:tx(couch_jobs_fdb:get_jtx(Tx), fun(JTx) -> - couch_jobs_fdb:get_active_since(JTx, Type, {versionstamp, 0, 0}) + Since = couch_jobs_fdb:get_active_since(JTx, Type, + {versionstamp, 0, 0}), + maps:keys(Since) + end). + + +-spec get_types(jtx()) -> [job_type()] | {error, any()}. +get_types(Tx) -> + couch_jobs_fdb:tx(couch_jobs_fdb:get_jtx(Tx), fun(JTx) -> + couch_jobs_fdb:get_types(JTx) end). diff --git a/src/fabric/src/fabric2_active_tasks.erl b/src/fabric/src/fabric2_active_tasks.erl index 60220c21f..58157d4d2 100644 --- a/src/fabric/src/fabric2_active_tasks.erl +++ b/src/fabric/src/fabric2_active_tasks.erl @@ -13,19 +13,17 @@ get_active_tasks() -> - ActiveTasks = couch_jobs_fdb:tx(couch_jobs_fdb:get_jtx(undefined), - fun(JTx) -> - Types = couch_jobs:get_types(JTx), - lists:foldl(fun(Type, TaskAcc) -> - JobIds = couch_jobs:get_active_jobs(JTx, Type), - Tasks = maps:map(fun(JobId, _) -> - {ok, Data} = couch_jobs:get_job_data(JTx, Type, JobId), - maps:get(?ACTIVE_TASK_INFO, Data #{}) - end, JobIds), - maps:merge(TaskAcc, Tasks) - end, #{}, Types) - end), - maps:values(ActiveTasks). + couch_jobs_fdb:tx(couch_jobs_fdb:get_jtx(undefined), fun(JTx) -> + Types = couch_jobs:get_types(JTx), + lists:foldl(fun(Type, TaskAcc) -> + JobIds = couch_jobs:get_active_jobs_ids(JTx, Type), + Tasks = lists:map(fun(JobId) -> + {ok, Data} = couch_jobs:get_job_data(JTx, Type, JobId), + maps:get(?ACTIVE_TASK_INFO, Data #{}) + end, JobIds), + TaskAcc ++ Tasks + end, [], Types) + end). update_active_task_info(JobData, ActiveTaskInfo) -> |