You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2010/02/18 21:04:01 UTC
svn commit: r911545 - in /couchdb/branches/0.11.x: ./ etc/default/couchdb
share/Makefile.am src/couchdb/couch_view.erl
src/couchdb/couch_view_group.erl test/etap/150-invalid-view-seq.t
test/etap/Makefile.am
Author: davisp
Date: Thu Feb 18 20:04:01 2010
New Revision: 911545
URL: http://svn.apache.org/viewvc?rev=911545&view=rev
Log:
Back porting fix for COUCHDB-640 - r911544
Added:
couchdb/branches/0.11.x/test/etap/150-invalid-view-seq.t
- copied unchanged from r911544, couchdb/trunk/test/etap/150-invalid-view-seq.t
Modified:
couchdb/branches/0.11.x/ (props changed)
couchdb/branches/0.11.x/etc/default/couchdb (props changed)
couchdb/branches/0.11.x/share/Makefile.am
couchdb/branches/0.11.x/src/couchdb/couch_view.erl
couchdb/branches/0.11.x/src/couchdb/couch_view_group.erl
couchdb/branches/0.11.x/test/etap/Makefile.am
Propchange: couchdb/branches/0.11.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Feb 18 20:04:01 2010
@@ -6,4 +6,4 @@
/couchdb/branches/list-iterator:782292-784593
/couchdb/branches/tail_header:775760-778477
/couchdb/tags/0.10.0:825400
-/couchdb/trunk:909247,910054,910696
+/couchdb/trunk:909247,910054,910696,911544
Propchange: couchdb/branches/0.11.x/etc/default/couchdb
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Feb 18 20:04:01 2010
@@ -6,5 +6,5 @@
/couchdb/branches/list-iterator/etc/default/couchdb:782292-784593
/couchdb/branches/tail_header/etc/default/couchdb:775760-778477
/couchdb/tags/0.10.0/etc/default/couchdb:825400
-/couchdb/trunk/etc/default/couchdb:909247,910054,910696
+/couchdb/trunk/etc/default/couchdb:909247,910054,910696,911544
/incubator/couchdb/trunk/etc/default/couchdb:642419-694440
Modified: couchdb/branches/0.11.x/share/Makefile.am
URL: http://svn.apache.org/viewvc/couchdb/branches/0.11.x/share/Makefile.am?rev=911545&r1=911544&r2=911545&view=diff
==============================================================================
--- couchdb/branches/0.11.x/share/Makefile.am (original)
+++ couchdb/branches/0.11.x/share/Makefile.am Thu Feb 18 20:04:01 2010
@@ -34,8 +34,10 @@
EXTRA_DIST = $(JS_FILE_COMPONENTS) $(JS_FILE_COMPONENTS_LAST)
+nobase_localdata_SCRIPTS = \
+ $(JS_FILE)
+
nobase_dist_localdata_DATA = \
- $(JS_FILE) \
www/config.html \
www/couch_tests.html \
www/custom_test.html \
Modified: couchdb/branches/0.11.x/src/couchdb/couch_view.erl
URL: http://svn.apache.org/viewvc/couchdb/branches/0.11.x/src/couchdb/couch_view.erl?rev=911545&r1=911544&r2=911545&view=diff
==============================================================================
--- couchdb/branches/0.11.x/src/couchdb/couch_view.erl (original)
+++ couchdb/branches/0.11.x/src/couchdb/couch_view.erl Thu Feb 18 20:04:01 2010
@@ -284,6 +284,15 @@
{ok, NewPid} ->
add_to_ets(NewPid, DbName, Sig),
{reply, {ok, NewPid}, Server};
+ {error, invalid_view_seq} ->
+ do_reset_indexes(DbName, Root),
+ case (catch couch_view_group:start_link({Root, DbName, Group})) of
+ {ok, NewPid} ->
+ add_to_ets(NewPid, DbName, Sig),
+ {reply, {ok, NewPid}, Server};
+ Error ->
+ {reply, Error, Server}
+ end;
Error ->
{reply, Error, Server}
end;
@@ -292,6 +301,10 @@
end.
handle_cast({reset_indexes, DbName}, #server{root_dir=Root}=Server) ->
+ do_reset_indexes(DbName, Root),
+ {noreply, Server}.
+
+do_reset_indexes(DbName, Root) ->
% shutdown all the updaters and clear the files, the db got changed
Names = ets:lookup(couch_groups_by_db, DbName),
lists:foreach(
@@ -304,8 +317,7 @@
end
end, Names),
delete_index_dir(Root, DbName),
- file:delete(Root ++ "/." ++ binary_to_list(DbName) ++ "_temp"),
- {noreply, Server}.
+ file:delete(Root ++ "/." ++ ?b2l(DbName) ++ "_temp").
handle_info({'EXIT', FromPid, Reason}, Server) ->
case ets:lookup(couch_groups_by_updater, FromPid) of
Modified: couchdb/branches/0.11.x/src/couchdb/couch_view_group.erl
URL: http://svn.apache.org/viewvc/couchdb/branches/0.11.x/src/couchdb/couch_view_group.erl?rev=911545&r1=911544&r2=911545&view=diff
==============================================================================
--- couchdb/branches/0.11.x/src/couchdb/couch_view_group.erl (original)
+++ couchdb/branches/0.11.x/src/couchdb/couch_view_group.erl Thu Feb 18 20:04:01 2010
@@ -78,17 +78,25 @@
init({InitArgs, ReturnPid, Ref}) ->
process_flag(trap_exit, true),
case prepare_group(InitArgs, false) of
- {ok, #group{db=Db, fd=Fd}=Group} ->
- couch_db:monitor(Db),
- Owner = self(),
- Pid = spawn_link(fun()-> couch_view_updater:update(Owner, Group) end),
- {ok, RefCounter} = couch_ref_counter:start([Fd]),
- {ok, #group_state{
- db_name=couch_db:name(Db),
- init_args=InitArgs,
- updater_pid = Pid,
- group=Group,
- ref_counter=RefCounter}};
+ {ok, #group{db=Db, fd=Fd, current_seq=Seq}=Group} ->
+ case Seq > couch_db:get_update_seq(Db) of
+ true ->
+ ReturnPid ! {Ref, self(), {error, invalid_view_seq}},
+ ignore;
+ _ ->
+ couch_db:monitor(Db),
+ Owner = self(),
+ Pid = spawn_link(
+ fun()-> couch_view_updater:update(Owner, Group) end
+ ),
+ {ok, RefCounter} = couch_ref_counter:start([Fd]),
+ {ok, #group_state{
+ db_name=couch_db:name(Db),
+ init_args=InitArgs,
+ updater_pid = Pid,
+ group=Group,
+ ref_counter=RefCounter}}
+ end;
Error ->
ReturnPid ! {Ref, self(), Error},
ignore
Modified: couchdb/branches/0.11.x/test/etap/Makefile.am
URL: http://svn.apache.org/viewvc/couchdb/branches/0.11.x/test/etap/Makefile.am?rev=911545&r1=911544&r2=911545&view=diff
==============================================================================
--- couchdb/branches/0.11.x/test/etap/Makefile.am (original)
+++ couchdb/branches/0.11.x/test/etap/Makefile.am Thu Feb 18 20:04:01 2010
@@ -61,4 +61,8 @@
120-stats-collect.t \
121-stats-aggregates.cfg \
121-stats-aggregates.ini \
- 121-stats-aggregates.t
+ 121-stats-aggregates.t \
+ 130-attachments-md5.t \
+ 140-attachment-comp.t \
+ 150-invalid-view-seq.t
+