Invalid top-level key '_removed' in document to be inserted

Hello,

With couchbase-lite for android on pull I'm getting an error " Invalid top-level key '_removed' in document to be inserted".
And everytime I start a new pull I keep getting this error for the same revision ID.

Is that a bug with couchbase-lite for android or should I look at something else?

Thanks,
Yuzkan

[WARN] :   Sync: Puller@b6d3bc50[http://192.168.128.76:4984/dev]: starting ChangeTracker with since=6708
[WARN] :   Sync: Puller@b6d3bc50[http://192.168.128.76:4984/dev]: started ChangeTracker com.couchbase.lite.replicator.ChangeTracker@b6cc3ef0
[TRACE] :  Sync: not already scheduled
[WARN] :   ChangeTracker: com.couchbase.lite.replicator.ChangeTracker@b6cc3ef0: Change tracker calling stop (OneShot)
[TRACE] :  Sync: com.couchbase.lite.support.Batcher@b6df0ac8: processNow() called
[WARN] :   Sync: Puller@b6d3bc50[http://192.168.128.76:4984/dev]: ChangeTracker com.couchbase.lite.replicator.ChangeTracker@b6cc3ef0 stopped
[TRACE] :  Sync: com.couchbase.lite.support.Batcher@b6df0ac8: unschedule() called
[TRACE] :  Sync: com.couchbase.lite.support.Batcher@b6df0ac8: processNow() called
[TRACE] :  Sync: com.couchbase.lite.support.Batcher@b6df0ac8: processNow() called, but inbox is empty
[TRACE] :  Sync: not already scheduled
[ERROR] :  CBLite: Database: Invalid top-level key '_removed' in document to be inserted
[TRACE] :  Sync: com.couchbase.lite.support.Batcher@b6d97ca0: processNow() called
[INFO] :   Sync: Puller@b6d3bc50[http://192.168.128.76:4984/dev] inserting 1 revisions...
[WARN] :   Sync: Puller@b6d3bc50[http://192.168.128.76:4984/dev]: failed to write {undefined #2-c7680c07e214f0bce47e0549bcdf31ec}: status=400
[ERROR] :  Sync: Puller@b6d3bc50[http://192.168.128.76:4984/dev]: Progress: set error = org.apache.http.client.HttpResponseException

Thanks, I'll check why/how "_removed" is being set.

I did reset the DB on the device and tried to pull everything once again. I still get that error and also I see the following error:

[WARN] :   Sync: com.couchbase.lite.replicator.Replication$8@b6f0b670: Database is null, ignoring remote checkpoint response
[ERROR] :  RemoteRequest: Got error status: 409 for org.apache.http.client.methods.HttpPut@b6ee79e0.  Reason: Conflict
[WARN] :   Sync: com.couchbase.lite.replicator.Replication$8@b6ed4420: Unable to save remote checkpoint
[WARN] :   Sync: com.couchbase.lite.replicator.Replication$8@b6ed4420: Database is null, ignoring remote checkpoint response

1 Answer

« Back to question.

It sounds like somebody meant to add "_deleted" to the document, and accidentally added "_removed" instead.

It is correct behavior for Couchbase Lite to complain about this invalid top level key, since "_removed" is not in the list of valid top level keys ("_id", "_rev", "_deleted").

I will double check if this should be an exception or just be a warning, but I think the correct fix is to rename the field in your database.

On further investigation, it appears to be a bug in couchbase lite android:

https://github.com/couchbase/couchbase-lite-android/issues/281

Thanks so much for reporting this!