com.couchbase.lite.phonegap(master): PUT response 409 Conflict

305 views
Skip to first unread message

pe...@kroegholt.dk

unread,
Jun 27, 2014, 9:36:25 AM6/27/14
to mobile-c...@googlegroups.com
Hi,

I can successfully PUT a new document e.g. like:

$.ajax({
  type: "PUT",
  url: "http://0c032067-32b2-40eb-97b0-813fcc0ed9ba:99287e13-3dc5-49b8-b13f-ce6607cd52b7@localhost:5984/myapp/mydoc1",
  data: JSON.stringify({title: 'My doc 2', type: 'mydoc'}),
  contentType: "application/json",
  success: function (msg) {
    console.log('succes: ', msg)
  },
  error: function (err){
    console.log('error: ', err)    
  }
});

but when I put again with 
...
data: JSON.stringify({title: 'My doc 2 update', type: 'mydoc'})
...

i get response error: 409 (Conflict) 

when i expect my logcat iget :

              dalvikvm  D  GC_FOR_ALLOC freed 336K, 3% free 17783K/18320K, paused 20ms, total 21ms
              Listener  W  authHeader is null
                        W  Unauthorized -- requestCredentials not given or do not match allowed credentials
              dalvikvm  D  GC_FOR_ALLOC freed 247K, 3% free 17783K/18320K, paused 19ms, total 19ms
              Listener  V  Authorized via basic auth
              dalvikvm  D  GC_FOR_ALLOC freed 258K, 3% free 17783K/18320K, paused 19ms, total 21ms
              Listener  W  authHeader is null
                        W  Unauthorized -- requestCredentials not given or do not match allowed credentials
              dalvikvm  D  GC_FOR_ALLOC freed 231K, 3% free 17782K/18320K, paused 19ms, total 19ms
              Listener  V  Authorized via basic auth
            System.err  W  com.couchbase.lite.CouchbaseLiteException
                        W      at com.couchbase.lite.Database.putRevision(Database.java:3543)
                        W      at com.couchbase.lite.Database.putRevision(Database.java:3421)
                        W      at com.couchbase.lite.router.Router.update(Router.java:1483)
                        W      at com.couchbase.lite.router.Router.update(Router.java:1519)
                        W      at com.couchbase.lite.router.Router.do_PUT_Document(Router.java:1554)
                        W      at java.lang.reflect.Method.invokeNative(Native Method)
                        W      at java.lang.reflect.Method.invoke(Method.java:515)
                        W      at com.couchbase.lite.router.Router.start(Router.java:464)
                        W      at com.couchbase.lite.listener.LiteServlet.service(LiteServlet.java:128)
                        W      at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
                        W      at Acme.Serve.Serve$ServeConnection.runServlet(Serve.java:2251)
                        W      at Acme.Serve.Serve$ServeConnection.parseRequest(Serve.java:2176)
                        W      at Acme.Serve.Serve$ServeConnection.run(Serve.java:1988)
                        W      at Acme.Utils$ThreadPool$PooledThread.run(Utils.java:1223)
                        W      at java.lang.Thread.run(Thread.java:841)
                Router  E  Error updating doc: mydoc1
              dalvikvm  D  GC_FOR_ALLOC freed 188K, 3% free 17783K/18320K, paused 11ms, total 11ms            



i'm on android 4.4.2 (lg nexus 5)

any hints ?

thx

//

pelle




Jens Alfke

unread,
Jun 27, 2014, 12:22:46 PM6/27/14
to mobile-c...@googlegroups.com

On Jun 27, 2014, at 6:36 AM, pe...@kroegholt.dk wrote:

but when I put again with 
...
data: JSON.stringify({title: 'My doc 2 update', type: 'mydoc'})
...
i get response error: 409 (Conflict) 

Yes, that’s due to multi-version concurrency control (MVCC). When you update a doc you have to provide the revision ID (_revid) of the version you’re replacing, to guard against race conditions. Please see the docs.

—Jens

Jaime Lopez Carratala

unread,
Mar 31, 2015, 11:47:43 AM3/31/15
to mobile-c...@googlegroups.com
Hi,

Does this apply also to design documents? because I get a 409 when I try to update with a PUT my design document, I get this error in the device log:

03-31 11:34:59.956 I/CBLite  (12734): Acme.Utils.ThreadPool(1)-PooledThread: Acme.Serve.Serve$ServeConnection@1948b441 Begin transaction (level 1)
03-31 11:34:59.958 I/CBLite  (12734): Acme.Utils.ThreadPool(1)-PooledThread: Acme.Serve.Serve$ServeConnection@1948b441 CANCEL transaction (level 1)
03-31 11:34:59.958 W/System.err(12734): com.couchbase.lite.CouchbaseLiteException: The current winning revision is not deleted, so this is a conflict
03-31 11:34:59.959 W/System.err(12734): at com.couchbase.lite.Database.putRevision(Database.java:3578)
03-31 11:34:59.959 W/System.err(12734): at com.couchbase.lite.Database.putRevision(Database.java:3465)
03-31 11:34:59.959 W/System.err(12734): at com.couchbase.lite.router.Router.update(Router.java:1508)
03-31 11:34:59.959 W/System.err(12734): at com.couchbase.lite.router.Router.update(Router.java:1544)
03-31 11:34:59.959 W/System.err(12734): at com.couchbase.lite.router.Router.do_PUT_Document(Router.java:1579)
03-31 11:34:59.959 W/System.err(12734): at java.lang.reflect.Method.invoke(Native Method)
03-31 11:34:59.959 W/System.err(12734): at java.lang.reflect.Method.invoke(Method.java:372)
03-31 11:34:59.959 W/System.err(12734): at com.couchbase.lite.router.Router.start(Router.java:466)
03-31 11:34:59.959 W/System.err(12734): at com.couchbase.lite.listener.LiteServlet.service(LiteServlet.java:128)
03-31 11:34:59.959 W/System.err(12734): at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
03-31 11:34:59.959 W/System.err(12734): at Acme.Serve.Serve$ServeConnection.runServlet(Serve.java:2251)
03-31 11:34:59.959 W/System.err(12734): at Acme.Serve.Serve$ServeConnection.parseRequest(Serve.java:2176)
03-31 11:34:59.959 W/System.err(12734): at Acme.Serve.Serve$ServeConnection.run(Serve.java:1988)
03-31 11:34:59.959 W/System.err(12734): at Acme.Utils$ThreadPool$PooledThread.run(Utils.java:1223)
03-31 11:34:59.959 W/System.err(12734): at java.lang.Thread.run(Thread.java:818)
03-31 11:34:59.962 E/Router  (12734): Error updating doc: _design/products


But in the docs there is no _rev parameter at all...

Best regards.
Jaime

Jens Alfke

unread,
Mar 31, 2015, 11:57:38 AM3/31/15
to mobile-c...@googlegroups.com
On Mar 31, 2015, at 8:47 AM, Jaime Lopez Carratala <jai...@gmail.com> wrote:

Does this apply also to design documents?

Yes, design documents are just regular documents in the database.

But in the docs there is no _rev parameter at all

It’s not a request parameter, it’s an element in the document.

—Jens

atom992

unread,
Jul 3, 2015, 1:40:02 PM7/3/15
to mobile-c...@googlegroups.com


Is that means If I have a view named View1 on couchbase server behind syncgateway, and I have a view named View1 on couchbase Lite, when I start replication, I will got a Conflict?
Reply all
Reply to author
Forward
0 new messages