Conversation
added 2 commits
September 13, 2026 07:44
…ead of being re-read from raw packets every time a page needs them. Two new tables keep track of each route that has ever been seen and the hops between the two endpoints. This prepares for faster queries in PR2
…async restoration Track user-edited fields in a Set so async applyURLParameters() does not overwrite user input in form pickers if typing occurs while parameter resolution is in flight (e.g. following a timezone toggle or page reload).
joroses
force-pushed
the
pr1-traceroute-storage
branch
from
September 13, 2026 05:58
fde5289 to
95c6215
Compare
joroses
marked this pull request as ready for review
September 13, 2026 11:02
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TLDR
Decodes and stores incoming traceroute packets into dedicated database tables (
traceroute_routesandtraceroute_hops) as they arrive, rather than repeatedly re-parsing raw packet data on every page load. Also includes an optional CLI command to convert existing history. Prepares for PR 2 to enable fast, unlimited-window traceroute queries in the UI.Summary
Currently, traceroute views and API endpoints query the raw
packet_historytable and decode payloads on the fly for every request.To prevent browser timeouts, queries enforce artificial packet limits (e.g.,
LIMIT 20000for graphs/nodes, or smaller fetch caps in/traceroute). This introduces significant issues:/traceroute—rather than the requested 24-hour or 7-day window.Solution (PR 1: Storage Layer)
This PR introduces dedicated storage for pre-decoded traceroutes and ordered radio hops during packet capture.
New Tables & Indexes
Two derived tables pre-parse the payloads into indexed relational models:
traceroute_routespacket_idtraceroute_hops(packet_id, direction, hop_index)Indexes are created for timestamp, node (source/target), and link lookups (
(from_node_id, to_node_id, timestamp)).Migrating Existing History (Backfill CLI)
Backfilling is optional for deployment:
packet_historywithout populating the derived tables.Web startup automatically creates the empty tables and indexes, but does not automatically backfill historical packets (to prevent database write-lock timeouts on large datasets during boot).
To prepare existing database history at your convenience, maintainers can run:
Commits
eb0cbb3(Schema change, capture processing & backfill tool):traceroute_routes(route metadata, JSON paths, completion flags) andtraceroute_hops(individual radio hops with directional SNR).malla-backfill-traceroutesCLI tool to let maintainers migrate historical database records in safe, resumable batches.95c6215(Fix for timezone toggle input race):url-filter-manager.jsfrom overwriting text while a user is actively typing into filter inputs during asynchronous updates (resolving a flaky timezone toggle test on slower machines).Verification
ruffandbasedpyrightpass cleanly.