From f45aff966f9081d2fe35b252ffd2d30401681bf3 Mon Sep 17 00:00:00 2001 From: Hans Svensson Date: Wed, 10 Jun 2020 09:58:30 +0200 Subject: [PATCH 1/3] [] means right now when scheduling, sigh... --- apps/roster/src/protocol/roster_schedule.erl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/roster/src/protocol/roster_schedule.erl b/apps/roster/src/protocol/roster_schedule.erl index 9ac200be8..0c514c6bf 100644 --- a/apps/roster/src/protocol/roster_schedule.erl +++ b/apps/roster/src/protocol/roster_schedule.erl @@ -36,9 +36,13 @@ info(#'History'{feed = {act, <<"publish">>, PhoneId} = Feed, size = N0, end, {reply, {bert, Reply}, Req, State}; -info(#'Job'{id = [], feed_id = {act, <<"publish">>, PhoneId} = Feed, time = Time, +info(#'Job'{id = [], feed_id = {act, <<"publish">>, PhoneId} = Feed, time = Time0, data = [#'Message'{} | _], status = init} = J0, Req, #cx{params = ClientId, client_pid = C} = S) -> - ?ROSTER_LOG_REQ('Job', init, ClientId, "Feed=~p, Time=~p", [Feed, Time]), + ?ROSTER_LOG_REQ('Job', init, ClientId, "Feed=~p, Time=~p", [Feed, Time0]), + Time = case Time0 of + [] -> os:system_time(millisecond); + T when is_integer(T) -> T + end, JId = kvs:next_id('Job', 1), J1 = J0#'Job'{id = JId, status = pending}, Writer = case kvs_stream:load_writer(Feed) of -- GitLab From 285ab71a5f5a47f4575db59f0d1f9e28d495c5f4 Mon Sep 17 00:00:00 2001 From: Hans Svensson Date: Wed, 10 Jun 2020 09:59:16 +0200 Subject: [PATCH 2/3] Multiple messages may be sent in one Job --- apps/roster/src/protocol/roster_schedule.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/roster/src/protocol/roster_schedule.erl b/apps/roster/src/protocol/roster_schedule.erl index 0c514c6bf..ff5ad1841 100644 --- a/apps/roster/src/protocol/roster_schedule.erl +++ b/apps/roster/src/protocol/roster_schedule.erl @@ -151,8 +151,8 @@ do_scheduled_work({_TimeStamp, JobId} = SchedKey, MqttClient) -> {aborted, Reason} -> ?LOG_INFO("Worker for ~p aborted, reason: ~p", [JobId, Reason]) end. -do_work(MqttClient, #'Job'{feed_id = #act{data = _PhoneId}, data = [#'Message'{ } = Msg]}) -> - send_msg(MqttClient, Msg). +do_work(MqttClient, #'Job'{feed_id = #act{data = _PhoneId}, data = [#'Message'{} | _] = Msgs}) -> + [send_msg(MqttClient, Msg) || Msg = #'Message'{} <- Msgs]. complete_job(MqttClient, Job = #'Job'{feed_id = #act{data = PhoneId}}) -> Job1 = Job#'Job'{status = complete, data = [{done, os:system_time(millisecond)}]}, -- GitLab From 11f97f468f02804801d59cdd075ca9e0be9e8e78 Mon Sep 17 00:00:00 2001 From: Hans Svensson Date: Wed, 10 Jun 2020 09:59:44 +0200 Subject: [PATCH 3/3] Getting the job history of job 0 is trivial --- apps/roster/src/protocol/roster_schedule.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/roster/src/protocol/roster_schedule.erl b/apps/roster/src/protocol/roster_schedule.erl index ff5ad1841..d1469ed5c 100644 --- a/apps/roster/src/protocol/roster_schedule.erl +++ b/apps/roster/src/protocol/roster_schedule.erl @@ -218,6 +218,7 @@ job_history(#'History'{feed = Feed, size = N0, entity_id = JId0} = History) -> Jobs = get_job_history(JId, N), History#'History'{data = Jobs, size = length(Jobs)}. +get_job_history(0, _) -> []; get_job_history(JId, N) -> {Dir, Limit} = if N < 0 -> {bwd, -N}; true -> {fwd, N} end, FoldFun = -- GitLab