couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Leddy (JIRA)" <j...@apache.org>
Subject [jira] Created: (COUCHDB-1021) Compacting a database does not preserve the purge_seq
Date Tue, 11 Jan 2011 15:34:45 GMT
Compacting a database does not preserve the purge_seq
-----------------------------------------------------

                 Key: COUCHDB-1021
                 URL: https://issues.apache.org/jira/browse/COUCHDB-1021
             Project: CouchDB
          Issue Type: Bug
          Components: Database Core
    Affects Versions: 1.0.1
         Environment: All platforms
            Reporter: Mike Leddy
            Priority: Minor


On compacting a database the purge_seq becomes zero. As a result subsequently accessing any
view will cause the view to be rebuilt from scratch. I resolved the issue for me by patching
start_copy_compact, but this only works if you can guarantee there will be no purging done
during compaction:

--- couchdb-1.0.1/src/couchdb/couch_db_updater.erl
+++ couchdb-1.0.1.new/src/couchdb/couch_db_updater.erl
@@ -857,7 +857,7 @@
 
     commit_data(NewDb4#db{update_seq=Db#db.update_seq}).
 
-start_copy_compact(#db{name=Name,filepath=Filepath}=Db) ->
+start_copy_compact(#db{name=Name,filepath=Filepath,header=#db_header{purge_seq=PurgeSeq}}=Db)
->
     CompactFile = Filepath ++ ".compact",
     ?LOG_DEBUG("Compaction process spawned for db \"~s\"", [Name]),
     case couch_file:open(CompactFile) of
@@ -869,7 +869,7 @@
         couch_task_status:add_task(<<"Database Compaction">>, Name, <<"Starting">>),
         {ok, Fd} = couch_file:open(CompactFile, [create]),
         Retry = false,
-        ok = couch_file:write_header(Fd, Header=#db_header{})
+        ok = couch_file:write_header(Fd, Header=#db_header{purge_seq=PurgeSeq})
     end,
     NewDb = init_db(Name, CompactFile, Fd, Header),
     unlink(Fd),

 I am sure that there must be a better way of doing this.....

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message