[ 
https://issues.apache.org/jira/browse/COUCHDB-640?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Filipe Manana updated COUCHDB-640:
----------------------------------

    Attachment: couchdb-640-trunk-2.patch

@Paul,

here it follows with an Etap test.

It does the following:

1) create a DB with 3 docs and a view
2) makes a backup copy of the DB file
3) adds 1 more doc to the DB
4) queries the view, which lists the 4 docs
5) stops the server, and replaces the DB file with the backup DB file
6) starts the server
7) queries the view, which now lists only 3 docs

During the server restart, a huge stack trace is sent to stderr, but it's 
harmless :) All the tests pass.

Also changed the atom bad_db_file to the tuple {error, invalid_view_seq}

Let me know if all is ok now.

cheers

> Detect when a view is not valid for a database
> ----------------------------------------------
>
>                 Key: COUCHDB-640
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-640
>             Project: CouchDB
>          Issue Type: Bug
>          Components: JavaScript View Server
>    Affects Versions: 0.11
>            Reporter: Paul Joseph Davis
>         Attachments: couchdb-640-trunk-2.patch, couchdb-640-trunk.patch
>
>
> It was mentioned on IRC that if someone restores a database without restoring 
> a view then there's nothing that detects if the view is still valid. Ie, it 
> may reflect an update_seq that the restoration lost.
> In the check for kicking off a view update we should check if there is an 
> incompatibility between what's been calculated in the view vs what the db 
> update sequence is at. The current logic will just ignore and return the 
> invalid view data (because of how stale=ok works which is good).
> Should be an easy bug to fix if anyone's interested. The code should be 
> pretty contained to couch_view.erl and couch_view_group.erl

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

Reply via email to