question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[Firestore] emulator is falling over with transactions

See original GitHub issue

Apologies if this is the wrong issue tracker. I’m using the Admin Node SDK to run tests against the firestore emulator.

[REQUIRED] Step 2: Describe your environment

  • Operating System version: OSX 10.14.6
  • Firebase SDK version: 7.2.4
  • Firebase Product: Firestore
  • Node.js version: 12.8.1
  • NPM version: 6.10.3
  • cloud-firestore-emulator-v1.8.0.jar
  • openjdk version “12.0.2” 2019-07-16 OpenJDK Runtime Environment (build 12.0.2+10) OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)

[REQUIRED] Step 3: Describe the problem

I’ve written a whole bunch of ORM’ish code that works fine in production. Now, I’m trying to write tests against it. Yea, I know… backwards way of development, but at least I’m fixing things… =)

The issue is that when running unit tests against the emulator running on localhost, it seems like it is just freezing up and causing my tests to fail randomly. Note that if I restart the emulator, it seems like that helps improve things. The test runs just fine once, then it starts puking after that.

The code makes heavy use of a single transaction. It does a whole bunch of reads and writes across several different entities. I suspect that somewhere, something is failing.

I will try to narrow it down to a single bit of code, but I felt like these logs were pretty telling to start with. The fact that it passes once and then doesn’t pass again tells me it is an issue somewhere deep in the emulator.

I’m not looking for performance here, I’m looking for correctness. That said, 5s should be more than enough time for this to complete since the successful run completed in under 1s.

Log files:

This is a successful run of the code:

