Sync User object causing changetracker to stop

.net
#1

Hi there

We’ve implemented a progress bar for observing pull and push replication using the .NET sdk.
I’ve found that in every case for a fresh database, the progress bar will get “stuck” at a certain point.

The log we receive is
"Puller Message: Couchbase.Lite.Replicator.Puller: Received invalid doc ID from _changes: System.Collections.Generic.Dictionary`2[System.String,System.Object]" after which it seems that further changes in the feed are processed, but we stop receiving notifications from the change tracker. This does not happen if we use GUEST access, so the issue only appears for a logged in user.

I did some digging into the actual changes feed from Couchbase Sync Gateway REST API and found an example like this :
{
“results”:[
{
“seq”:441614
"id":“46043ad7-cef4-45ba-8fe0-2e250c39bf49”,
“doc”:{
"_id":“46043ad7-cef4-45ba-8fe0-2e250c39bf49”,
"_rev":“1-b1a136fbb111ee1008a09a195869b1cb”,
“name”:“Object 1”
},
“changes”:[{“rev”:“1-b1a136fbb111ee1008a09a195869b1cb”}]
},
{
“seq”:441615,
“id”:"_user/myusername",
“changes”:[]
},
{
“seq”:441616,
“id”:“5a62dab5-7323-4900-9621-3016953b36b3”,
“doc”:{
"_id":“5a62dab5-7323-4900-9621-3016953b36b3”,
"_rev":“1-753b42c3e5b60775ab66e1ecdf4c3aa7”,
“name”:“Object 2”
},
“changes”:[{“rev”:“1-753b42c3e5b60775ab66e1ecdf4c3aa7”}]
}
],
“last_seq”:“441616”
}

Notice the second object in the result that doesn’t actually have a document and has a non-GUID identifier. This is not a document that we’ve created, but maps to the current user entity hitting the _changes endpoint which we created through the admin REST API.

The order of these results can be random, and it seems this object is causing the puller object some grief.
I think the tracker just stops at this point (when the exception is thrown in ChangeTrackerReceivedChange method), so any further items in this feed are synced to the local DB but not registered by the change tracking monitor. In this scenario I think the Status would report as IDLE 1/3.

Now, does this point to something in our configuration being incorrect? Is there a way to stop this Meta object appearing in the changefeed? Does Couchbase Lite even make use of the User object?