Skip to content

[Bug] stability_digest_payload_from_ce_payload fails with AttributeError: 'dict' object has no attribute 'split' #260

Description

@itartisan

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

  1. CorieW commented on Nov 6, 2025

    @CorieW
    Member

    Hi @itartisan . Thanks for reporting this issue! We've received your issue and will provide updates as soon as we have them.

  2. CorieW commented on Mar 19, 2026

    @CorieW
    Member

    Unable to reproduce. MRE

    Does this issue still occur for you?

  3. CorieW commented on Apr 29, 2026

    @CorieW
    Member

    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!

  4. brunogabriel commented on Apr 30, 2026

    @brunogabriel

    @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 )

  5. CorieW commented on Apr 30, 2026

    @CorieW
    Member

    @brunogabriel thanks for notifying me of this.

    What version of firebase-functions are you using?

  6. reopened this on Apr 30, 2026
  7. brunogabriel commented on Apr 30, 2026

    @brunogabriel

    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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions