summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@apache.org>2019-09-09 10:37:39 -0400
committerNick Vatamaniuc <nickva@users.noreply.github.com>2019-09-09 11:27:12 -0400
commit1c1d32690690dea966523de203f4f7be0b2177f4 (patch)
tree92db9bdcab3efa7ebb1e391452ef5f6693524b81
parent198306c1ae09fd677cc382325bc700e5a57b33f5 (diff)
downloadcouchdb-1c1d32690690dea966523de203f4f7be0b2177f4.tar.gz
Handle _changes since=now param
On master this is happening in `fabric_view_changes` but on FDB we don't go through that module anymore, so we do in `chttpd_changes` module instead.
-rw-r--r--src/chttpd/src/chttpd_changes.erl8
-rw-r--r--src/chttpd/src/chttpd_db.erl3
2 files changed, 6 insertions, 5 deletions
diff --git a/src/chttpd/src/chttpd_changes.erl b/src/chttpd/src/chttpd_changes.erl
index c9107d16b..ba81de35e 100644
--- a/src/chttpd/src/chttpd_changes.erl
+++ b/src/chttpd/src/chttpd_changes.erl
@@ -106,11 +106,9 @@ handle_changes(Args1, Req, Db, Type) ->
{SNFun, undefined}
end,
Start = fun() ->
- StartSeq = case Dir of
- rev ->
- fabric2_fdb:get_update_seq(Db);
- fwd ->
- Since
+ StartSeq = case Dir =:= rev orelse Since =:= now of
+ true -> fabric2_db:get_update_seq(Db);
+ false -> Since
end,
View2 = if UseViewChanges ->
{ok, {_, View1, _}, _, _} = couch_mrview_util:get_view(
diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl
index 04da99c19..16774a27f 100644
--- a/src/chttpd/src/chttpd_db.erl
+++ b/src/chttpd/src/chttpd_db.erl
@@ -1945,6 +1945,9 @@ parse_changes_query(Req) ->
end.
+parse_since_seq(<<"now">>) ->
+ now;
+
parse_since_seq(Seq) when is_binary(Seq), size(Seq) > 30 ->
throw({bad_request, url_encoded_since_seq});