Firebase-tools: Uncaught Error: FIRESTORE (5.5.9) INTERNAL ASSERTION FAILED for two server timestamps

Created on 23 Dec 2018  Â·  7Comments  Â·  Source: firebase/firebase-tools

Version info

6.2.2

Platform Information

OS X 10.14.1

Steps to reproduce

I'm playing around with the firestore-emulator typescript test setup. Unfortunately when I add another server timestamp to one of the assertions I get an error. I changed the following test case to have an additional updatedAt field (line 92 in quickstart-nodejs/firestore-emulator/typescript-quickstart/test.ts):

  @test
  async "should only let users create their own profile"() {
    const db = authedApp({ uid: "alice" });
    await firebase.assertSucceeds(
      db
        .collection("users")
        .doc("alice")
        .set({
          birthday: "January 1",
          createdAt: firebase.firestore.FieldValue.serverTimestamp(),
          updatedAt: firebase.firestore.FieldValue.serverTimestamp(), <---- this is new
        })
    );
    await firebase.assertFails(
      db
        .collection("users")
        .doc("bob")
        .set({
          birthday: "January 1",
          createdAt: firebase.firestore.FieldValue.serverTimestamp()
        })
    );
  }

Then run npm test.

Expected behavior

I can add the two timestamps with one call.

Actual behavior

When running npm test I get the following error:


> [email protected] pretest /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart
> tsc


