firebase / firebase-functions-python

Apache License 2.0
136 stars 22 forks source link

Error in firebase_functions/private/util.py processing event time attribute #136

Open ekalosak opened 1 year ago

ekalosak commented 1 year ago

After updating firebase-tools, using the functions emulator, any time an @firestore_fn-decorated function is executed, I get this error:

...
>    File "/.../venv/lib/python3.11/site-packages/firebase_functions/firestore_fn.py", line 115, in _firestore_endpoint_handler
>      is_nanoseconds = _util.is_precision_timestamp(time)
>                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/.../venv/lib/python3.11/site-packages/firebase_functions/private/util.py", line 333, in is_precision_timestamp
>      _, s_fraction = time.split(".")
>      ^^^^^^^^^^^^^
>  ValueError: not enough values to unpack (expected 2, got 1)

The relevant code includes this block from firebase_fn.py and this block from private/util.py.

After upgrading to the latest firebase tools npm install -g firebase-tools to v12.5.4, the CloudEvent event's time attribute has this iso format: 2023-09-16T13:32:06Z extracted by adding a print() call to the firebase_functions' site-package source.

So, that unprotected time.split('.') call isn't accounting for the ostensible change to the time attribute's format.


I'm using Python 3.11.4 on macOS 12.6 with firebase-functions v0.1.1 (latest).

ekalosak commented 1 year ago

It's worth noting that downgrading firebase-tools from the latest v12.5.4 to the previous v12.5.3 fixes the issue.

tl;dr fix this bug by running: npm install -g firebase-tools@12.5.3

Firebase staff - please consider adding an integration test that covers @firestore_fn-triggered functions to the firebase-tools CI.

mitch-36 commented 1 year ago

Thanks for sharing. npm install -g firebase-tools@12.5.3 Fixed the issue for me too.

joaqo commented 1 year ago

I have the same issue, but running npm install -g firebase-tools@12.5.3 didn't fix it for me.

I followed the official tutorial to the letter and encountered this issue, so it seems to be quite a big oversight from the firebase team.

EDIT: I had installed firebase tools from the bash script, had to uninstall it, install this specific npm version, and the issue is now fixed. Official tutorial is still broken though.

brianellin commented 1 year ago

Same issue for me using the latest firebase.tools. Using 12.5.3 via npm for now until the issue is resolved.

Also, I'd recommend some better docs on "installing" a specific version binary from the firebase.tools website.

exaby73 commented 1 year ago

Snce this issue has been fixed, I'll close this issue. Please comment if you disagree with my decision

jackall3n commented 1 year ago

Snce this issue has been fixed, I'll close this issue. Please comment if you disagree with my decision

This is still an issue in the latest version, this issue shouldn't be closed.

joaqo commented 1 year ago

Yeah, this is the 2nd recent issue @exaby73 has closed that hasn't actually been fixed.

exaby73 commented 1 year ago

@jackall3n @joaqo Sorry about this. I realise that the workaround was downgrading the firebase_tools version. Correct me if I am wrong. I'll reopen this issue and investigate further

antopolskiy commented 1 year ago

+1 this issue still happens and if not for this thread it would have been very difficult for me to resolve. I spent ~1 hour fruitlessly playing around with versions of various components before finding this. npm install -g firebase-tools@12.5.3 works.

zsais commented 1 year ago

+1 this issue still exists

exaby73 commented 1 year ago

@zsais @joaqo Could you check this issue against the main branch by change the dependency in your requirements.txt?

Change firebase_functions=<version> to git+https://github.com/firebase/firebase-functions-python.git@main#egg=firebase-functions

exaby73 commented 9 months ago

Could you please check with the latest version 0.2.0 and confirm if this issue is fixed on your side? There was a PR that was merged but not released earlier which may have fixed this issue

antopolskiy commented 8 months ago

I just tried it with firebase-tools v13.3.0 and it still fails.

exaby73 commented 7 months ago

Hey @antopolskiy if you can still reproduce it, could you provide me with your stack trace?