You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2022/09/15 15:42:03 UTC
[couchdb] branch main updated: Fix eventsource change feed
This is an automated email from the ASF dual-hosted git repository.
vatamane pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb.git
The following commit(s) were added to refs/heads/main by this push:
new cb176a69a Fix eventsource change feed
cb176a69a is described below
commit cb176a69ab6f9a6631826db7df3a133ab1fee3b4
Author: Nick Vatamaniuc <va...@apache.org>
AuthorDate: Thu Sep 15 00:26:10 2022 -0400
Fix eventsource change feed
At some point when the `stop` callback arg got a 3rd `Pending`
element, we forgot to update the eventsource callback. As a result, we
ended up in a catch-all clause and we appended an unmatched ']' and a
json `"last_seq"` element.
While at it, clean up of the similar upgrade clauses in other callback
instances.
---
src/chttpd/src/chttpd_db.erl | 2 +-
src/global_changes/src/global_changes_httpd.erl | 8 +-------
2 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl
index 14049bd78..29a9a4157 100644
--- a/src/chttpd/src/chttpd_db.erl
+++ b/src/chttpd/src/chttpd_db.erl
@@ -207,7 +207,7 @@ changes_callback(timeout, #cacc{feed = eventsource} = Acc) ->
Chunk = "event: heartbeat\ndata: \n\n",
{ok, Resp1} = chttpd:send_delayed_chunk(Resp, Chunk),
{ok, Acc#cacc{mochi = Resp1, chunks_sent = ChunksSet + 1}};
-changes_callback({stop, _EndSeq}, #cacc{feed = eventsource} = Acc) ->
+changes_callback({stop, _EndSeq, _Pending}, #cacc{feed = eventsource} = Acc) ->
#cacc{mochi = Resp, buffer = Buf} = Acc,
{ok, Resp1} = chttpd:send_delayed_chunk(Resp, Buf),
chttpd:end_delayed_json_response(Resp1);
diff --git a/src/global_changes/src/global_changes_httpd.erl b/src/global_changes/src/global_changes_httpd.erl
index cb4016b63..a71403e7b 100644
--- a/src/global_changes/src/global_changes_httpd.erl
+++ b/src/global_changes/src/global_changes_httpd.erl
@@ -122,9 +122,6 @@ changes_callback({change, Change0}, #acc{feed = "continuous"} = Acc) ->
},
maybe_finish(Acc1)
end;
-changes_callback({stop, EndSeq}, #acc{feed = "continuous"} = Acc) ->
- % Temporary upgrade clause - Case 24236
- changes_callback({stop, EndSeq, null}, Acc);
changes_callback({stop, EndSeq, _Pending}, #acc{feed = "continuous"} = Acc) ->
#acc{resp = Resp} = Acc,
{ok, Resp1} = chttpd:send_delayed_chunk(
@@ -158,7 +155,7 @@ changes_callback(timeout, #acc{feed = "eventsource"} = Acc) ->
Chunk = "event: heartbeat\ndata: \n\n",
{ok, Resp1} = chttpd:send_delayed_chunk(Resp, Chunk),
{ok, {"eventsource", Resp1}};
-changes_callback({stop, _EndSeq}, #acc{feed = "eventsource"} = Acc) ->
+changes_callback({stop, _EndSeq, _Pending}, #acc{feed = "eventsource"} = Acc) ->
#acc{resp = Resp} = Acc,
% {ok, Resp1} = chttpd:send_delayed_chunk(Resp, Buf),
chttpd:end_delayed_json_response(Resp);
@@ -200,9 +197,6 @@ changes_callback({change, Change0}, Acc) ->
},
maybe_finish(Acc1)
end;
-changes_callback({stop, EndSeq}, Acc) ->
- % Temporary upgrade clause - Case 24236
- changes_callback({stop, EndSeq, null}, Acc);
changes_callback({stop, EndSeq, _Pending}, Acc) ->
#acc{resp = Resp} = Acc,
{ok, Resp1} = chttpd:send_delayed_chunk(