Log every entry and exit of the ordering sync

Neither the success nor the failure line appeared, and save() reports no
expressions at all -- so the function is either not being called or leaving
by a path that says nothing. Two of its exits were silent: the no-viewer
guard, and the case where the computed expressions already match what is
applied.

Logs on entry, logs the inputs it actually saw (the version it resolved, its
bucket_order, how many log entries carry a seq, and what it decided to
build), and logs every exit. One reload should end the guessing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Paul Trowbridge 2026-09-17 14:29:43 -04:00
parent 33bfec838a
commit e8e95bf4b9

View File

@ -796,7 +796,14 @@ export default function Forecast({ sources = [], sourceId, versions = [], versio
// `expressions` wholesale, so expressions applied earlier were being wiped
// by the very next line and the ordering columns never appeared in the
// column list.
await syncOrderExpressions()
try {
await syncOrderExpressions()
} catch (err) {
// Its own try covers only restore(); save() and the builders sit outside
// it, and a throw there would abort the rest of initViewer silently.
console.error('[pf-order] threw', err)
flash(`Column ordering failed: ${err.message || err}`, 'error')
}
if (viewer._pspUpdate) viewer.removeEventListener('perspective-config-update', viewer._pspUpdate)
viewer._pspUpdate = async () => {