summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Sun <tony.sun427@gmail.com>2020-07-23 11:26:26 -0700
committerTony Sun <tony.sun427@gmail.com>2020-07-23 11:26:26 -0700
commit9a62255ccc6984855418627234288665847c2caf (patch)
tree13eb6793b6893f2ddace62142bde0877cae4726e
parent56bb3bed8efbc74f0786dfc4bfa9c8d436471fdd (diff)
downloadcouchdb-9a62255ccc6984855418627234288665847c2caf.tar.gz
scrub extra info from get_active_job_ids
-rw-r--r--src/couch_jobs/src/couch_jobs.erl18
-rw-r--r--src/fabric/src/fabric2_active_tasks.erl24
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) ->