[Firestore] emulator is falling over with transactions
See original GitHub issueApologies 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:
- Created 4 years ago
- Comments:27 (16 by maintainers)
@ryanpbrewster Fixed! =)
Yes, please open a new issue. The emulators are separate, so the RTDB issue will need to be handled separately.