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.
Problem
ReloadExprHandlerrebuilds a session's dataflow asXorqServerDataflow(session.expr, skip_main_serial=True, extra_klasses=extra_klasses)(server/handlers.py:807-808), droppingcache_storage_path,column_config_overrides,extra_grid_config,init_sd, andskip_stat_columns— none of which are stored onSessionState.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_expron 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_exprkwargs onSessionStateand 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: thedataframe_idrow-cache issue filed alongside —/reload_expris the trigger for both.