#6946 uncached-var dedupe: every uncached var is re-sent once right after hydrate, dict key order defeats the dedupe, and the _UNKEYABLE_VALUE branch is unreachable
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 55/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- python
- Lĩnh vực
- backend-api-design, testing-qa
Hướng nghiên cứu
Start with State.hydrate, _get_resolved_delta, and _delta_value_key, then reproduce the behavior using event_loop/scripts/wsdrive.py and the /dedupe page, including Unkeyable.u_obj. Compare the hydrate and subsequent frames, dict ordering, and null-serializing values; done means the three reported cases match the expected behavior and the existing #6946 scenarios remain valid.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
Three polish items in the #6946 delta dedupe for @rx.var(cache=False), found while verifying it end to end (the feature itself works: ~42% fewer inbound websocket bytes on the campaign's click sequence, correct per client token, survives reload and redis multi-worker).
- Every uncached var is re-sent once right after hydrate.
State.hydrateemitsself.dict(), which does not go through the delta recording, so the very next event (on_load_internal, fired immediately) re-sends all of them: a 3 318 B hydrate frame followed by a 447 B frame containing only the uncached vars. One redundant frame per page load; on reconnect with a warm memo it does not appear. - Dict key order defeats the dedupe.
_delta_value_keydigests the JSON text, so{"a": 1, "b": 2}and{"b": 2, "a": 1}have different keys and such a var is re-sent on every event, while the changelog says the value is "only included in the delta when it actually changed". Either canonicalize (sort_keys=True) or document it. - The
_UNKEYABLE_VALUEbranch is dead, and unserializable values dedupe against each other._delta_value_keytreats ajson_dumpsexception as "always send", but reflex'sjson_dumpsnever raises for unknown types; it returnsnullforcomplex, a bareobject()or an arbitrary class instance. Two different unserializable values therefore key identically: acomplex(n, 1)var is never re-sent across three bumps.
To Reproduce
The campaign's elapp app and websocket-frame driver: event_loop/ (scripts/wsdrive.py, the /dedupe page; the Unkeyable.u_obj var for item 3), NOTES.md sections "#6946" and "anomalies" 1 to 3.
Expected behavior
Hydrate records what it sends (or on_load_internal skips values the hydrate frame carried); dict values are keyed canonically or the changelog states the limitation; values that serialize to null are either always sent or keyed by identity.
Specifics
- Reflex 0.9.12a1 and 0.9.12a2 (#6946 is new in 0.9.12, so no baseline); after #7216 the recording moved to
_get_resolved_delta, which does not change any of the three - Python 3.11.15, Linux
Additional context
0.9.12a1 pre-release QA, event_loop cluster, LOW. Full write-up: FINDINGS.md.
- Ngôn ngữ chính
- Python
- Star
- 28.9k
- Fork
- 1.8k
- Merge trung bình
- 2 ngày 8 giờ
- Pull request đã merge (30 ngày)
- 177
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của reflex-dev/reflex
-
rx.input(auto_complete=...): a bool is dropped by React, and a string raises a TypeErrorCó thể đã có người làm @benedikt-bartscher đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
reflex-dev/reflex#7417 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`reflex cloud project list` table renders `tier` as a raw JSON blobCó thể đã có người làm @harsh21234i đã nhận 7 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
reflex-dev/reflex#7300 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
reflex cloud apps logs prints JSON log records with `Info: ` prefixCó thể đã có người làm @harsh21234i đã nhận 3 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
reflex-dev/reflex#7293 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
reflex-dev/reflex#7261 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
reflex-dev/reflex#7260 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của reflex-dev/reflex
Issue tương tự
-
bug llm translation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Arkansas 2025 tax is $1.70 high above $100,000 net taxable income ($3,809 + 3.9% rule)Có thể đã có người làm @PavelMakarchuk đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
PolicyEngine/policyengine-us#9828 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
jellyfin/jellyfin-mpv-shim#800 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
skillfs: one malformed chat-log line aborts the entire skill-usage analysis (skill_usage_from_chat_logs.py)Có thể đã có người làm @zjncs đã nhận hôm nay. Đang mởcomponent:skillfs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
agentic-os-org/ANOLISA#6116 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
P4: low query
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
jeffknupp/association#336 ·