Closed joshpetit closed 2 years ago
@joshpetit Thanks for reporting this. It sounds like your request may be malformed. Are you able to turn on debug logging, which will let us know what the request looks like? You should be able to do so by invoking admin.firestore.setLogFunction(console.log)
.
@schmidt-sebastian I'm sorry, I wont be able to touch the code for about 10 days right now, if it's alright with you could you keep the issue open until then?
@joshpetit Yes, that should be fine.
I'm back and thank you for your patience! I turned on debug logging and this is the output I get:
console.log
Firestore (4.13.1) 2021-11-29T13:20:03.554Z GM9oq [WriteBatch.commit]: Sending 1 writes
at Object.logger (node_modules/@google-cloud/firestore/build/src/logger.js:35:9)
console.log
Firestore (4.13.1) 2021-11-29T13:20:03.559Z GM9oq [ClientPool.acquire]: Creating a new client
at Object.logger (node_modules/@google-cloud/firestore/build/src/logger.js:35:9)
console.log
Firestore (4.13.1) 2021-11-29T13:20:03.684Z ##### [Firestore]: Initialized Firestore GAPIC Client
at Object.logger (node_modules/@google-cloud/firestore/build/src/logger.js:35:9)
console.log
Firestore (4.13.1) 2021-11-29T13:20:03.684Z GM9oq [Firestore.request]: Sending request: {"database":"projects/milestone-five-dev/databases/(default)","writes":[{"delete":"projects/milestone-five-dev/databases/(default)/documents/users/user_id"}]}
at Object.logger (node_modules/@google-cloud/firestore/build/src/logger.js:35:9)
console.log
Firestore (4.13.1) 2021-11-29T13:20:03.738Z GM9oq [Firestore.request]: Received error: Error: 2 UNKNOWN:
at Object.callErrorFromStatus (/home/joshu/projects/petit.dev/milestone5/firebase/functions/node_modules/@grpc/grpc-js/src/call.ts:81:24)
at Object.onReceiveStatus (/home/joshu/projects/petit.dev/milestone5/firebase/functions/node_modules/@grpc/grpc-js/src/client.ts:338:36)
at Object.onReceiveStatus (/home/joshu/projects/petit.dev/milestone5/firebase/functions/node_modules/@grpc/grpc-js/src/client-interceptors.ts:426:34)
at Object.onReceiveStatus (/home/joshu/projects/petit.dev/milestone5/firebase/functions/node_modules/@grpc/grpc-js/src/client-interceptors.ts:389:48)
at /home/joshu/projects/petit.dev/milestone5/firebase/functions/node_modules/@grpc/grpc-js/src/call-stream.ts:276:24
at processTicksAndRejections (internal/process/task_queues.js:75:11) {
code: 2,
details: '',
metadata: Metadata {
internalRepr: Map(1) { 'content-type' => [Array] },
options: {}
},
note: 'Exception occurred in retry method that was not classified as transient'
}
at Object.logger (node_modules/@google-cloud/firestore/build/src/logger.js:35:9)
console.log
Firestore (4.13.1) 2021-11-29T13:20:03.743Z 21czJ [WriteBatch.commit]: Sending 1 writes
at Object.logger (node_modules/@google-cloud/firestore/build/src/logger.js:35:9)
console.log
Firestore (4.13.1) 2021-11-29T13:20:03.743Z 21czJ [ClientPool.acquire]: Re-using existing client with 100 remaining operations
at Object.logger (node_modules/@google-cloud/firestore/build/src/logger.js:35:9)
console.log
Firestore (4.13.1) 2021-11-29T13:20:03.743Z 21czJ [Firestore.request]: Sending request: {"database":"projects/milestone-five-dev/databases/(default)","writes":[{"delete":"projects/milestone-five-dev/databases/(default)/documents/users/user_id"}]}
at Object.logger (node_modules/@google-cloud/firestore/build/src/logger.js:35:9)
This is very strange. The bit from the log that performs the request looks valid:
Sending request: {"database":"projects/milestone-five-dev/databases/(default)","writes":[{"delete":"projects/milestone-five-dev/databases/(default)/documents/users/user_id"}]}
Would you be able to provide the same logs without ignoreUndefinedProperties
? I am a little perplexed.
It's actually very strange, if I rerun the tests, one of them will fail but if I rerun the tests a lot of times eventually all of them will pass 😅. My tear down function in the tests does everything correctly afaik, but running tests and the emulators I still encounter problems. Here's the whole log output:
console.warn
{"severity":"WARNING","message":"Warning, estimating Firebase Config based on GCLOUD_PROJECT. Initializing firebase-admin may fail"}
at write (node_modules/firebase-functions/lib/logger.js:39:78)
at Object.warn (node_modules/firebase-functions/lib/logger.js:90:5)
at Object.setup (node_modules/firebase-functions/lib/setup.js:46:22)
at Object.
Thanks for your time!
Hm, there is nothing unusual about the logs. I wish could provide more help here, but I might need a reproduction. Are you able to share more of your code? You can send it me privately at mrschmidt(at)google.com.
I worked with @joshpetit to reproduce this and unfortunately was not able to. We can re-visit this issue once we have a reproducible case.
Environment details
@google-cloud/firestore
version: v4.5.0 (using firebase admin v9.8.0)So I'm using firestore through the firebase-admin sdk and have had some trouble since enabling the ignoreUndefinedProperties field.
I created a file called
admin.ts
and import this file intouser.ts
anduser.test.ts
Within
admin.ts
I have this code:I just recently added ignoreUndefinedProperties since an update function I created may have some undefined values in the object. After doing this I receive this error:
This is inside the testing file where I delete user documents before running a test.
I initially thought that this was just because the test may be messing up, but after running the emulator a similar error was thrown. This is the output of the log:
Error
``` Nov 08, 2021 5:43:16 AM com.google.cloud.datastore.emulator.impl.util.WrappedStreamObserver onError INFO: operation failed: Invalid pattern. Reason: [71:I looked into similar errors and found this, but don't see the
merge
property on the settings object.When I remove ignoreUndefinedProperties from the settings everything works perfectly, so I'm assuming it has something to do with it. If I can't find a solution I'll likely just use this to clean objects before trying to set or update documents.
I've read countless SO posts and haven't found anything similar to this, so help would be really appreciated!
Steps to reproduce
Making sure to follow these steps will guarantee the quickest resolution possible.
Thanks!