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 04:32:36 UTC

[couchdb] branch fix-eventsource created (now 9c692d425)

This is an automated email from the ASF dual-hosted git repository.

vatamane pushed a change to branch fix-eventsource
in repository https://gitbox.apache.org/repos/asf/couchdb.git


      at 9c692d425 Fix eventsource change feed

This branch includes the following new commits:

     new 9c692d425 Fix eventsource change feed

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[couchdb] 01/01: Fix eventsource change feed

Posted by va...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vatamane pushed a commit to branch fix-eventsource
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 9c692d4258eb7383739c12e91656fe7f729d0341
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(