[
https://issues.apache.org/jira/browse/COUCHDB-885?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nikolai Teofilov updated COUCHDB-885:
-------------------------------------
Summary: Attachments introduce conflicts after replication. (was:
Delete document with attachment fails after replication.)
Description:
Step to reproduce the bug:
1. Make database "test" on a remote couchdb server that reside on a different
machine!
2. Create new document: "http://remote-server:5984/test/doc"
3. Create database "replica" on the local couchdb server.
4. Trigger pull replication http://remote-server:5984/test ->
http://localhost:5984/replica
5. Attach a file to the replicated document on the local couchdb server.
6. Trigger push replication http://localhost:5984/replica ->
http://remote-server:5984/test
The document in the test database shows one conflict. If instead attachment
the document is updated with a new field after the replication no conflict.
The same sequence shows no conflicts on CouchDB 0.11.
************ test.sh ****************
#!/usr/bin/env bash
LOCAL="http://localhost:5984"
REMOTE="http://koleto.couchone.com"
echo "====================================================="
echo "This sequence create a conflict after the replication"
echo "====================================================="
echo "Cleanup"
curl --silent -X DELETE $LOCAL/replica
curl --silent -X DELETE $REMOTE/test
echo "Create database:" $REMOTE/test
curl --silent -X PUT $REMOTE/test
echo "Create empty document:"
curl --silent -d '{}' -X PUT $REMOTE/test/doc
echo "Create local databse:" $LOCAL/replica
curl --silent -X PUT $LOCAL/replica
echo "Pull replication:" REMOTE/test "->" $LOCAL/replica
curl --silent -X POST -d
"{\"source\":\"$REMOTE/test\",\"target\":\"$LOCAL/replica\"}" -H 'Content-Type:
application/json' $LOCAL/_replicate
echo "Put an attachment to the document:"
echo "foobar!" | curl --silent --upload-file - -X PUT
"$LOCAL/replica/doc/foo.txt?rev=1-967a00dff5e02add41819138abb3284d"
echo "Push replication:" $LOCAL/replica "->" $REMOTE/test
curl --silent -X POST -d
"{\"source\":\"$LOCAL/replica\",\"target\":\"$REMOTE/test\"}" -H 'Content-Type:
application/json' $LOCAL/_replicate
echo '############## Get one conflic #####################'
curl --silent -X GET $REMOTE/test/doc?conflicts=true
echo "====================================================="
echo "The same sequence with adding a field to the document"
echo "====================================================="
echo "Cleanup"
curl --silent -X DELETE $LOCAL/replica
curl --silent -X DELETE $REMOTE/test
echo "Create database:" $REMOTE/test
curl --silent -X PUT $REMOTE/test
echo "Create empty document:"
curl --silent -d '{}' -X PUT $REMOTE/test/doc
echo "Create local databse:" $LOCAL/replica
curl --silent -X PUT $LOCAL/replica
echo "Pull replication:" REMOTE/test "->" $LOCAL/replica
curl --silent -X POST -d
"{\"source\":\"$REMOTE/test\",\"target\":\"$LOCAL/replica\"}" -H 'Content-Type:
application/json' $LOCAL/_replicate
echo "Adding a new field:"
curl --silent -d '{"foo":"bar" , "_rev" : "1-967a00dff5e02add41819138abb3284d"
}' -X PUT $LOCAL/replica/doc?rev=1-967a00dff5e02add41819138abb3284d
echo "Push replication:" $LOCAL/replica "->" $REMOTE/test
curl --silent -X POST -d
"{\"source\":\"$LOCAL/replica\",\"target\":\"$REMOTE/test\"}" -H 'Content-Type:
application/json' $LOCAL/_replicate
echo '###### No conflicts after the replication ########'
curl --silent -X GET $REMOTE/test/doc?conflicts=true
was:
Step to reproduce the bug:
1. Make database "test" on a remote couchdb server that reside on a different
machine!
2. Create new document: "http://remote-server:5984/test/doc"
3. Create database "test" on the local couchdb server.
4. Trigger pull replication http://remote-server:5984/test ->
http://localhost:5984/test
5. Attach a file to the replicated document on the local couchdb server.
6. Trigger push replication http://localhost:5984/test ->
http://remote-server:5984/test
7. Delete the replicated document that contain now the attachment on remote
database.
This operation will delete the last revision of the document (after the
replication) but the previous revision of the document (before the replication)
still exist in the database.
This defect appears only for replications between databases on two different
couchdb servers, and only for documents that were updated with a new attachment.
Fix Version/s: 0.11
Component/s: Database Core
(was: Replication)
> Attachments introduce conflicts after replication.
> --------------------------------------------------
>
> Key: COUCHDB-885
> URL: https://issues.apache.org/jira/browse/COUCHDB-885
> Project: CouchDB
> Issue Type: Bug
> Components: Database Core
> Affects Versions: 1.0.1
> Environment: Mac OSX, Windows XP, Windows 7
> Reporter: Nikolai Teofilov
> Fix For: 0.11
>
>
> Step to reproduce the bug:
> 1. Make database "test" on a remote couchdb server that reside on a
> different machine!
> 2. Create new document: "http://remote-server:5984/test/doc"
> 3. Create database "replica" on the local couchdb server.
> 4. Trigger pull replication http://remote-server:5984/test ->
> http://localhost:5984/replica
> 5. Attach a file to the replicated document on the local couchdb server.
> 6. Trigger push replication http://localhost:5984/replica ->
> http://remote-server:5984/test
> The document in the test database shows one conflict. If instead attachment
> the document is updated with a new field after the replication no conflict.
> The same sequence shows no conflicts on CouchDB 0.11.
> ************ test.sh ****************
> #!/usr/bin/env bash
> LOCAL="http://localhost:5984"
> REMOTE="http://koleto.couchone.com"
> echo "====================================================="
> echo "This sequence create a conflict after the replication"
> echo "====================================================="
> echo "Cleanup"
> curl --silent -X DELETE $LOCAL/replica
> curl --silent -X DELETE $REMOTE/test
> echo "Create database:" $REMOTE/test
> curl --silent -X PUT $REMOTE/test
> echo "Create empty document:"
> curl --silent -d '{}' -X PUT $REMOTE/test/doc
> echo "Create local databse:" $LOCAL/replica
> curl --silent -X PUT $LOCAL/replica
> echo "Pull replication:" REMOTE/test "->" $LOCAL/replica
> curl --silent -X POST -d
> "{\"source\":\"$REMOTE/test\",\"target\":\"$LOCAL/replica\"}" -H
> 'Content-Type: application/json' $LOCAL/_replicate
> echo "Put an attachment to the document:"
> echo "foobar!" | curl --silent --upload-file - -X PUT
> "$LOCAL/replica/doc/foo.txt?rev=1-967a00dff5e02add41819138abb3284d"
> echo "Push replication:" $LOCAL/replica "->" $REMOTE/test
> curl --silent -X POST -d
> "{\"source\":\"$LOCAL/replica\",\"target\":\"$REMOTE/test\"}" -H
> 'Content-Type: application/json' $LOCAL/_replicate
> echo '############## Get one conflic #####################'
> curl --silent -X GET $REMOTE/test/doc?conflicts=true
> echo "====================================================="
> echo "The same sequence with adding a field to the document"
> echo "====================================================="
> echo "Cleanup"
> curl --silent -X DELETE $LOCAL/replica
> curl --silent -X DELETE $REMOTE/test
> echo "Create database:" $REMOTE/test
> curl --silent -X PUT $REMOTE/test
> echo "Create empty document:"
> curl --silent -d '{}' -X PUT $REMOTE/test/doc
> echo "Create local databse:" $LOCAL/replica
> curl --silent -X PUT $LOCAL/replica
> echo "Pull replication:" REMOTE/test "->" $LOCAL/replica
> curl --silent -X POST -d
> "{\"source\":\"$REMOTE/test\",\"target\":\"$LOCAL/replica\"}" -H
> 'Content-Type: application/json' $LOCAL/_replicate
> echo "Adding a new field:"
> curl --silent -d '{"foo":"bar" , "_rev" :
> "1-967a00dff5e02add41819138abb3284d" }' -X PUT
> $LOCAL/replica/doc?rev=1-967a00dff5e02add41819138abb3284d
> echo "Push replication:" $LOCAL/replica "->" $REMOTE/test
> curl --silent -X POST -d
> "{\"source\":\"$LOCAL/replica\",\"target\":\"$REMOTE/test\"}" -H
> 'Content-Type: application/json' $LOCAL/_replicate
> echo '###### No conflicts after the replication ########'
> curl --silent -X GET $REMOTE/test/doc?conflicts=true
>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.