Skip to content

fix stuck loading state after an electric must-refetch#532

Merged
samwillis merged 6 commits intomainfrom
samwillis/stuck-loading-state
Sep 11, 2025
Merged

fix stuck loading state after an electric must-refetch#532
samwillis merged 6 commits intomainfrom
samwillis/stuck-loading-state

Conversation

@samwillis
Copy link
Collaborator

also fixes an inconstant state bug.

@changeset-bot
Copy link

changeset-bot bot commented Sep 11, 2025

🦋 Changeset detected

Latest commit: f67d98a

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

This PR includes changesets to release 8 packages
Name Type
@tanstack/electric-db-collection Patch
@tanstack/db Patch
@tanstack/query-db-collection Patch
@tanstack/react-db Patch
@tanstack/solid-db Patch
@tanstack/svelte-db Patch
@tanstack/trailbase-db-collection Patch
@tanstack/vue-db 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

@samwillis samwillis requested review from KyleAMathews and kevin-dp and removed request for kevin-dp September 11, 2025 14:00
Comment on lines +401 to +405
// Always notify dependents when markReady is called, after status is set
// This ensures live queries get notified when their dependencies become ready
if (this.changeListeners.size > 0) {
this.emitEmptyReadyEvent()
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the fix for the stuck loading state

Comment on lines +1275 to +1280
// 3) Clear currentVisibleState for truncated keys to ensure subsequent operations
// are compared against the post-truncate state (undefined) rather than pre-truncate state
// This ensures that re-inserted keys are emitted as INSERT events, not UPDATE events
for (const key of changedKeys) {
currentVisibleState.delete(key)
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the fix for the inconsistent state

@pkg-pr-new
Copy link

pkg-pr-new bot commented Sep 11, 2025

More templates

@tanstack/db

npm i https://pkg.pr.new/@tanstack/db@532

@tanstack/db-ivm

npm i https://pkg.pr.new/@tanstack/db-ivm@532

@tanstack/electric-db-collection

npm i https://pkg.pr.new/@tanstack/electric-db-collection@532

@tanstack/query-db-collection

npm i https://pkg.pr.new/@tanstack/query-db-collection@532

@tanstack/react-db

npm i https://pkg.pr.new/@tanstack/react-db@532

@tanstack/solid-db

npm i https://pkg.pr.new/@tanstack/solid-db@532

@tanstack/svelte-db

npm i https://pkg.pr.new/@tanstack/svelte-db@532

@tanstack/trailbase-db-collection

npm i https://pkg.pr.new/@tanstack/trailbase-db-collection@532

@tanstack/vue-db

npm i https://pkg.pr.new/@tanstack/vue-db@532

commit: ed9686a

electricCollection = createElectricUsersCollection()
})

it(`should handle basic must-refetch with filtered live query`, () => {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this test failed before the fix, it showed an inconstant state

expect(liveQuery.size).toBe(1)
})

it(`should handle live query becoming ready after must-refetch during initial sync`, () => {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this reproduced the stuck loading state

@github-actions
Copy link
Contributor

github-actions bot commented Sep 11, 2025

Size Change: 0 B

Total Size: 66.6 kB

ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/change-events.js 1.13 kB
./packages/db/dist/esm/collection.js 10.5 kB
./packages/db/dist/esm/deferred.js 230 B
./packages/db/dist/esm/errors.js 3.1 kB
./packages/db/dist/esm/index.js 1.55 kB
./packages/db/dist/esm/indexes/auto-index.js 745 B
./packages/db/dist/esm/indexes/base-index.js 605 B
./packages/db/dist/esm/indexes/btree-index.js 1.74 kB
./packages/db/dist/esm/indexes/lazy-index.js 1.25 kB
./packages/db/dist/esm/local-only.js 827 B
./packages/db/dist/esm/local-storage.js 2.03 kB
./packages/db/dist/esm/optimistic-action.js 294 B
./packages/db/dist/esm/proxy.js 3.87 kB
./packages/db/dist/esm/query/builder/functions.js 615 B
./packages/db/dist/esm/query/builder/index.js 3.93 kB
./packages/db/dist/esm/query/builder/ref-proxy.js 938 B
./packages/db/dist/esm/query/compiler/evaluators.js 1.52 kB
./packages/db/dist/esm/query/compiler/expressions.js 631 B
./packages/db/dist/esm/query/compiler/group-by.js 2.08 kB
./packages/db/dist/esm/query/compiler/index.js 2.27 kB
./packages/db/dist/esm/query/compiler/joins.js 2.5 kB
./packages/db/dist/esm/query/compiler/order-by.js 1.23 kB
./packages/db/dist/esm/query/compiler/select.js 1.28 kB
./packages/db/dist/esm/query/ir.js 508 B
./packages/db/dist/esm/query/live-query-collection.js 333 B
./packages/db/dist/esm/query/live/collection-config-builder.js 2.59 kB
./packages/db/dist/esm/query/live/collection-subscriber.js 2.4 kB
./packages/db/dist/esm/query/optimizer.js 3.05 kB
./packages/db/dist/esm/SortedMap.js 1.24 kB
./packages/db/dist/esm/transactions.js 2.29 kB
./packages/db/dist/esm/utils.js 943 B
./packages/db/dist/esm/utils/btree.js 6.02 kB
./packages/db/dist/esm/utils/comparison.js 718 B
./packages/db/dist/esm/utils/index-optimization.js 1.62 kB

compressed-size-action::db-package-size

@github-actions
Copy link
Contributor

github-actions bot commented Sep 11, 2025

Size Change: 0 B

Total Size: 1.18 kB

ℹ️ View Unchanged
Filename Size
./packages/react-db/dist/esm/index.js 152 B
./packages/react-db/dist/esm/useLiveQuery.js 1.02 kB

compressed-size-action::react-db-package-size

@samwillis samwillis requested a review from kevin-dp September 11, 2025 14:08
Copy link
Contributor

@kevin-dp kevin-dp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great find! Love it when the fixes are simple.

@samwillis samwillis requested review from alco and removed request for alco September 11, 2025 14:18
@samwillis samwillis force-pushed the samwillis/stuck-loading-state branch from fa49a6b to ed9686a Compare September 11, 2025 14:19
Copy link
Collaborator

@KyleAMathews KyleAMathews left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! Very intricate little web we've spun now haha — fine details matter

@samwillis samwillis merged commit b162556 into main Sep 11, 2025
5 checks passed
@samwillis samwillis deleted the samwillis/stuck-loading-state branch September 11, 2025 14:28
@github-actions github-actions bot mentioned this pull request Sep 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants