Skip to content

firestore: minor refactor of listener registration of "versionchange" indexedb events #9087

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

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

dconeybe
Copy link
Contributor

@dconeybe dconeybe commented Jun 9, 2025

This PR modifies the SimpleDb class by deleting the setVersionChangeListener() method and replacing it with a new setDatabaseDeletedListener() method. The new method abstracts away the details of IndexedDb events and simply lets the caller get notified of the event in which it is interested, namely, impending or past deletion of the IndexedDb database.

This PR is the first step in a multi-step chain of PRs that will unify the callback for "versionchange" events with newVersion===null and detection of "clear site data" button being pressed in web browsers. The latter logic was added in PR #8871 but was problematic in at least one case (issue #9056). The ultimate goal is to provide an experimental setting with which affected customers can opt out of the drastic response of the Firestore SDK to "close" events on the IndexedDb database when it appears that such an event is in response to the "clear site data" button being clicked, which can result in corruption of the IndexedDb database if ignored.

@dconeybe dconeybe self-assigned this Jun 9, 2025
@dconeybe dconeybe requested review from a team as code owners June 9, 2025 19:48
Copy link

changeset-bot bot commented Jun 9, 2025

🦋 Changeset detected

Latest commit: 2ff82d8

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

This PR includes changesets to release 3 packages
Name Type
@firebase/firestore Patch
firebase Patch
@firebase/firestore-compat 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

Copy link
Contributor

github-actions bot commented Jun 9, 2025

Vertex AI Mock Responses Check ⚠️

A newer major version of the mock responses for Vertex AI unit tests is available. update_vertexai_responses.sh should be updated to clone the latest version of the responses: v14.0

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Jun 9, 2025

Size Report 1

Affected Products

  • @firebase/firestore

    TypeBase (a058309)Merge (0676c24)Diff
    browser385 kB386 kB+627 B (+0.2%)
    main596 kB596 kB+510 B (+0.1%)
    module385 kB386 kB+627 B (+0.2%)
    react-native386 kB386 kB+627 B (+0.2%)
  • bundle

    TypeBase (a058309)Merge (0676c24)Diff
    firestore (CSI Auto Indexing Disable and Delete)280 kB280 kB+566 B (+0.2%)
    firestore (CSI Auto Indexing Enable)280 kB280 kB+566 B (+0.2%)
    firestore (Persistence)311 kB311 kB+315 B (+0.1%)
    firestore (Query Cursors)256 kB256 kB+251 B (+0.1%)
    firestore (Query)254 kB254 kB+251 B (+0.1%)
    firestore (Read data once)242 kB242 kB+251 B (+0.1%)
    firestore (Read Write w Persistence)336 kB336 kB+566 B (+0.2%)
    firestore (Realtime updates)244 kB244 kB+251 B (+0.1%)
    firestore (Transaction)221 kB221 kB+251 B (+0.1%)
    firestore (Write data)220 kB221 kB+251 B (+0.1%)
  • firebase

    TypeBase (a058309)Merge (0676c24)Diff
    firebase-compat.js802 kB803 kB+548 B (+0.1%)
    firebase-firestore-compat.js347 kB348 kB+548 B (+0.2%)
    firebase-firestore.js449 kB449 kB+627 B (+0.1%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/MI53F9f0Kr.html

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Jun 9, 2025

Size Analysis Report 1

Affected Products

  • @firebase/firestore

    • addDoc

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size135 kB135 kB+248 B (+0.2%)
      size-with-ext-deps207 kB207 kB+251 B (+0.1%)
    • clearIndexedDbPersistence

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size25.1 kB25.6 kB+466 B (+1.9%)
      size-with-ext-deps95.5 kB96.0 kB+468 B (+0.5%)

      Dependency

      TypeBase (a058309)Merge (0676c24)Diff
      functions

      16 dependencies

      __PRIVATE__fail
      __PRIVATE_argToString
      __PRIVATE_checkForAndReportiOSError
      __PRIVATE_cloneLongPollingOptions
      __PRIVATE_getAndroidVersion
      __PRIVATE_getMessageOrStack
      __PRIVATE_hardAssert
      __PRIVATE_indexedDbStoragePrefix
      __PRIVATE_isIndexedDbTransactionError
      __PRIVATE_logDebug
      __PRIVATE_logError
      __PRIVATE_validateIsNotUsedTogether
      __PRIVATE_wrapRequest
      clearIndexedDbPersistence
      fail
      getDocument

      17 dependencies

      __PRIVATE__fail
      __PRIVATE_argToString
      __PRIVATE_checkForAndReportiOSError
      __PRIVATE_cloneLongPollingOptions
      __PRIVATE_getAndroidVersion
      __PRIVATE_getMessageOrStack
      __PRIVATE_hardAssert
      __PRIVATE_indexedDbStoragePrefix
      __PRIVATE_isIndexedDbTransactionError
      __PRIVATE_logDebug
      __PRIVATE_logError
      __PRIVATE_logWarn
      __PRIVATE_validateIsNotUsedTogether
      __PRIVATE_wrapRequest
      clearIndexedDbPersistence
      fail
      getDocument

      + __PRIVATE_logWarn

    • deleteAllPersistentCacheIndexes

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size97.3 kB97.6 kB+248 B (+0.3%)
      size-with-ext-deps169 kB169 kB+251 B (+0.1%)
    • deleteDoc

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size125 kB125 kB+248 B (+0.2%)
      size-with-ext-deps197 kB197 kB+251 B (+0.1%)
    • disableNetwork

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size113 kB114 kB+248 B (+0.2%)
      size-with-ext-deps185 kB186 kB+251 B (+0.1%)
    • disablePersistentCacheIndexAutoCreation

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size97.3 kB97.5 kB+248 B (+0.3%)
      size-with-ext-deps169 kB169 kB+251 B (+0.1%)
    • enableIndexedDbPersistence

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size189 kB190 kB+314 B (+0.2%)
      size-with-ext-deps262 kB262 kB+315 B (+0.1%)
    • enableMultiTabIndexedDbPersistence

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size226 kB226 kB+314 B (+0.1%)
      size-with-ext-deps298 kB298 kB+315 B (+0.1%)
    • enableNetwork

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size113 kB114 kB+248 B (+0.2%)
      size-with-ext-deps185 kB186 kB+251 B (+0.1%)
    • enablePersistentCacheIndexAutoCreation

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size97.3 kB97.5 kB+248 B (+0.3%)
      size-with-ext-deps169 kB169 kB+251 B (+0.1%)
    • executeWrite

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size124 kB124 kB+248 B (+0.2%)
      size-with-ext-deps196 kB196 kB+251 B (+0.1%)
    • getAggregateFromServer

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size121 kB121 kB+248 B (+0.2%)
      size-with-ext-deps193 kB193 kB+251 B (+0.1%)
    • getCountFromServer

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size121 kB122 kB+248 B (+0.2%)
      size-with-ext-deps193 kB193 kB+251 B (+0.1%)
    • getDoc

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size156 kB156 kB+248 B (+0.2%)
      size-with-ext-deps228 kB228 kB+251 B (+0.1%)
    • getDocFromCache

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size105 kB105 kB+248 B (+0.2%)
      size-with-ext-deps177 kB177 kB+251 B (+0.1%)
    • getDocFromServer

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size156 kB156 kB+248 B (+0.2%)
      size-with-ext-deps228 kB228 kB+251 B (+0.1%)
    • getDocs

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size157 kB158 kB+248 B (+0.2%)
      size-with-ext-deps229 kB230 kB+251 B (+0.1%)
    • getDocsFromCache

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size113 kB113 kB+248 B (+0.2%)
      size-with-ext-deps185 kB185 kB+251 B (+0.1%)
    • getDocsFromServer

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size157 kB157 kB+248 B (+0.2%)
      size-with-ext-deps229 kB229 kB+251 B (+0.1%)
    • loadBundle

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size123 kB123 kB+248 B (+0.2%)
      size-with-ext-deps195 kB195 kB+251 B (+0.1%)
    • namedQuery

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size98.2 kB98.4 kB+248 B (+0.3%)
      size-with-ext-deps170 kB170 kB+251 B (+0.1%)
    • onSnapshot

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size158 kB158 kB+248 B (+0.2%)
      size-with-ext-deps230 kB230 kB+251 B (+0.1%)
    • onSnapshotsInSync

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size147 kB147 kB+248 B (+0.2%)
      size-with-ext-deps219 kB219 kB+251 B (+0.1%)
    • persistentLocalCache

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size185 kB186 kB+314 B (+0.2%)
      size-with-ext-deps258 kB258 kB+315 B (+0.1%)
    • persistentMultipleTabManager

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size221 kB222 kB+314 B (+0.1%)
      size-with-ext-deps293 kB294 kB+315 B (+0.1%)
    • persistentSingleTabManager

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size185 kB185 kB+314 B (+0.2%)
      size-with-ext-deps257 kB258 kB+315 B (+0.1%)
    • runTransaction

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size135 kB135 kB+248 B (+0.2%)
      size-with-ext-deps207 kB207 kB+251 B (+0.1%)
    • setDoc

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size134 kB134 kB+248 B (+0.2%)
      size-with-ext-deps206 kB206 kB+251 B (+0.1%)
    • setIndexConfiguration

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size101 kB101 kB+248 B (+0.2%)
      size-with-ext-deps172 kB173 kB+251 B (+0.1%)
    • updateDoc

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size134 kB135 kB+248 B (+0.2%)
      size-with-ext-deps206 kB207 kB+251 B (+0.1%)
    • waitForPendingWrites

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size114 kB114 kB+248 B (+0.2%)
      size-with-ext-deps186 kB186 kB+251 B (+0.1%)
    • writeBatch

      Size

      TypeBase (a058309)Merge (0676c24)Diff
      size136 kB137 kB+248 B (+0.2%)
      size-with-ext-deps208 kB209 kB+251 B (+0.1%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/6Mjp3nvfKp.html

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

Successfully merging this pull request may close these issues.

3 participants