![set up backtrack 5 in limbo emulator set up backtrack 5 in limbo emulator](https://4.bp.blogspot.com/-hTjDaV0WbIM/UNq7HMJbRXI/AAAAAAAAAlI/iitAvClKilU/s1600/virtualbox.jpg)
#SET UP BACKTRACK 5 IN LIMBO EMULATOR CODE#
( #1004)Īlso remove test code that was combining multiple array contains queries since those were disallowed in 04c9c3a. * Expose array transforms and array contains queries.
![set up backtrack 5 in limbo emulator set up backtrack 5 in limbo emulator](https://2.bp.blogspot.com/-9cY7vBtZE6I/W3bo3a-0CqI/AAAAAAAAAZE/6jnT-1fn1hs-kxVtzVtdCPuUiSBs--1TgCLcBGAs/s1600/Screenshot_20180817-192446.jpg)
* Added missing type for optional database url. * Embed metadata directly into the RPC call * Embed metadata directly into the RPC call ( #979) (Please don't be alarmed: we're fixing the js-sdk first because we have a cross-platform test suite written in typescript. A fix that will allow the client to self-heal its cache is progress here: firebase/firebase-js-sdk#1015. This compounds the issue and causes it to be persistent. There are corner cases around updates to documents that don't match a query where the server is not obligated to send the absolute latest version of a document so the client will prefer its version of a document if it's later than the server issued one.
#SET UP BACKTRACK 5 IN LIMBO EMULATOR UPDATE#
This alone would not be a problem because the next update from the server would fix the client's cache, but the client is also recording the commit time of the delete as the current time of the limbo resolution read, which is typically later than the last server-side modification. The fix for this is in flight here: firebase/firebase-js-sdk#1014. There's a certain order of events from the server that can cause the client to mistakenly determine that a limbo document doesn't exist and this is causing the client to populate negative entries in its cache. So with that background, the bug is in this limbo resolution process. Without this limbo resolution process, the next time the client ran the query you would see a flicker: the client would serve stale data from the cache which would disappear when the server gave up-to-date results again. When this happens the client considers the document to be in limbo and attempts to figure out what happened to that document by requesting it out of band. This is an intentional ambiguity that gives us some wiggle room in the server implementation. The problem exists on all Firestore mobile/web SDKs.įor context, when a client is listening to a limit query (and in certain other cases) and a document moves out of the query results the server is allowed to tell the client merely that a document is removed without fully describing why that was. We'll treat this as the canonical issue for this bug. It turns out to be the cause of this discussion.