Skip to content

v2.3.1 — grouped view and deadlock fix release

Latest

Choose a tag to compare

@ahmed-merza ahmed-merza released this 04 Oct 06:31
· 6 commits to master since this release

Fixes only. Grouped rollups no longer fail on an InnoDB deadlock under
concurrent flushes (#112), and the grouped view's issue/occurrence panel,
keyboard handling and layout work from a 240px phone to an ultrawide screen
(#114). No migration.

Fixed

  • Grouped view: issue/occurrence panel navigation. Escape and the back arrow now step from an occurrence back to its issue instead of closing both; selecting another issue while an occurrence is open shows that issue instead of the stale occurrence; the panel swap no longer briefly shows both panels side by side (which squeezed the table); j/k walk the issues, or the open issue's occurrences, instead of the hidden entries list; Enter on an issue opens its newest occurrence.

  • Grouped view: table overflow beside an open panel. The issue column is now sized by the table rather than a width estimate tuned for the entries table, and First seen / Channel hide while a panel is open, so Last seen is no longer clipped behind a horizontal scrollbar.

  • Grouped view: triage. Changing an issue's status says so in a toast and keeps the issue count in step when the issue leaves the filtered list. The status keys (Shift+O/I/R/X, shown as ⇧R etc.) move on to the next issue; clicking a status button stays on the issue so you can add a note. The occurrence footer no longer shows a per-entry status control inside an issue, where it read as the issue's status. The panel closes when a filter or page change drops its issue from the list.

  • Grouped view: notes. A saved note no longer disappears after switching to another issue and back (only the panel's copy was updated, not the list row; status had the same gap). "Add a note…" focuses the box, so typing no longer falls through to the status shortcuts; Escape while typing leaves the box instead of closing the panel and losing the text; a half-typed note no longer follows you to another issue.

  • Small and large screens. Tablets (768–1023px) get the panel as a drawer over a full-width table instead of squeezing it to a strip; between 768 and 1279px the search row wraps below the toolbar instead of drawing over it; the date and status menus stay on screen and close on Escape; Escape closes the sidebar drawer; entries open scrolled to the top; under 360px the level column gives its room to titles and the panel's tiles stack; screens 2560px+ get an 800px default panel. Selecting an issue no longer pins a custom panel width (which made the reset-width icon appear and then "do nothing").

  • Relative times agree. Every "5m ago" reads one clock that ticks every 30s, so the list and the panel no longer drift apart.

  • Dialogs and the keyboard. Escape closes only the dialog on top (the delete confirm, the shortcuts sheet, or an open menu) instead of also stepping the panel back; shortcuts do nothing behind the delete confirm, where j/k could change which log Delete removed; Enter on a focused button presses it; switching issues quickly no longer lets a late response show the previous issue's occurrences.

  • Deadlock on log_groups insertOrIgnore under concurrent flushes (#112). A batched insert ignore keyed on the unique fingerprint index is a known InnoDB deadlock shape (SQLSTATE 40001) when two flushes insert overlapping-but-differently-ordered new fingerprints. GroupRecorder's three statements now retry independently on a transient SQLSTATE (08/40) instead of failing the whole rollup, and fingerprints are processed in a consistent (sorted) order across concurrent flushes to reduce how often the deadlock happens at all. The retry never engages while an app transaction is already open — verified against a real MySQL deadlock that a blind retry there would otherwise commit standalone, outside the transaction the app still believes it's in.