couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nikolai Teofilov (JIRA)" <j...@apache.org>
Subject [jira] Updated: (COUCHDB-885) Attachments introduce conflicts after replication.
Date Mon, 13 Sep 2010 20:40:32 GMT

     [ 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.


Mime
View raw message