couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Ross (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COUCHDB-1415) Re-insering a document silently fails after compact is executed
Date Tue, 08 Oct 2013 05:30:59 GMT

    [ https://issues.apache.org/jira/browse/COUCHDB-1415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13788925#comment-13788925
] 

Eric Ross commented on COUCHDB-1415:
------------------------------------

Since the fix is obviously not easy to implement and is slow in coming, it would be nice to
add some warning to the API docs that says not to do this when compactions are happening.
 Seemingly random lost documents can greatly hinder the credibility of CouchDB (of which I
am a serious fan).  Let me know if you want me to write something up for the docs.


> Re-insering a document silently fails after compact is executed
> ---------------------------------------------------------------
>
>                 Key: COUCHDB-1415
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1415
>             Project: CouchDB
>          Issue Type: Bug
>          Components: Database Core
>    Affects Versions: 1.1.1
>         Environment: Tested on multiple linux platforms
>            Reporter: Viktor Szabo
>            Assignee: Paul Joseph Davis
>
> When a document is re-inserted after a compact operation using the same contents it was
originally created, the insert operation is silently ignored, leaving the client unaware of
the fact it's document is not available in the database.
> Can be reproduced using the following sequence of steps:
> alias curl='curl -H "Content-Type: application/json"'
> url="http://localhost:5984/database"
> 1 curl -X PUT $url
> 2 curl -X POST $url -d '{"_id": "bug", "key": "value"}'
> 3 curl -X DELETE "$url/bug?rev=1-59414e77c768bc202142ac82c2f129de"
> 4 curl -X POST "$url/_compact"
> 5 curl -X POST $url -d '{"_id": "bug", "key": "value"}'
> 6 curl -X GET "$url/bug"
>   (bug here)
> 1 {"ok":true}
>   201
> 2 [{"ok":true,"id":"bug","rev":"1-59414e77c768bc202142ac82c2f129de"}]
>   201
> 3 {"ok":true,"id":"bug","rev":"2-9b2e3bcc3752a3a952a3570b2ed4d27e"}
>   200
> 4 {"ok":true}
>   202
> 5 [{"ok":true,"id":"bug","rev":"1-59414e77c768bc202142ac82c2f129de"}]
>   201
> 6 {"error":"not_found","reason":"deleted"}
>   404
> CouchDB shouldn't report "ok" on step 5 and then go on to claim that the doc is deleted.
Also, it seems to work on second try:
> 7 curl -X POST $url -d '{"_id": "bug", "key": "value"}'
> 8 curl -X GET "$url/bug"
> 7 {"ok":true,"id":"bug","rev":"3-674f864b73df1c80925e48436e21d550"}
>   201
> 8 {"_id":"bug","_rev":"3-674f864b73df1c80925e48436e21d550","key":"value"}
>   200



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Mime
View raw message