Skip to content

Conversation

@emilk
Copy link
Member

@emilk emilk commented Apr 19, 2022

This makes a major refactor of the time area and other things, in order to support zooming and panning of the time area.

@emilk emilk merged commit a1973aa into main Apr 19, 2022
@emilk emilk deleted the zoom-timeline branch April 19, 2022 09:29
teh-cmc added a commit that referenced this pull request Dec 2, 2022
teh-cmc added a commit that referenced this pull request Dec 5, 2022
* object path => entity path

* move utils from lib.rs to dedicated file

* color_rgba -> color_srgba_unmultiplied

* getting intimate with arrow's datamodel

* getting _even more_ intimate with arrow's datamodel

* split it

* building dem index keys

* disgustingly, incorrectly inserting components all the way down

* timelines need no list

* similarly clarifying the nested listing situation, on the components side this time

* make sure it looks like it should!

* actual integration tests

* bootstrapping text-based debugging

* bootstrapping indices

* introducing TypedTimeInt everywhere

* full index sorting

* auto-inserting empty component lists in starting buckets

* better datagen tools

* bidirectional merges for indices + properly showing NULLs in dataframes

* finally can show off some more advanced ingestion patterns!

* dealing with corrupt validity bitmaps, and the sheer size of my stupidity

* read path taking its first steps: latest_at for indices!

* look! it's a read path!

* it works!

* show the resulting dataframe duh

* clean up pass #1: task log

* clean up pass #2: moving everybody where they belong

* clean up pass #3: definitions

* a minimal solution for missing components

* some more cleanup

* porting relevant TODOs into issues

* appeasing the CI deities

* merge catastrophe

* they see me cleanin', they hatin'

* * Reorg of re_arrow_store
* Removed up old ArrowDB code
* Connected app data ingest into new DataStore

* fix broken doc links

* store files prefixed with store_

* integration tests in integration folder + exposing datagen tools to everyone

* make integration tests scale to more complex scenarios

* adding currently failing scenario: query before any data present

* added failing test and scenarios for all emptines-related edge cases

* better testing tools

* fixing broken edge cases on read path

* demonstrating faulty read behavior in roundtrip test

* fixing dem faulty swaps

* when the doc itself demonstrates bugs :x

* adding baseline bench somewhat mimicking the legacy ones, though it doesn't really make sense anymore

* exploding query results so you can actually do stuff with them

* properly testing all halfway frames (and, unsurprisingly, failing!)

* properly dealing with multi-row primary indices

* less verbose scenarios for end-to-lend latest_at tests

* addressing misc PR comments

* TimeReal, TimeRange & TimeRangeF are now a properly of re_log_types™

* retiring TypedTimeRange before Emil tries to hurt it

* mark unreachable as such

* replaced binary_search with a partition_point

* using entity path hashes directly in indexing datastructures

* re_viewer don't need those no more

Co-authored-by: John Hughes <jondo2010@gmail.com>
Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
@emilk emilk mentioned this pull request Jan 24, 2023
grtlr added a commit that referenced this pull request Nov 19, 2024
joelreymont referenced this pull request in joelreymont/rerun Nov 7, 2025
Remove blueprint_generation from ViewQueryCacheKey to prevent cache
invalidation on every frame during playback.

Background:
- During playback, the time cursor is continuously written to the
  blueprint, incrementing blueprint_generation every frame
- This caused the query cache to invalidate every frame during playback,
  making it only effective when the viewer was paused
- Since we fixed the cache to store BASE results (before overrides) in
  the previous commit, the query cache no longer depends on blueprint
  property overrides

Changes:
- Removed blueprint_generation from ViewQueryCacheKey struct
- Updated ViewQueryCacheKey::new() to not take blueprint_generation
- Updated call site to not pass blueprint_generation
- Removed now-unused blueprint_generation variable

Cache key now consists of:
- recording_generation: Invalidates when new recording data arrives
- blueprint_query: Invalidates when time cursor or query changes

Known limitation:
- If view contents (entity path filter) change while viewer is running,
  cache may not invalidate immediately
- This is a rare edge case during normal playback
- The performance benefit during playback outweighs this limitation

Result:
- Query cache is now effective during playback (the common case)
- Major performance improvement for viewers with hundreds of entities
- Completes the caching optimization started in commits 8f41654 and 1291add
joelreymont referenced this pull request in joelreymont/rerun Nov 7, 2025
Remove blueprint_generation from ViewQueryCacheKey to prevent cache
invalidation on every frame during playback.

Background:
- During playback, the time cursor is continuously written to the
  blueprint, incrementing blueprint_generation every frame
- This caused the query cache to invalidate every frame during playback,
  making it only effective when the viewer was paused
- Since we fixed the cache to store BASE results (before overrides) in
  the previous commit, the query cache no longer depends on blueprint
  property overrides

Changes:
- Removed blueprint_generation from ViewQueryCacheKey struct
- Updated ViewQueryCacheKey::new() to not take blueprint_generation
- Updated call site to not pass blueprint_generation
- Removed now-unused blueprint_generation variable

Cache key now consists of:
- recording_generation: Invalidates when new recording data arrives
- blueprint_query: Invalidates when time cursor or query changes

Known limitation:
- If view contents (entity path filter) change while viewer is running,
  cache may not invalidate immediately
- This is a rare edge case during normal playback
- The performance benefit during playback outweighs this limitation

Result:
- Query cache is now effective during playback (the common case)
- Major performance improvement for viewers with hundreds of entities
- Completes the caching optimization started in commits 8f41654 and 1291add
jleibs-repo-sync-test bot referenced this pull request in jleibs/rerun Dec 10, 2025
Fetch the rerun PR body (which mirrors the universe PR description) and
use it as the squash merge commit body, appending only the Source-Ref
trailer.

Source-Ref: a95316d96e59fa162cd4315fa5ea96c0873bc1f5
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.

2 participants