> [email protected] test /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart
> FIREBASE_FIRESTORE_EMULATOR_ADDRESS='127.0.0.1:8080' mocha



  MyApp
    ✓ require users to log in before creating a profile (76ms)
    ✓ should enforce the createdAt date in user profiles (90ms)
    1) should only let users create their own profile
    2) "after each" hook for "should only let users create their own profile"


  2 passing (310ms)
  2 failing

  1) MyApp
       should only let users create their own profile:
     Uncaught Error: FIRESTORE (5.5.9) INTERNAL ASSERTION FAILED: server transform result count (1) should match field transform count (2)
      at fail (node_modules/@firebase/firestore/dist/index.node.cjs.js:153:11)
      at assert (node_modules/@firebase/firestore/dist/index.node.cjs.js:161:9)
      at TransformMutation.serverTransformResults (node_modules/@firebase/firestore/dist/index.node.cjs.js:3867:9)
      at TransformMutation.applyToRemoteDocument (node_modules/@firebase/firestore/dist/index.node.cjs.js:3819:37)
      at MutationBatch.applyToRemoteDocument (node_modules/@firebase/firestore/dist/index.node.cjs.js:7501:37)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:12302:33
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:63
      at PersistencePromise.wrapUserFunction (node_modules/@firebase/firestore/dist/index.node.cjs.js:7750:26)
      at PersistencePromise.wrapSuccess (node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:25)
      at PersistencePromise.next (node_modules/@firebase/firestore/dist/index.node.cjs.js:7725:29)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:12297:18
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:4320:13
      at LLRBNode.inorderTraversal (node_modules/@firebase/firestore/dist/index.node.cjs.js:1832:13)
      at SortedMap.inorderTraversal (node_modules/@firebase/firestore/dist/index.node.cjs.js:1708:26)
      at SortedSet.forEach (node_modules/@firebase/firestore/dist/index.node.cjs.js:4319:19)
      at LocalStore.applyWriteToRemoteDocuments (node_modules/@firebase/firestore/dist/index.node.cjs.js:12292:17)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:11950:30
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:63
      at PersistencePromise.wrapUserFunction (node_modules/@firebase/firestore/dist/index.node.cjs.js:7750:26)
      at PersistencePromise.wrapSuccess (node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:25)
      at PersistencePromise.next (node_modules/@firebase/firestore/dist/index.node.cjs.js:7725:29)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:11949:18
      at MemoryPersistence.runTransaction (node_modules/@firebase/firestore/dist/index.node.cjs.js:12999:16)
      at LocalStore.acknowledgeBatch (node_modules/@firebase/firestore/dist/index.node.cjs.js:11944:33)
      at SyncEngine.applySuccessfulWrite (node_modules/@firebase/firestore/dist/index.node.cjs.js:16159:14)
      at RemoteStore.onMutationResult (node_modules/@firebase/firestore/dist/index.node.cjs.js:14876:32)
      at PersistentWriteStream.onMessage (node_modules/@firebase/firestore/dist/index.node.cjs.js:13866:34)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:13697:30
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:13737:28
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7227:20
      at process._tickCallback (internal/process/next_tick.js:68:7)

  2) MyApp
       "after each" hook for "should only let users create their own profile":
     Error: FIRESTORE (5.5.9) INTERNAL ASSERTION FAILED: AsyncQueue is already failed: Error: FIRESTORE (5.5.9) INTERNAL ASSERTION FAILED: server transform result count (1) should match field transform count (2)
    at fail (node_modules/@firebase/firestore/dist/index.node.cjs.js:153:11)
    at assert (node_modules/@firebase/firestore/dist/index.node.cjs.js:161:9)
    at TransformMutation.serverTransformResults (node_modules/@firebase/firestore/dist/index.node.cjs.js:3867:9)
    at TransformMutation.applyToRemoteDocument (node_modules/@firebase/firestore/dist/index.node.cjs.js:3819:37)
    at MutationBatch.applyToRemoteDocument (node_modules/@firebase/firestore/dist/index.node.cjs.js:7501:37)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:12302:33
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:63
    at PersistencePromise.wrapUserFunction (node_modules/@firebase/firestore/dist/index.node.cjs.js:7750:26)
    at PersistencePromise.wrapSuccess (node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:25)
    at PersistencePromise.next (node_modules/@firebase/firestore/dist/index.node.cjs.js:7725:29)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:12297:18
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:4320:13
    at LLRBNode.inorderTraversal (node_modules/@firebase/firestore/dist/index.node.cjs.js:1832:13)
    at SortedMap.inorderTraversal (node_modules/@firebase/firestore/dist/index.node.cjs.js:1708:26)
    at SortedSet.forEach (node_modules/@firebase/firestore/dist/index.node.cjs.js:4319:19)
    at LocalStore.applyWriteToRemoteDocuments (node_modules/@firebase/firestore/dist/index.node.cjs.js:12292:17)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:11950:30
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:63
    at PersistencePromise.wrapUserFunction (node_modules/@firebase/firestore/dist/index.node.cjs.js:7750:26)
    at PersistencePromise.wrapSuccess (node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:25)
    at PersistencePromise.next (node_modules/@firebase/firestore/dist/index.node.cjs.js:7725:29)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:11949:18
    at MemoryPersistence.runTransaction (node_modules/@firebase/firestore/dist/index.node.cjs.js:12999:16)
    at LocalStore.acknowledgeBatch (node_modules/@firebase/firestore/dist/index.node.cjs.js:11944:33)
    at SyncEngine.applySuccessfulWrite (node_modules/@firebase/firestore/dist/index.node.cjs.js:16159:14)
    at RemoteStore.onMutationResult (node_modules/@firebase/firestore/dist/index.node.cjs.js:14876:32)
    at PersistentWriteStream.onMessage (node_modules/@firebase/firestore/dist/index.node.cjs.js:13866:34)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:13697:30
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:13737:28
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7227:20
    at process._tickCallback (internal/process/next_tick.js:68:7)
      at fail (node_modules/@firebase/firestore/dist/index.node.cjs.js:153:11)
      at AsyncQueue.verifyNotFailed (node_modules/@firebase/firestore/dist/index.node.cjs.js:7272:13)
      at AsyncQueue.enqueue (node_modules/@firebase/firestore/dist/index.node.cjs.js:7224:14)
      at FirestoreClient.shutdown (node_modules/@firebase/firestore/dist/index.node.cjs.js:17779:32)
      at Firestore.<anonymous> (node_modules/@firebase/firestore/dist/index.node.cjs.js:19024:69)
      at step (node_modules/tslib/tslib.js:133:27)
      at Object.next (node_modules/tslib/tslib.js:114:57)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/tslib/tslib.js:107:75
      at new Promise (<anonymous>)
      at Object.__awaiter (node_modules/tslib/tslib.js:103:16)
      at Object.delete (node_modules/@firebase/firestore/dist/index.node.cjs.js:19021:57)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/app/dist/index.node.cjs.js:102:47
      at Array.map (<anonymous>)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/app/dist/index.node.cjs.js:101:41

Since it seems to be an error with the emulator I thought of filing an issue here as well. I already opened one here.

Thanks in advance!

firestore bug

All 7 comments

Good catch! We have a fix, I'll update this issue once it is merged and we have a release ETA.

@laurenzlong is the issue resolved?

https://github.com/firebase/firebase-tools/pull/1083 fixed this issue, and it will go out with the next release (version 6.2.3, not yet released).

Re-opening until that release goes out.

The fix for this issue has been released, closing.

Hi, I've upgraded the firebase SDK to 5.8.0 and firebase tools to 6.3.0 but I am still getting this error when calling firebase.firestore.FieldValue.serverTimestamp().

I'm not sure what is producing this error, it seems to occur randomly. Sometimes it works, sometimes it doesn't.

Below is the error as logged in the console.

index.cjs.js:175 Uncaught Error: FIRESTORE (5.8.0) INTERNAL ASSERTION FAILED: 
    AsyncQueue is already failed: Error: FIRESTORE (5.8.0) INTERNAL ASSERTION FAILED: Unknown FieldValue {"localWriteTime":{"seconds":1548602883,"nanoseconds":762000000},"previousValue":null,"typeOrder":3}
    at fail (index.cjs.js:175) at JsonProtoSerializer.toValue (index.cjs.js:6976) at index.cjs.js:7726 at Array.map () 
    at JsonProtoSerializer.toCursor (index.cjs.js:7725) 
    at JsonProtoSerializer.toQueryTarget (index.cjs.js:7558) 
    at JsonProtoSerializer.toTarget (index.cjs.js:7650) 
    at PersistentListenStream.watch (index.cjs.js:16906) 
    at RemoteStore.sendWatchRequest (index.cjs.js:17859) 
    at RemoteStore.listen (index.cjs.js:17814) at SyncEngine. (index.cjs.js:19354) 
    at step (tslib.es6.js:197) 
    at Object.next (tslib.es6.js:127) 
    at fulfilled (tslib.es6.js:80) 
    at fail (index.cjs.js:175) 
    at AsyncQueue.verifyNotFailed (index.cjs.js:8735) 
    at AsyncQueue.enqueue (index.cjs.js:8682) 
    at AsyncQueue.enqueueAndForget (index.cjs.js:8671) 
    at index.cjs.js:16850 
    at StreamBridge.wrappedOnMessage (index.cjs.js:16801) 
    at StreamBridge.callOnMessage (index.cjs.js:7992) 
    at index.cjs.js:8267 
    at W. (index.cjs.js:8210) 
    at W.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.Lb (index.esm.js:860) 
    at W.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.dispatchEvent (index.esm.js:815) 
    at X.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.X.ud (index.esm.js:3682) 
    at $c.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.dg (index.esm.js:3431) at $c.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.ue (index.esm.js:3320) 
    at R.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.Yc (index.esm.js:1875) 
    at R.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.Fd (index.esm.js:1771) 
    at R.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.hg (index.esm.js:1733) 
    at R.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.Me (index.esm.js:1690) 
    at R.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.mg (index.esm.js:1685) 
    at V.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.Lb (index.esm.js:860) 
    at V.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.dispatchEvent (index.esm.js:815) 
    at V.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.se (index.esm.js:2840) at V.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.eg (index.esm.js:2836) 
    at V.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.e.te (index.esm.js:2832)

Looking into that error. It looks a bit different. UnknownFieldValue instead of server transform result count. Would you mind opening this in a separate issue?

created a new issue here #1133 . Thanks for looking into it @ryanpbrewster ! Let me know if there's anything I can do to help.

Was this page helpful?
0 / 5 - 0 ratings