From 495c20b9856b2abcbdc5a4620d6b4304dcafd70d Mon Sep 17 00:00:00 2001 From: Filipe David Borba Manana Date: Mon, 2 Aug 2010 17:33:59 +0000 Subject: Add option "stale=update_after" when querying a view. Closes COUCHDB-837. git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@981607 13f79535-47bb-0310-9956-ffa450edef68 --- src/couchdb/couch_httpd_view.erl | 5 ++++- src/couchdb/couch_view.erl | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) (limited to 'src/couchdb') diff --git a/src/couchdb/couch_httpd_view.erl b/src/couchdb/couch_httpd_view.erl index 3c93e50a..62d0ee5b 100644 --- a/src/couchdb/couch_httpd_view.erl +++ b/src/couchdb/couch_httpd_view.erl @@ -282,8 +282,11 @@ parse_view_param("count", _Value) -> throw({query_parse_error, <<"Query parameter 'count' is now 'limit'.">>}); parse_view_param("stale", "ok") -> [{stale, ok}]; +parse_view_param("stale", "update_after") -> + [{stale, update_after}]; parse_view_param("stale", _Value) -> - throw({query_parse_error, <<"stale only available as stale=ok">>}); + throw({query_parse_error, + <<"stale only available as stale=ok or as stale=update_after">>}); parse_view_param("update", _Value) -> throw({query_parse_error, <<"update=false is now stale=ok">>}); parse_view_param("descending", Value) -> diff --git a/src/couchdb/couch_view.erl b/src/couchdb/couch_view.erl index 38c0a783..189bd98f 100644 --- a/src/couchdb/couch_view.erl +++ b/src/couchdb/couch_view.erl @@ -58,11 +58,23 @@ get_group_server(DbName, GroupId) -> get_group(Db, GroupId, Stale) -> MinUpdateSeq = case Stale of ok -> 0; + update_after -> 0; _Else -> couch_db:get_update_seq(Db) end, - couch_view_group:request_group( + Result = {ok, Group} = couch_view_group:request_group( get_group_server(couch_db:name(Db), GroupId), - MinUpdateSeq). + MinUpdateSeq), + case Stale of + update_after -> + % best effort, process might die + spawn(fun() -> + LastSeq = couch_db:get_update_seq(Db), + couch_view_group:request_group(Group, LastSeq) + end); + _ -> + ok + end, + Result. get_temp_group(Db, Language, DesignOptions, MapSrc, RedSrc) -> couch_view_group:request_group( -- cgit v1.2.3