Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Database once() should only fire once #4864

Merged
merged 4 commits into from
May 11, 2021
Merged

Database once() should only fire once #4864

merged 4 commits into from
May 11, 2021

Conversation

schmidt-sebastian
Copy link
Contributor

@schmidt-sebastian schmidt-sebastian commented May 4, 2021

The way once() was implemented led to some level of recursion if the user updated the value inside the once callback. This update would get executed synchronously, which could trigger new invocations of the once() callback before it was unregistered.

Repo: https://jsbin.com/xofinop/4/edit?html,js,console

@schmidt-sebastian schmidt-sebastian requested a review from jsdt as a code owner May 4, 2021 20:37
@changeset-bot
Copy link

changeset-bot bot commented May 4, 2021

🦋 Changeset detected

Latest commit: 3aad259

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
Name Type
@firebase/database Patch
firebase Patch
@firebase/rules-unit-testing Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 4, 2021

Binary Size Report

Affected SDKs

  • @firebase/analytics

    Type Base (d095ad3) Head (627537b) Diff
    esm2017 ? 18.7 kB ? (?)
    main ? 24.2 kB ? (?)
    module ? 23.4 kB ? (?)
  • @firebase/api-documenter

    Type Base (d095ad3) Head (627537b) Diff
    main ? 3.72 kB ? (?)
  • @firebase/app

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 10.9 kB ? (?)
    esm2017 ? 9.63 kB ? (?)
    lite ? 8.95 kB ? (?)
    lite-esm2017 ? 7.93 kB ? (?)
    main ? 9.99 kB ? (?)
    module ? 10.9 kB ? (?)
    react-native ? 9.70 kB ? (?)
  • @firebase/auth

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 181 kB ? (?)
    main ? 181 kB ? (?)
    module ? 181 kB ? (?)
  • @firebase/component

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 7.24 kB ? (?)
    esm2017 ? 5.55 kB ? (?)
    main ? 7.57 kB ? (?)
    module ? 7.24 kB ? (?)
  • @firebase/database

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 296 kB ? (?)
    esm2017 ? 264 kB ? (?)
    main ? 298 kB ? (?)
    module ? 296 kB ? (?)
  • @firebase/database-compat

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 86.3 kB ? (?)
    main ? 102 kB ? (?)
    module ? 86.3 kB ? (?)
  • @firebase/database-exp

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 246 kB ? (?)
    main ? 278 kB ? (?)
    module ? 246 kB ? (?)
  • @firebase/firestore

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 283 kB ? (?)
    esm2017 ? 226 kB ? (?)
    main ? 530 kB ? (?)
    module ? 283 kB ? (?)
    react-native ? 226 kB ? (?)
  • @firebase/firestore-compat

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 28.6 kB ? (?)
    main ? 37.6 kB ? (?)
    module ? 28.6 kB ? (?)
    react-native ? 28.3 kB ? (?)
  • @firebase/firestore-exp

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 223 kB ? (?)
    main ? 506 kB ? (?)
    module ? 223 kB ? (?)
    react-native ? 224 kB ? (?)
  • @firebase/firestore-lite

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 72.0 kB ? (?)
    main ? 146 kB ? (?)
    module ? 72.0 kB ? (?)
    react-native ? 72.2 kB ? (?)
  • @firebase/firestore/bundle

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 289 kB ? (?)
    esm2017 ? 176 kB ? (?)
    main ? 526 kB ? (?)
    module ? 289 kB ? (?)
    react-native ? 176 kB ? (?)
  • @firebase/firestore/memory

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 215 kB ? (?)
    esm2017 ? 172 kB ? (?)
    main ? 324 kB ? (?)
    module ? 215 kB ? (?)
    react-native ? 172 kB ? (?)
  • @firebase/firestore/memory-bundle

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 224 kB ? (?)
    esm2017 ? 176 kB ? (?)
    main ? 321 kB ? (?)
    module ? 224 kB ? (?)
    react-native ? 176 kB ? (?)
  • @firebase/functions

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 10.6 kB ? (?)
    esm2017 ? 8.15 kB ? (?)
    main ? 11.0 kB ? (?)
    module ? 10.6 kB ? (?)
  • @firebase/installations

    Type Base (d095ad3) Head (627537b) Diff
    esm2017 ? 16.6 kB ? (?)
    main ? 22.2 kB ? (?)
    module ? 21.6 kB ? (?)
  • @firebase/logger

    Type Base (d095ad3) Head (627537b) Diff
    esm2017 ? 3.25 kB ? (?)
    main ? 5.38 kB ? (?)
    module ? 4.65 kB ? (?)
  • @firebase/messaging

    Type Base (d095ad3) Head (627537b) Diff
    esm2017 ? 26.2 kB ? (?)
    main ? 34.9 kB ? (?)
    module ? 34.4 kB ? (?)
  • @firebase/performance

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 27.7 kB ? (?)
    esm2017 ? 25.9 kB ? (?)
    main ? 28.0 kB ? (?)
    module ? 27.7 kB ? (?)
  • @firebase/polyfill

    Type Base (d095ad3) Head (627537b) Diff
    main ? 747 B ? (?)
    module ? 705 B ? (?)
  • @firebase/remote-config

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 22.4 kB ? (?)
    esm2017 ? 17.4 kB ? (?)
    main ? 23.0 kB ? (?)
    module ? 22.4 kB ? (?)
  • @firebase/rules-unit-testing

    Type Base (d095ad3) Head (627537b) Diff
    main ? 12.6 kB ? (?)
  • @firebase/storage

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 63.4 kB ? (?)
    esm2017 ? 54.6 kB ? (?)
    main ? 63.8 kB ? (?)
    module ? 63.4 kB ? (?)
  • @firebase/storage-compat

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 10.2 kB ? (?)
    main ? 29.1 kB ? (?)
    module ? 10.2 kB ? (?)
  • @firebase/storage-exp

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 51.5 kB ? (?)
    main ? 52.6 kB ? (?)
    module ? 51.5 kB ? (?)
  • @firebase/util

    Type Base (d095ad3) Head (627537b) Diff
    browser ? 21.2 kB ? (?)
    esm2017 ? 20.0 kB ? (?)
    main ? 25.8 kB ? (?)
    module ? 21.2 kB ? (?)
  • @firebase/webchannel-wrapper

    Type Base (d095ad3) Head (627537b) Diff
    esm2017 ? 39.5 kB ? (?)
    main ? 46.9 kB ? (?)
    module ? 40.8 kB ? (?)
  • firebase

    Click to show 15 binary size changes.
    Type Base (d095ad3) Head (627537b) Diff
    firebase-analytics.js ? 35.8 kB ? (?)
    firebase-app.js ? 21.2 kB ? (?)
    firebase-auth.js ? 177 kB ? (?)
    firebase-database.js ? 187 kB ? (?)
    firebase-firestore.js ? 332 kB ? (?)
    firebase-firestore.memory.js ? 266 kB ? (?)
    firebase-functions.js ? 10.7 kB ? (?)
    firebase-installations.js ? 19.3 kB ? (?)
    firebase-messaging.js ? 41.0 kB ? (?)
    firebase-performance-standalone.es2017.js ? 72.9 kB ? (?)
    firebase-performance-standalone.js ? 49.2 kB ? (?)
    firebase-performance.js ? 38.3 kB ? (?)
    firebase-remote-config.js ? 36.9 kB ? (?)
    firebase-storage.js ? 41.6 kB ? (?)
    firebase.js ? 874 kB ? (?)

Test Logs

@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 4, 2021

Size Analysis Report

Affected Products

No changes between base commit (d095ad3) and head commit (627537b).

@schmidt-sebastian
Copy link
Contributor Author

@hsubox76 Do you have time to take a look at this?

@hsubox76 hsubox76 merged commit 5b202f8 into master May 11, 2021
@hsubox76 hsubox76 deleted the mrschmidt/once branch May 11, 2021 21:43
@google-oss-bot google-oss-bot mentioned this pull request May 12, 2021
@firebase firebase locked and limited conversation to collaborators Jun 11, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants