Console flooded with "Function object could not be cloned" with multiple persisted tabs
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- 説明が足りない
- 活発さ
- 静か
- 技術スタック
- react, sqlite, typescript
調査の方向性
再現用リポジトリから始め、ブラウザバンドルのスタックに表示される sendRPCOnce と requestEnsureRemoteSubset の呼び出しを追跡します。オンデマンドのクエリコレクションと永続化された SQLite コレクションを使用して2つのタブで問題を再現します。2つのタブが同期されたまま、2番目のタブがコンソールに cloning 警告を大量に出力しなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
- I've validated the bug against the latest version of DB packages
Describe the bug
When using an on-demand query collection with a persisted sqlite collection in the browser, if you open two tabs it will flood the client's console with the message (in the tab that was opened the latest):
Failed to ensure remote subset: DOMException: Function object could not be cloned.
sendRPCOnce @tanstack_browser-db-sqlite-persistence.js:2723
sendRPCOnce @tanstack_browser-db-sqlite-persistence.js:2704
sendRPC @tanstack_browser-db-sqlite-persistence.js:2696
requestEnsureRemoteSubset @tanstack_browser-db-sqlite-persistence.js:2517
flushPendingRemoteSubsetEnsures @tanstack_browser-db-sqlite-persistence.js:776
queueRemoteSubsetEnsure @tanstack_browser-db-sqlite-persistence.js:759
hydrateSubsetUnsafe @tanstack_browser-db-sqlite-persistence.js:475
loadSubset @tanstack_browser-db-sqlite-persistence.js:338
taskPromise @tanstack_browser-db-sqlite-persistence.js:141
promise callback*run @tanstack_browser-db-sqlite-persistence.js:141
loadSubset @tanstack_browser-db-sqlite-persistence.js:338
loadSubset @tanstack_browser-db-sqlite-persistence.js:1169
loadSubset @tanstack_react-db.js:5083
requestSnapshot @tanstack_react-db.js:4305
subscribeChanges @tanstack_react-db.js:4537
subscribeChanges @tanstack_react-db.js:6929
subscribeToMatchingChanges @tanstack_react-db.js:11034
subscribeToChanges @tanstack_react-db.js:11006
subscribe @tanstack_react-db.js:10982
loaders @tanstack_react-db.js:11633
subscribeToAllCollections @tanstack_react-db.js:11621
syncFn @tanstack_react-db.js:11415
startSync @tanstack_react-db.js:4869
CollectionImpl @tanstack_react-db.js:6624
createCollection @tanstack_react-db.js:6545
bridgeToCreateCollection @tanstack_react-db.js:12019
createLiveQueryCollection @tanstack_react-db.js:12015
useLiveQuery @tanstack_react-db.js:13189
RouteComponent index.tsx:76
react_stack_bottom_frame react-dom_client.js:12868
renderWithHooks react-dom_client.js:4213
updateFunctionComponent react-dom_client.js:5569
beginWork react-dom_client.js:6140
runWithFiberInDEV react-dom_client.js:851
performUnitOfWork react-dom_client.js:8429
workLoopSync react-dom_client.js:8325
renderRootSync react-dom_client.js:8309
performWorkOnRoot react-dom_client.js:7957
performSyncWorkOnRoot react-dom_client.js:9067
flushSyncWorkAcrossRoots_impl react-dom_client.js:8984
flushPassiveEffects react-dom_client.js:8816
commitRoot react-dom_client.js:8562
performWorkUntilDeadline react-dom_client.js:36
require_scheduler_development react-dom_client.js:141
require_scheduler_development react-dom_client.js:244
__commonJSMin chunk-CYJPkc-J.js:8
require_scheduler react-dom_client.js:249
__commonJSMin chunk-CYJPkc-J.js:8
require_react_dom_client_development react-dom_client.js:11672
require_react_dom_client_development react-dom_client.js:14375
__commonJSMin chunk-CYJPkc-J.js:8
require_client react-dom_client.js:14380
__commonJSMin chunk-CYJPkc-J.js:8
<anonymous> react-dom_client.js:14383
To Reproduce
Steps to reproduce the behavior:
git clone [email protected]:c-kirkeby/tanstack-db-failed-to-ensure-remote-subset.git- Go to localhost:3000
- Open a second tab and open the dev tools in both
- The second tab will continuously receive this warning.
Expected behavior
I'm not too sure how this should be handled in a multi-tab context. Presumably some kind of reconciliation would need to happen to ensure that they are synchronised and this warning doesn't happen. Claude's explanation seems to be that existence of the where clause in the predicate is what's causing the issue.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
- OS: Bazzite 43 (kernel 6.17.7-ba29.fc43.x86_64 (64-bit))
- Browser: Zen 1.19.10b (Firefox 150.0) (64-bit)
- Version: 0.6.5
- 主要言語
- TypeScript
- スター
- 3.9k
- フォーク
- 272
- 平均マージ
- 1日 45分
- マージ済み PR(30日)
- 208
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
TanStack/db のほかの issue
-
難易度 5/5 1週間以上 初心者へのやさしさ 5/100
メンテナーはふだん 1 日以内に返信
-
browser-db-sqlite-persistence: option to load the wa-sqlite WASM by URL instead of inlined base64対応中かも @KyleAMathews が今日担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
Agenta-AI/agenta#7542 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
code quality security
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
homarr-labs/dashboard-icons#2939 ·
メンテナーはふだん 1 日以内に返信