firebase-js-sdk icon indicating copy to clipboard operation
firebase-js-sdk copied to clipboard

Fix metadata sync issue for cache listeners in multi-tab

Open milaGGL opened this issue 1 year ago • 4 comments

Issue: when creating a snapshot listener, it's QueryTargetState is simply set to "not-current" if it is listening to cache only. This is going to create out-of-sync metadata in persistence multi-tabs:

scenario:

  1. Create a snapshot listener in primary client, listen to server
  2. It raised a snapshot from server, which is up-to-date (fromCache=false), and store it into cache
  3. Listen to same query with source==cache in secondary tab
  4. Since the cached result is up-to-date, and the cache listener in the secondary tab is sharing the date with the server listener in the primary tab, the raised snapshot should be current as well (fromCache=false)

milaGGL avatar Jun 28 '24 19:06 milaGGL

🦋 Changeset detected

Latest commit: 6c3ef5bf967a0a06702120295a74838898283e00

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

changeset-bot[bot] avatar Jun 28 '24 19:06 changeset-bot[bot]

Could you please provide a PR description. A detail of the change, a link to the bug, etc? Thanks!

DellaBitta avatar Jun 28 '24 20:06 DellaBitta

Size Report 1

Affected Products

  • @firebase/app

    TypeBase (ecadbe3)Merge (9a793e5)Diff
    browser18.1 kB18.3 kB+141 B (+0.8%)
    esm523.7 kB23.8 kB+142 B (+0.6%)
    main24.8 kB24.9 kB+135 B (+0.5%)
    module18.1 kB18.3 kB+141 B (+0.8%)
  • @firebase/firestore

    TypeBase (ecadbe3)Merge (9a793e5)Diff
    browser378 kB378 kB+2 B (+0.0%)
    esm5363 kB363 kB+34 B (+0.0%)
    main582 kB582 kB+88 B (+0.0%)
    module378 kB378 kB+2 B (+0.0%)
    react-native378 kB378 kB+2 B (+0.0%)
  • @firebase/util

    TypeBase (ecadbe3)Merge (9a793e5)Diff
    browser23.1 kB23.2 kB+145 B (+0.6%)
    esm524.7 kB24.9 kB+145 B (+0.6%)
    main30.5 kB30.7 kB+219 B (+0.7%)
    module23.1 kB23.2 kB+145 B (+0.6%)
  • bundle

    TypeBase (ecadbe3)Merge (9a793e5)Diff
    firestore (CSI Auto Indexing Disable and Delete)268 kB268 kB+8 B (+0.0%)
    firestore (CSI Auto Indexing Enable)268 kB268 kB+8 B (+0.0%)
    firestore (Persistence)303 kB303 kB+16 B (+0.0%)
    firestore (Query Cursors)240 kB240 kB-6 B (-0.0%)
    firestore (Query)238 kB238 kB-6 B (-0.0%)
    firestore (Read data once)226 kB226 kB-6 B (-0.0%)
    firestore (Read Write w Persistence)322 kB322 kB+2 B (+0.0%)
    firestore (Realtime updates)228 kB228 kB-6 B (-0.0%)
    firestore (Transaction)205 kB205 kB+8 B (+0.0%)
    firestore (Write data)205 kB205 kB+8 B (+0.0%)
  • firebase

    TypeBase (ecadbe3)Merge (9a793e5)Diff
    firebase-app-compat.js31.4 kB31.7 kB+235 B (+0.7%)
    firebase-app.js102 kB102 kB+395 B (+0.4%)
    firebase-compat.js786 kB786 kB+251 B (+0.0%)
    firebase-firestore-compat.js341 kB341 kB+9 B (+0.0%)
    firebase-firestore.js437 kB437 kB+2 B (+0.0%)
    firebase-performance-standalone-compat.es2017.js93.3 kB93.5 kB+236 B (+0.3%)
    firebase-performance-standalone-compat.js70.4 kB70.6 kB+226 B (+0.3%)

Test Logs

google-oss-bot avatar Jul 02 '24 16:07 google-oss-bot

Size Analysis Report 1

Affected Products

  • @firebase/app

    • initializeServerApp

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size11.3 kB11.4 kB+141 B (+1.2%)
      size-with-ext-deps25.1 kB25.4 kB+236 B (+0.9%)

      External Dependency

      ModuleBase (ecadbe3)Merge (9a793e5)Diff
      @firebase/util

      ErrorFactory
      FirebaseError
      base64urlEncodeWithoutPadding
      isBrowser
      isIndexedDBAvailable
      validateIndexedDBOpenable

      ErrorFactory
      FirebaseError
      base64urlEncodeWithoutPadding
      isBrowser
      isIndexedDBAvailable
      isWebWorker
      validateIndexedDBOpenable

      + isWebWorker
  • @firebase/firestore

    • addDoc

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size124 kB124 kB+8 B (+0.0%)
      size-with-ext-deps196 kB196 kB+8 B (+0.0%)
    • deleteAllPersistentCacheIndexes

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size87.6 kB87.6 kB+8 B (+0.0%)
      size-with-ext-deps159 kB159 kB+8 B (+0.0%)
    • deleteDoc

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size115 kB115 kB+8 B (+0.0%)
      size-with-ext-deps186 kB186 kB+8 B (+0.0%)
    • disableNetwork

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size103 kB103 kB+8 B (+0.0%)
      size-with-ext-deps175 kB175 kB+8 B (+0.0%)
    • disablePersistentCacheIndexAutoCreation

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size87.5 kB87.5 kB+8 B (+0.0%)
      size-with-ext-deps159 kB159 kB+8 B (+0.0%)
    • enableIndexedDbPersistence

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size186 kB186 kB+8 B (+0.0%)
      size-with-ext-deps258 kB258 kB+8 B (+0.0%)
    • enableMultiTabIndexedDbPersistence

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size222 kB222 kB+16 B (+0.0%)
      size-with-ext-deps294 kB294 kB+16 B (+0.0%)
    • enableNetwork

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size103 kB103 kB+8 B (+0.0%)
      size-with-ext-deps175 kB175 kB+8 B (+0.0%)
    • enablePersistentCacheIndexAutoCreation

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size87.5 kB87.5 kB+8 B (+0.0%)
      size-with-ext-deps159 kB159 kB+8 B (+0.0%)
    • executeWrite

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size114 kB114 kB+8 B (+0.0%)
      size-with-ext-deps186 kB186 kB+8 B (+0.0%)
    • getAggregateFromServer

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size110 kB110 kB+8 B (+0.0%)
      size-with-ext-deps182 kB182 kB+8 B (+0.0%)
    • getCountFromServer

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size111 kB111 kB+8 B (+0.0%)
      size-with-ext-deps182 kB182 kB+8 B (+0.0%)
    • getDoc

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size145 kB145 kB-6 B (-0.0%)
      size-with-ext-deps216 kB216 kB-6 B (-0.0%)
    • getDocFromCache

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size95.0 kB95.0 kB+8 B (+0.0%)
      size-with-ext-deps166 kB166 kB+8 B (+0.0%)
    • getDocFromServer

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size145 kB145 kB-6 B (-0.0%)
      size-with-ext-deps216 kB216 kB-6 B (-0.0%)
    • getDocs

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size146 kB146 kB-6 B (-0.0%)
      size-with-ext-deps218 kB218 kB-6 B (-0.0%)
    • getDocsFromCache

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size103 kB103 kB+8 B (+0.0%)
      size-with-ext-deps174 kB174 kB+8 B (+0.0%)
    • getDocsFromServer

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size146 kB146 kB-6 B (-0.0%)
      size-with-ext-deps218 kB218 kB-6 B (-0.0%)
    • loadBundle

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size113 kB113 kB+8 B (+0.0%)
      size-with-ext-deps184 kB184 kB+8 B (+0.0%)
    • memoryEagerGarbageCollector

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size85.6 kB85.6 kB+8 B (+0.0%)
      size-with-ext-deps157 kB157 kB+8 B (+0.0%)
    • memoryLocalCache

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size100 kB100 kB+8 B (+0.0%)
      size-with-ext-deps172 kB172 kB+8 B (+0.0%)
    • memoryLruGarbageCollector

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size92.1 kB92.1 kB+8 B (+0.0%)
      size-with-ext-deps163 kB163 kB+8 B (+0.0%)
    • namedQuery

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size88.5 kB88.5 kB+8 B (+0.0%)
      size-with-ext-deps160 kB160 kB+8 B (+0.0%)
    • onSnapshot

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size147 kB147 kB-6 B (-0.0%)
      size-with-ext-deps219 kB219 kB-6 B (-0.0%)
    • onSnapshotsInSync

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size136 kB136 kB-6 B (-0.0%)
      size-with-ext-deps208 kB208 kB-6 B (-0.0%)
    • persistentLocalCache

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size184 kB184 kB+8 B (+0.0%)
      size-with-ext-deps255 kB255 kB+8 B (+0.0%)
    • persistentMultipleTabManager

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size219 kB219 kB+16 B (+0.0%)
      size-with-ext-deps291 kB291 kB+16 B (+0.0%)
    • persistentSingleTabManager

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size183 kB183 kB+8 B (+0.0%)
      size-with-ext-deps255 kB255 kB+8 B (+0.0%)
    • runTransaction

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size124 kB124 kB+8 B (+0.0%)
      size-with-ext-deps195 kB195 kB+8 B (+0.0%)
    • setDoc

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size123 kB123 kB+8 B (+0.0%)
      size-with-ext-deps195 kB195 kB+8 B (+0.0%)
    • setIndexConfiguration

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size91.1 kB91.1 kB+8 B (+0.0%)
      size-with-ext-deps162 kB162 kB+8 B (+0.0%)
    • updateDoc

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size124 kB124 kB+8 B (+0.0%)
      size-with-ext-deps195 kB195 kB+8 B (+0.0%)
    • waitForPendingWrites

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size104 kB104 kB+8 B (+0.0%)
      size-with-ext-deps175 kB175 kB+8 B (+0.0%)
    • writeBatch

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size126 kB126 kB+8 B (+0.0%)
      size-with-ext-deps197 kB197 kB+8 B (+0.0%)
  • @firebase/util

    • isBrowser

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size84 B197 B+113 B (+134.5%)
      size-with-ext-deps84 B197 B+113 B (+134.5%)

      Dependency

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      functions

      isBrowser

      isBrowser
      isWebWorker

      + isWebWorker
    • isWebWorker

      Size

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      size?146 B? (?)
      size-with-ext-deps?146 B? (?)

      Dependency

      TypeBase (ecadbe3)Merge (9a793e5)Diff
      functions?

      isWebWorker
      ?
      classes??
      variables??
      enums??

Test Logs

google-oss-bot avatar Jul 02 '24 16:07 google-oss-bot