Skip to content

server: /reload_expr rebuilds the dataflow without cache_storage_path or column config — stat caching silently off after any reload #957

Description

@paddymul

Problem

ReloadExprHandler rebuilds a session's dataflow as XorqServerDataflow(session.expr, skip_main_serial=True, extra_klasses=extra_klasses) (server/handlers.py:807-808), dropping cache_storage_path, column_config_overrides, extra_grid_config, init_sd, and skip_stat_columns — none of which are stored on SessionState.

Impact

After any /reload_expr, self.cache_storage is None, so summary stats recompute uncached for the rest of the session (cache_run_stats()["status"] == "uncached"), and the caller's column configuration — e.g. tallyman's diff coloring overrides — is silently gone. tallyman calls /reload_expr on every summary-stat/display-klass hot-reload (buckaroo_lifecycle.py:389-431), so sessions degrade on exactly the workflow the endpoint exists to serve.

Suggested fix

Persist the original /load_expr kwargs on SessionState and reuse them in the reload rebuild, so a reloaded session is the same session with fresh klasses rather than a stripped-down one.

Context

Found while auditing buckaroo 0.15.4 (3313534a) for the cache-soundness bug class behind buckaroo-data/tallyman#163. Related: the dataframe_id row-cache issue filed alongside — /reload_expr is the trigger for both.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions