From 49681a835eb9a3365c0adaa2faa95b2c85bda10c Mon Sep 17 00:00:00 2001 From: Hans Svensson Date: Mon, 25 May 2020 10:07:07 +0200 Subject: [PATCH 1/2] Don't add initial "History was removed" message to MeChat --- apps/roster/src/protocol/roster_message.erl | 29 +++++---------------- eqc/server_eqc.erl | 6 ----- 2 files changed, 7 insertions(+), 28 deletions(-) diff --git a/apps/roster/src/protocol/roster_message.erl b/apps/roster/src/protocol/roster_message.erl index d96cd2d77..7ea6ac801 100644 --- a/apps/roster/src/protocol/roster_message.erl +++ b/apps/roster/src/protocol/roster_message.erl @@ -86,22 +86,8 @@ info(#'Message'{status = [], id = [], feed_id = F, from=From0, to = To, %% Without the transaction there is a race condition between loading the %% writer and storing the updated writer. This caused the broken message %% chains observed in NY-7274. - {atomic, {ToSend, Ack}} = mnesia:transaction(fun() -> - Writer0 = kvs_stream:load_writer(Feed), - {ToSend1, Writer1} = - case {Feed, Writer0} of - %% If this is the first message in the MeChat, add an initial message - {#p2p{from = From0, to = From0}, #writer{first = [], cache = []}} -> - FstMsg = #'Message'{status = clear, feed_id = Feed, - from = From0, to = From0, type = [sys], - files = [#'Desc'{payload = <<"History was removed">>}], - created = roster:now_msec()}, - W1 = kvs_stream:save( - kvs_stream:add(Writer0#writer{args = roster:desc_id(FstMsg)})), - {[W1#writer.cache], W1}; - _ -> - {[], Writer0} - end, + {atomic, {SendMsg, SendAck}} = mnesia:transaction(fun() -> + Writer1 = kvs_stream:load_writer(Feed), %% Create message and write it Msg1 = Msg#'Message'{container = chain, feed_id = Feed, created = roster:now_msec()}, @@ -146,21 +132,20 @@ info(#'Message'{status = [], id = [], feed_id = F, from=From0, to = To, created = Msg3#'Message'.created}; false -> <<>> end, - {ToSend1 ++ [Msg3], Ack1} + {Msg3, Ack1} end), - %% Send the message(s) after DB transaction - [ roster:send_feed(C, Feed, M) || M <- ToSend ], + %% Send the message after DB transaction + roster:send_feed(C, Feed, SendMsg), %% Maybe also push the message - PushM = lists:last(ToSend), case [lists:keyfind(BubbleContentType, #'Desc'.mime, Descs) || BubbleContentType <- [?CONTENT_TYPE_VIDEOCALL, ?CONTENT_TYPE_AUDIOCALL]] of - [false, false] -> n2o_async:pid(system, ?MODULE) ! {send_push, From, To, PushM, []}; + [false, false] -> n2o_async:pid(system, ?MODULE) ! {send_push, From, To, SendMsg, []}; _ -> skip end, - {reply, {bert, Ack}, Req, State} + {reply, {bert, SendAck}, Req, State} end catch throw:#error{} = Err -> {reply, {bert, #io{code = Err}}, Req, State} diff --git a/eqc/server_eqc.erl b/eqc/server_eqc.erl index f4695efe5..51781068d 100644 --- a/eqc/server_eqc.erl +++ b/eqc/server_eqc.erl @@ -625,17 +625,11 @@ send_message(Handle, _Feed, FeedId, Message, Ack) -> send_message_callouts(S, [Handle, Feed, _FeedId, Message, Ack]) -> Phone1 = client_phone(S, Handle), Phones = feed_members(S, Feed), - BonusMessage = element(1, Feed) == p2p andalso length(Phones) == 1 andalso [] == feed_history(S, Feed), - HistoryMessage = <<"History was removed">>, ?PAR([ ?CALLOUTS( ?MATCH({MsgId, ok}, ?message(Handle, ?VAR, [Message], '_', [], '_')), - ?WHEN(BonusMessage, - ?APPLY(feed_write_msg, [Feed, Phone1, sys, {call, erlang, '-', [MsgId, 1]}, [HistoryMessage]])), ?APPLY(feed_write_msg, [Feed, Phone1, MsgId, [Message]]) )] ++ [ ?message(H1, '_', [Message], '_', [], '_') || Phone <- Phones, H1 <- get_clients(S, Phone), H1 /= Handle ] ++ - [ ?message(H1, '_', [HistoryMessage], '_', [sys], '_') - || BonusMessage, H1 <- get_clients(S, Phone1) ] ++ [ ?message_ack(Handle, '_', '_') || Ack ]). %% --- edit_message --- -- GitLab From 8a4dbe474d3db91cc337ef2fb6df34b8393f49c3 Mon Sep 17 00:00:00 2001 From: Hans Svensson Date: Mon, 25 May 2020 10:23:05 +0200 Subject: [PATCH 2/2] Add release note --- doc/release-notes/next/no_history_message_in_mechat.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/release-notes/next/no_history_message_in_mechat.md diff --git a/doc/release-notes/next/no_history_message_in_mechat.md b/doc/release-notes/next/no_history_message_in_mechat.md new file mode 100644 index 000000000..ff93e79db --- /dev/null +++ b/doc/release-notes/next/no_history_message_in_mechat.md @@ -0,0 +1 @@ +* Don't add the "History was removed" message to the beginning of the MeChat. -- GitLab