fix: open DuckDB read_only in trajectory helpers to avoid lock conflict with Streamlit
Both _load_window_ids and _load_mp_vectors_for_window only read from the DB. Opening without read_only=True caused an IOException when Streamlit already held a read-only lock, silently returning an empty scree plot.
This commit is contained in:
@@ -109,7 +109,7 @@ def _procrustes_align_windows(
|
|||||||
|
|
||||||
def _load_window_ids(db_path: str) -> List[str]:
|
def _load_window_ids(db_path: str) -> List[str]:
|
||||||
"""Return all distinct window IDs from svd_vectors, in lexicographic order."""
|
"""Return all distinct window IDs from svd_vectors, in lexicographic order."""
|
||||||
conn = duckdb.connect(db_path)
|
conn = duckdb.connect(db_path, read_only=True)
|
||||||
rows = conn.execute(
|
rows = conn.execute(
|
||||||
"SELECT DISTINCT window_id FROM svd_vectors WHERE entity_type = 'mp' ORDER BY window_id"
|
"SELECT DISTINCT window_id FROM svd_vectors WHERE entity_type = 'mp' ORDER BY window_id"
|
||||||
).fetchall()
|
).fetchall()
|
||||||
@@ -118,7 +118,7 @@ def _load_window_ids(db_path: str) -> List[str]:
|
|||||||
|
|
||||||
|
|
||||||
def _load_mp_vectors_for_window(db_path: str, window_id: str) -> Dict[str, np.ndarray]:
|
def _load_mp_vectors_for_window(db_path: str, window_id: str) -> Dict[str, np.ndarray]:
|
||||||
conn = duckdb.connect(db_path)
|
conn = duckdb.connect(db_path, read_only=True)
|
||||||
rows = conn.execute(
|
rows = conn.execute(
|
||||||
"SELECT entity_id, vector FROM svd_vectors WHERE window_id = ? AND entity_type = 'mp'",
|
"SELECT entity_id, vector FROM svd_vectors WHERE window_id = ? AND entity_type = 'mp'",
|
||||||
(window_id,),
|
(window_id,),
|
||||||
|
|||||||
Reference in New Issue
Block a user