Firestore (2.2.8) 2019-08-26T08:16:23.201Z ##### [Firestore]: Initialized Firestore
Firestore (2.2.8) 2019-08-26T08:16:23.206Z F0Qmq [ClientPool.acquire]: Creating a new client
Firestore (2.2.8) 2019-08-26T08:16:23.357Z ##### [Firestore]: Initialized Firestore GAPIC Client
Firestore (2.2.8) 2019-08-26T08:16:23.360Z F0Qmq [Firestore.request]: Sending request: {"database":"projects/qb-test/databases/(default)"}
Firestore (2.2.8) 2019-08-26T08:16:23.402Z F0Qmq [Firestore.request]: Received response: {"transaction":{"type":"Buffer","data":[17,2,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:16:23.406Z BIXPK [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.406Z BIXPK [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"psu"},"op":"EQUAL","value":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/psu-id"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,2,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:16:23.422Z BIXPK [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807383","nanos":416000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:16:23.423Z BIXPK [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:16:23.425Z BIXPK [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.426Z T40uF [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.426Z 5srJy [ClientPool.acquire]: Re-using existing client with 99 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.426Z BIXPK [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:16:23.426Z BIXPK [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.427Z T40uF [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"gpus"},"op":"ARRAY_CONTAINS","value":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/gpu1"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,2,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:16:23.428Z 5srJy [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"gpus"},"op":"ARRAY_CONTAINS","value":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/gpu2"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,2,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:16:23.439Z T40uF [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807383","nanos":431000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:16:23.439Z T40uF [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:16:23.440Z T40uF [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.440Z 5srJy [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807383","nanos":431000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:16:23.440Z 5srJy [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:16:23.440Z 5srJy [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.441Z aH8yJ [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.441Z T40uF [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:16:23.441Z T40uF [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.441Z 5srJy [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:16:23.441Z 5srJy [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.442Z aH8yJ [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"id"},"op":"EQUAL","value":{"stringValue":"rig-id"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,2,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:16:23.446Z aH8yJ [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807383","nanos":444000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:16:23.446Z aH8yJ [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:16:23.446Z aH8yJ [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.447Z nluI1 [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.447Z 6mJ6m [ClientPool.acquire]: Re-using existing client with 99 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.447Z pULyc [ClientPool.acquire]: Re-using existing client with 98 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.447Z aH8yJ [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:16:23.447Z aH8yJ [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.448Z nluI1 [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"psus"}],"where":{"fieldFilter":{"field":{"fieldPath":"id"},"op":"EQUAL","value":{"stringValue":"psu-id"}}},"limit":{"value":1}}}
Firestore (2.2.8) 2019-08-26T08:16:23.448Z 6mJ6m [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"gpus"}],"where":{"fieldFilter":{"field":{"fieldPath":"id"},"op":"EQUAL","value":{"stringValue":"gpu1"}}},"limit":{"value":1}}}
Firestore (2.2.8) 2019-08-26T08:16:23.449Z pULyc [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"gpus"}],"where":{"fieldFilter":{"field":{"fieldPath":"id"},"op":"EQUAL","value":{"stringValue":"gpu2"}}},"limit":{"value":1}}}
Firestore (2.2.8) 2019-08-26T08:16:23.461Z nluI1 [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807383","nanos":452000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:16:23.461Z nluI1 [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:16:23.462Z nluI1 [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.463Z 6mJ6m [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807383","nanos":452000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:16:23.463Z 6mJ6m [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:16:23.463Z 6mJ6m [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.464Z nluI1 [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:16:23.464Z nluI1 [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.464Z 6mJ6m [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:16:23.464Z 6mJ6m [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.464Z pULyc [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807383","nanos":452000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:16:23.464Z pULyc [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:16:23.464Z pULyc [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.467Z F0Qmq [WriteBatch.commit]: Sending 6 writes
Firestore (2.2.8) 2019-08-26T08:16:23.467Z F0Qmq [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.467Z pULyc [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:16:23.467Z pULyc [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.468Z F0Qmq [Firestore.request]: Sending request: {"database":"projects/qb-test/databases/(default)","writes":[{"update":{"name":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS","fields":{"id":{"stringValue":"psu-id"},"created":{"integerValue":1566807383462},"createdBy":{"stringValue":"jon-uid"}}}},{"update":{"name":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji","fields":{"id":{"stringValue":"gpu1"},"created":{"integerValue":1566807383463},"createdBy":{"stringValue":"jon-uid"}}}},{"update":{"name":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb","fields":{"id":{"stringValue":"gpu2"},"created":{"integerValue":1566807383464},"createdBy":{"stringValue":"jon-uid"}}}},{"update":{"name":"projects/qb-test/databases/(default)/documents/top/data/rigs/wrARZaqBBftLA6RpctRW","fields":{"id":{"stringValue":"rig-id"},"psu":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS"},"gpus":{"arrayValue":{"values":[{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji"},{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb"}]}},"created":{"integerValue":1566807383464},"createdBy":{"stringValue":"jon-uid"}}}},{"update":{"name":"projects/qb-test/databases/(default)/documents/top/logs/2019-8/2hqqErImsZ8hhfilCstf","fields":{"l":{"arrayValue":{"values":[{"mapValue":{"fields":{"m":{"stringValue":"C"},"r":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS"},"d":{"mapValue":{"fields":{"created":{"integerValue":1566807383462},"createdBy":{"stringValue":"jon-uid"}}}}}}},{"mapValue":{"fields":{"m":{"stringValue":"C"},"r":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji"},"d":{"mapValue":{"fields":{"created":{"integerValue":1566807383463},"createdBy":{"stringValue":"jon-uid"}}}}}}},{"mapValue":{"fields":{"m":{"stringValue":"C"},"r":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb"},"d":{"mapValue":{"fields":{"created":{"integerValue":1566807383464},"createdBy":{"stringValue":"jon-uid"}}}}}}},{"mapValue":{"fields":{"m":{"stringValue":"C"},"r":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/rigs/wrARZaqBBftLA6RpctRW"},"d":{"mapValue":{"fields":{"psu":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS"},"gpus":{"arrayValue":{"values":[{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji"},{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb"}]}},"created":{"integerValue":1566807383464},"createdBy":{"stringValue":"jon-uid"}}}}}}}]}},"t":{"integerValue":1566807383465}}},"currentDocument":{"exists":false}},{"transform":{"document":"projects/qb-test/databases/(default)/documents/top/logs/2019-8/2hqqErImsZ8hhfilCstf","fieldTransforms":[{"fieldPath":"s","setToServerValue":"REQUEST_TIME"}]}}],"transaction":{"type":"Buffer","data":[17,2,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:16:23.602Z F0Qmq [Firestore.request]: Received response: {"writeResults":[{"transformResults":[],"updateTime":{"seconds":"1566807383","nanos":556000000}},{"transformResults":[],"updateTime":{"seconds":"1566807383","nanos":556000000}},{"transformResults":[],"updateTime":{"seconds":"1566807383","nanos":556000000}},{"transformResults":[],"updateTime":{"seconds":"1566807383","nanos":556000000}},{"transformResults":[],"updateTime":{"seconds":"1566807383","nanos":556000000}},{"transformResults":[{"timestampValue":{"seconds":"1566807383","nanos":486000000},"valueType":"timestampValue"}],"updateTime":{"seconds":"1566807383","nanos":556000000}}],"commitTime":{"seconds":"1566807383","nanos":556000000}}
Firestore (2.2.8) 2019-08-26T08:16:23.603Z L5qFz [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.604Z L5qFz [Firestore.request]: Sending request: {"database":"projects/qb-test/databases/(default)"}
Firestore (2.2.8) 2019-08-26T08:16:23.607Z L5qFz [Firestore.request]: Received response: {"transaction":{"type":"Buffer","data":[17,6,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:16:23.608Z 7uxqc [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.609Z 7uxqc [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"id"},"op":"EQUAL","value":{"stringValue":"rig-id"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,6,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:16:23.619Z 7uxqc [Firestore.readStream]: Received response: {"document":{"fields":{"created":{"integerValue":"1566807383464","valueType":"integerValue"},"psu":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS","valueType":"referenceValue"},"createdBy":{"stringValue":"jon-uid","valueType":"stringValue"},"gpus":{"arrayValue":{"values":[{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji","valueType":"referenceValue"},{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb","valueType":"referenceValue"}]},"valueType":"arrayValue"},"id":{"stringValue":"rig-id","valueType":"stringValue"}},"name":"projects/qb-test/databases/(default)/documents/top/data/rigs/wrARZaqBBftLA6RpctRW","createTime":{"seconds":"1566807383","nanos":556000000},"updateTime":{"seconds":"1566807383","nanos":556000000}},"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807383","nanos":611000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:16:23.619Z 7uxqc [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:16:23.620Z 7uxqc [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.621Z L5qFz [WriteBatch.commit]: Sending 0 writes
Firestore (2.2.8) 2019-08-26T08:16:23.621Z L5qFz [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:16:23.621Z 7uxqc [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:16:23.621Z 7uxqc [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:16:23.622Z L5qFz [Firestore.request]: Sending request: {"database":"projects/qb-test/databases/(default)","writes":[],"transaction":{"type":"Buffer","data":[17,6,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:16:23.626Z L5qFz [Firestore.request]: Received response: {"writeResults":[],"commitTime":null}
{
  created: 1566807383464,
  psu: DocumentReference {
    _firestore: Firestore {
      _settings: [Object],
      _settingsFrozen: true,
      _serializer: [Serializer],
      _projectId: 'qb-test',
      _lastSuccessfulRequest: 1566807383626,
      _preferTransactions: false,
      _clientPool: [ClientPool]
    },
    _path: ResourcePath { segments: [Array] }
  },
  createdBy: 'jon-uid',
  gpus: [
    DocumentReference {
      _firestore: [Firestore],
      _path: [ResourcePath]
    },
    DocumentReference {
      _firestore: [Firestore],
      _path: [ResourcePath]
    }
  ],
  id: 'rig-id'
}

And a failure where things just lock up:

Firestore (2.2.8) 2019-08-26T08:17:04.779Z x6uSo [ClientPool.acquire]: Creating a new client
Firestore (2.2.8) 2019-08-26T08:17:04.916Z ##### [Firestore]: Initialized Firestore GAPIC Client
Firestore (2.2.8) 2019-08-26T08:17:04.918Z x6uSo [Firestore.request]: Sending request: {"database":"projects/qb-test/databases/(default)"}
Firestore (2.2.8) 2019-08-26T08:17:04.950Z x6uSo [Firestore.request]: Received response: {"transaction":{"type":"Buffer","data":[17,7,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:17:04.954Z CoDCV [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:04.956Z CoDCV [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"psu"},"op":"EQUAL","value":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/psu-id"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,7,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:17:04.972Z CoDCV [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807424","nanos":966000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:17:04.973Z CoDCV [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:17:04.975Z CoDCV [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:04.976Z qZYCX [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:04.976Z llB2x [ClientPool.acquire]: Re-using existing client with 99 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:04.976Z CoDCV [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:17:04.976Z CoDCV [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:04.978Z qZYCX [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"gpus"},"op":"ARRAY_CONTAINS","value":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/gpu1"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,7,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:17:04.979Z llB2x [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"gpus"},"op":"ARRAY_CONTAINS","value":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/gpu2"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,7,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:17:04.984Z qZYCX [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807424","nanos":981000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:17:04.984Z qZYCX [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:17:04.984Z qZYCX [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:04.985Z qZYCX [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:17:04.986Z qZYCX [Firestore._initializeStream]: Received stream end

Error: Timeout of 5000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/jon/checkout/consensys/firestorm/test/QueryBuilder.spec.ts)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7)

Here is another lockup failure where it looks like it gets further, but then falls over:

Firestore (2.2.8) 2019-08-26T08:17:56.352Z f7t15 [ClientPool.acquire]: Creating a new client
Firestore (2.2.8) 2019-08-26T08:17:56.504Z ##### [Firestore]: Initialized Firestore GAPIC Client
Firestore (2.2.8) 2019-08-26T08:17:56.507Z f7t15 [Firestore.request]: Sending request: {"database":"projects/qb-test/databases/(default)"}
Firestore (2.2.8) 2019-08-26T08:17:56.542Z f7t15 [Firestore.request]: Received response: {"transaction":{"type":"Buffer","data":[17,9,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:17:56.546Z rXJhT [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:56.548Z rXJhT [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"psu"},"op":"EQUAL","value":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/psu-id"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,9,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:17:56.564Z rXJhT [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807476","nanos":558000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:17:56.565Z rXJhT [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:17:56.567Z rXJhT [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.568Z oSYLb [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:56.568Z nUM5e [ClientPool.acquire]: Re-using existing client with 99 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:56.568Z rXJhT [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:17:56.568Z rXJhT [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.570Z oSYLb [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"gpus"},"op":"ARRAY_CONTAINS","value":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/gpu1"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,9,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:17:56.571Z nUM5e [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"gpus"},"op":"ARRAY_CONTAINS","value":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/gpu2"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,9,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:17:56.582Z oSYLb [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807476","nanos":573000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:17:56.583Z oSYLb [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:17:56.583Z oSYLb [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.583Z nUM5e [Firestore.readStream]: Received response: {"document":null,"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807476","nanos":573000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:17:56.583Z nUM5e [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:17:56.584Z nUM5e [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.584Z RavJM [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:56.584Z oSYLb [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:17:56.584Z oSYLb [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.584Z nUM5e [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:17:56.584Z nUM5e [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.585Z RavJM [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"rigs"}],"where":{"fieldFilter":{"field":{"fieldPath":"id"},"op":"EQUAL","value":{"stringValue":"rig-id"}}},"limit":{"value":1}},"transaction":{"type":"Buffer","data":[17,9,0,0,0,0,0,0,0]}}
Firestore (2.2.8) 2019-08-26T08:17:56.591Z RavJM [Firestore.readStream]: Received response: {"document":{"fields":{"created":{"integerValue":"1566807383464","valueType":"integerValue"},"psu":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS","valueType":"referenceValue"},"createdBy":{"stringValue":"jon-uid","valueType":"stringValue"},"gpus":{"arrayValue":{"values":[{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji","valueType":"referenceValue"},{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb","valueType":"referenceValue"}]},"valueType":"arrayValue"},"id":{"stringValue":"rig-id","valueType":"stringValue"}},"name":"projects/qb-test/databases/(default)/documents/top/data/rigs/wrARZaqBBftLA6RpctRW","createTime":{"seconds":"1566807383","nanos":556000000},"updateTime":{"seconds":"1566807383","nanos":556000000}},"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807476","nanos":587000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:17:56.591Z RavJM [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:17:56.592Z RavJM [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.592Z HmNCp [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:56.592Z lIXKe [ClientPool.acquire]: Re-using existing client with 99 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:56.593Z bm7zP [ClientPool.acquire]: Re-using existing client with 98 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:56.593Z RavJM [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:17:56.593Z RavJM [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.593Z HmNCp [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"psus"}],"where":{"fieldFilter":{"field":{"fieldPath":"id"},"op":"EQUAL","value":{"stringValue":"psu-id"}}},"limit":{"value":1}}}
Firestore (2.2.8) 2019-08-26T08:17:56.594Z lIXKe [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"gpus"}],"where":{"fieldFilter":{"field":{"fieldPath":"id"},"op":"EQUAL","value":{"stringValue":"gpu1"}}},"limit":{"value":1}}}
Firestore (2.2.8) 2019-08-26T08:17:56.595Z bm7zP [Firestore.readStream]: Sending request: {"parent":"projects/qb-test/databases/(default)/documents/top/data","structuredQuery":{"from":[{"collectionId":"gpus"}],"where":{"fieldFilter":{"field":{"fieldPath":"id"},"op":"EQUAL","value":{"stringValue":"gpu2"}}},"limit":{"value":1}}}
Firestore (2.2.8) 2019-08-26T08:17:56.597Z HmNCp [Firestore.readStream]: Received response: {"document":{"fields":{"created":{"integerValue":"1566807383462","valueType":"integerValue"},"createdBy":{"stringValue":"jon-uid","valueType":"stringValue"},"id":{"stringValue":"psu-id","valueType":"stringValue"}},"name":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS","createTime":{"seconds":"1566807383","nanos":556000000},"updateTime":{"seconds":"1566807383","nanos":556000000}},"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807476","nanos":594000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:17:56.597Z HmNCp [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:17:56.598Z HmNCp [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.599Z HmNCp [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:17:56.599Z HmNCp [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.600Z lIXKe [Firestore.readStream]: Received response: {"document":{"fields":{"created":{"integerValue":"1566807383463","valueType":"integerValue"},"createdBy":{"stringValue":"jon-uid","valueType":"stringValue"},"id":{"stringValue":"gpu1","valueType":"stringValue"}},"name":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji","createTime":{"seconds":"1566807383","nanos":556000000},"updateTime":{"seconds":"1566807383","nanos":556000000}},"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807476","nanos":597000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:17:56.600Z lIXKe [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:17:56.600Z lIXKe [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.600Z bm7zP [Firestore.readStream]: Received response: {"document":{"fields":{"created":{"integerValue":"1566807383464","valueType":"integerValue"},"createdBy":{"stringValue":"jon-uid","valueType":"stringValue"},"id":{"stringValue":"gpu2","valueType":"stringValue"}},"name":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb","createTime":{"seconds":"1566807383","nanos":556000000},"updateTime":{"seconds":"1566807383","nanos":556000000}},"transaction":{"type":"Buffer","data":[]},"readTime":{"seconds":"1566807476","nanos":597000000},"skippedResults":0}
Firestore (2.2.8) 2019-08-26T08:17:56.600Z bm7zP [Firestore._initializeStream]: Releasing stream
Firestore (2.2.8) 2019-08-26T08:17:56.601Z bm7zP [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.603Z f7t15 [WriteBatch.commit]: Sending 6 writes
Firestore (2.2.8) 2019-08-26T08:17:56.603Z f7t15 [ClientPool.acquire]: Re-using existing client with 100 remaining operations
Firestore (2.2.8) 2019-08-26T08:17:56.603Z lIXKe [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:17:56.603Z lIXKe [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.603Z bm7zP [Firestore._initializeStream]: Forwarding stream close
Firestore (2.2.8) 2019-08-26T08:17:56.603Z bm7zP [Firestore._initializeStream]: Received stream end
Firestore (2.2.8) 2019-08-26T08:17:56.605Z f7t15 [Firestore.request]: Sending request: {"database":"projects/qb-test/databases/(default)","writes":[{"update":{"name":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS","fields":{"id":{"stringValue":"psu-id"},"updated":{"integerValue":1566807476598},"updatedBy":{"stringValue":"jon-uid"}}},"updateMask":{"fieldPaths":["id","updated","updatedBy"]}},{"update":{"name":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji","fields":{"id":{"stringValue":"gpu1"},"updated":{"integerValue":1566807476600},"updatedBy":{"stringValue":"jon-uid"}}},"updateMask":{"fieldPaths":["id","updated","updatedBy"]}},{"update":{"name":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb","fields":{"id":{"stringValue":"gpu2"},"updated":{"integerValue":1566807476601},"updatedBy":{"stringValue":"jon-uid"}}},"updateMask":{"fieldPaths":["id","updated","updatedBy"]}},{"update":{"name":"projects/qb-test/databases/(default)/documents/top/data/rigs/wrARZaqBBftLA6RpctRW","fields":{"id":{"stringValue":"rig-id"},"psu":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS"},"gpus":{"arrayValue":{"values":[{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji"},{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb"}]}},"updated":{"integerValue":1566807476601},"updatedBy":{"stringValue":"jon-uid"}}},"updateMask":{"fieldPaths":["gpus","id","psu","updated","updatedBy"]}},{"update":{"name":"projects/qb-test/databases/(default)/documents/top/logs/2019-8/jOlYcu4BhhWPunV3ECCw","fields":{"l":{"arrayValue":{"values":[{"mapValue":{"fields":{"m":{"stringValue":"U"},"r":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS"},"d":{"mapValue":{"fields":{"updated":{"integerValue":1566807476598},"updatedBy":{"stringValue":"jon-uid"}}}}}}},{"mapValue":{"fields":{"m":{"stringValue":"U"},"r":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji"},"d":{"mapValue":{"fields":{"updated":{"integerValue":1566807476600},"updatedBy":{"stringValue":"jon-uid"}}}}}}},{"mapValue":{"fields":{"m":{"stringValue":"U"},"r":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb"},"d":{"mapValue":{"fields":{"updated":{"integerValue":1566807476601},"updatedBy":{"stringValue":"jon-uid"}}}}}}},{"mapValue":{"fields":{"m":{"stringValue":"U"},"r":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/rigs/wrARZaqBBftLA6RpctRW"},"d":{"mapValue":{"fields":{"psu":{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/psus/hcNNHorkfzW5L2ybUZnS"},"gpus":{"arrayValue":{"values":[{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/IaBOMM0mw0ujYt1lN3Ji"},{"referenceValue":"projects/qb-test/databases/(default)/documents/top/data/gpus/CuRloMiHUTE0Xu0NKQxb"}]}},"updated":{"integerValue":1566807476601},"updatedBy":{"stringValue":"jon-uid"}}}}}}}]}},"t":{"integerValue":1566807476601}}},"currentDocument":{"exists":false}},{"transform":{"document":"projects/qb-test/databases/(default)/documents/top/logs/2019-8/jOlYcu4BhhWPunV3ECCw","fieldTransforms":[{"fieldPath":"s","setToServerValue":"REQUEST_TIME"}]}}],"transaction":{"type":"Buffer","data":[17,9,0,0,0,0,0,0,0]}}

Error: Timeout of 5000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/jon/checkout/consensys/firestorm/test/QueryBuilder.spec.ts)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7)

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:27 (16 by maintainers)

github_iconTop GitHub Comments

2reactions
lookfirstcommented, Sep 7, 2019

@ryanpbrewster Fixed! =)

0reactions
ryanpbrewstercommented, Sep 27, 2019

Yes, please open a new issue. The emulators are separate, so the RTDB issue will need to be handled separately.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Firestore emulator with transactions - Google Groups
Hi, I was wondering if there was any way to use the firestore emulator with code that uses runTransaction as it looks currently...
Read more >
Emulate Firestore locally | Google Cloud
The Firestore emulator attempts to faithfully replicate the behavior of the production service with some notable limitations. Transactions. The emulator does ...
Read more >
Access data offline | Firestore - Firebase
Cloud Firestore supports offline data persistence. This feature caches a copy of the Cloud Firestore data that your app is actively using ...
Read more >
Cloud Datastore: 503 service Unavailable with 1000/s+ ...
It sounds like you're running into a hotspot with your data model. In other words, your data model might be constraining the maximum...
Read more >
The top 10 things to know about Firestore when choosing a ...
This cache can also save on the cost of reads of documents that are unchanged on the server. This is a huge convenience...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found