Repository navigation
[Bug] stability_digest_payload_from_ce_payload fails with AttributeError: 'dict' object has no attribute 'split' #260
Description
Bug Description
When using @crashlytics_fn.on_stability_digest_published(), the function fails with an AttributeError because digestDate is received as a dictionary (Firebase Timestamp object) instead of a string, but the SDK attempts to call .split() on it.
Error Message
AttributeError: 'dict' object has no attribute 'split'
Full Stack Trace
Exception on / [POST]
Traceback (most recent call last):
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/flask/app.py", line 1511, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/flask/app.py", line 919, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/flask/app.py", line 917, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/flask/app.py", line 902, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/functions_framework/execution_id.py", line 157, in wrapper
result = view_function(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/functions_framework/init.py", line 188, in view_func
function(event)
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/firebase_functions/alerts/crashlytics_fn.py", line 293, in crashlytics_decorator_wrapped
func(crashlytics_event_from_ce(raw))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/firebase_functions/private/_alerts_fn.py", line 243, in crashlytics_event_from_ce
return event_from_ce_helper(raw, CrashlyticsEvent)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/firebase_functions/private/_alerts_fn.py", line 209, in event_from_ce_helper
"data": firebase_alert_data_from_ce(event_dict),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/firebase_functions/private/_alerts_fn.py", line 175, in firebase_alert_data_from_ce
alert_payload = stability_digest_payload_from_ce_payload(alert_payload)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/firebase_functions/private/_alerts_fn.py", line 136, in stability_digest_payload_from_ce_payload
digest_date=_util.timestamp_conversion(payload["digestDate"]),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/firebase_functions/private/util.py", line 407, in timestamp_conversion
precision_timestamp = get_precision_timestamp(time)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/google.python.pip/pip/lib/python3.11/site-packages/firebase_functions/private/util.py", line 391, in get_precision_timestamp
_, s_fraction = time.split(".")
^^^^^^^^^^
AttributeError: 'dict' object has no attribute 'split'
Environment
firebase-functions version: 0.5.0 (also happens in 0.4.x)
firebase-admin version:7.1.0
Python version: 3.11
Deployment environment: Google Cloud Functions (2nd gen)
Activity
CorieW commentedon Nov 6, 2025
Hi @itartisan . Thanks for reporting this issue! We've received your issue and will provide updates as soon as we have them.
CorieW commentedon Mar 19, 2026
Unable to reproduce. MRE
Does this issue still occur for you?
CorieW commentedon Apr 29, 2026
Closing as issue is stale with no ability to reproduce.
If you have this issue at any point in the future, feel free to open a fresh issue!
brunogabriel commentedon Apr 30, 2026
@CorieW same here, got this today and last week, it's a daily event, right? emulator is not reproductive
AttributeError: 'dict' object has no attribute 'split'
at .get_precision_timestamp ( /layers/google.python.pip/pip/lib/python3.12/site-packages/firebase_functions/private/util.py:396 )
at .timestamp_conversion ( /layers/google.python.pip/pip/lib/python3.12/site-packages/firebase_functions/private/util.py:413 )
at .stability_digest_payload_from_ce_payload ( /layers/google.python.pip/pip/lib/python3.12/site-packages/firebase_functions/private/_alerts_fn.py:126 )
at .firebase_alert_data_from_ce ( /layers/google.python.pip/pip/lib/python3.12/site-packages/firebase_functions/private/_alerts_fn.py:165 )
at .event_from_ce_helper ( /layers/google.python.pip/pip/lib/python3.12/site-packages/firebase_functions/private/_alerts_fn.py:199 )
at .crashlytics_event_from_ce ( /layers/google.python.pip/pip/lib/python3.12/site-packages/firebase_functions/private/_alerts_fn.py:233 )
at .crashlytics_decorator_wrapped ( /layers/google.python.pip/pip/lib/python3.12/site-packages/firebase_functions/alerts/crashlytics_fn.py:296 )
at .view_func ( /layers/google.python.pip/pip/lib/python3.12/site-packages/functions_framework/init.py:188 )
at .wrapper ( /layers/google.python.pip/pip/lib/python3.12/site-packages/functions_framework/execution_id.py:157 )
at .dispatch_request ( /layers/google.python.pip/pip/lib/python3.12/site-packages/flask/app.py:902 )
at .full_dispatch_request ( /layers/google.python.pip/pip/lib/python3.12/site-packages/flask/app.py:917 )
at .full_dispatch_request ( /layers/google.python.pip/pip/lib/python3.12/site-packages/flask/app.py:919 )
at .wsgi_app ( /layers/google.python.pip/pip/lib/python3.12/site-packages/flask/app.py:1511 )
CorieW commentedon Apr 30, 2026
@brunogabriel thanks for notifying me of this.
What version of firebase-functions are you using?
brunogabriel commentedon Apr 30, 2026
0.5 and 0.4, maybe buff sent data in different format, but I'll try on my side to do different, is there another way?