- Add _txlock=immediate to SQLite connection string - This prevents deadlocks by acquiring write locks at transaction start - Multiple concurrent writers now queue properly instead of failing instantly - Resolves 'database table is locked' errors in production
119 lines
21 KiB
Plaintext
119 lines
21 KiB
Plaintext
[Fx] PROVIDE fx.Lifecycle <= go.uber.org/fx.New.func1()
|
|
[Fx] PROVIDE fx.Shutdowner <= go.uber.org/fx.(*App).shutdowner-fm()
|
|
[Fx] PROVIDE fx.DotGraph <= go.uber.org/fx.(*App).dotGraph-fm()
|
|
[Fx] PROVIDE *logger.Logger <= git.eeqj.de/sneak/routewatch/internal/logger.New()
|
|
[Fx] PROVIDE *config.Config <= git.eeqj.de/sneak/routewatch/internal/config.New()
|
|
[Fx] PROVIDE *metrics.Tracker <= git.eeqj.de/sneak/routewatch/internal/metrics.New()
|
|
[Fx] PROVIDE database.Store <= fx.Annotate(git.eeqj.de/sneak/routewatch/internal/database.New(), fx.As([[database.Store]])
|
|
[Fx] PROVIDE *streamer.Streamer <= git.eeqj.de/sneak/routewatch/internal/streamer.New()
|
|
[Fx] PROVIDE *server.Server <= git.eeqj.de/sneak/routewatch/internal/server.New()
|
|
[Fx] PROVIDE *routewatch.RouteWatch <= git.eeqj.de/sneak/routewatch/internal/routewatch.New()
|
|
[Fx] INVOKE git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry.func1()
|
|
[Fx] BEFORE RUN provide: go.uber.org/fx.New.func1()
|
|
[Fx] RUN provide: go.uber.org/fx.New.func1() in 4.375µs
|
|
[Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/config.New()
|
|
[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/config.New() in 5.25µs
|
|
[Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/logger.New()
|
|
[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/logger.New() in 4.875µs
|
|
[Fx] BEFORE RUN provide: fx.Annotate(git.eeqj.de/sneak/routewatch/internal/database.New(), fx.As([[database.Store]])
|
|
{"time":"2025-07-28T17:22:17.63026+02:00","level":"INFO","msg":"Opening database","source":"database.go:55","func":"database.New","path":"/Users/user/Library/Application Support/berlin.sneak.app.routewatch/db.sqlite"}
|
|
{"time":"2025-07-28T17:22:17.698316+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"PRAGMA wal_checkpoint(TRUNCATE)","duration":55405125}
|
|
{"time":"2025-07-28T17:22:17.698588+02:00","level":"INFO","msg":"Running VACUUM to optimize database (this may take a moment)","source":"database.go:123","func":"database.(*Database).Initialize"}
|
|
{"time":"2025-07-28T17:22:28.121045+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"VACUUM","duration":10422508542}
|
|
[Fx] RUN provide: fx.Annotate(git.eeqj.de/sneak/routewatch/internal/database.New(), fx.As([[database.Store]]) in 10.4910875s
|
|
[Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/metrics.New()
|
|
[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/metrics.New() in 31.917µs
|
|
[Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/streamer.New()
|
|
[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/streamer.New() in 17.375µs
|
|
[Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/server.New()
|
|
[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/server.New() in 56.75µs
|
|
[Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/routewatch.New()
|
|
[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/routewatch.New() in 5.583µs
|
|
[Fx] BEFORE RUN provide: go.uber.org/fx.(*App).shutdowner-fm()
|
|
[Fx] RUN provide: go.uber.org/fx.(*App).shutdowner-fm() in 8.542µs
|
|
[Fx] HOOK OnStart git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry.func1.1() executing (caller: git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry.func1)
|
|
[Fx] HOOK OnStart git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry.func1.1() called by git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry.func1 ran successfully in 212.375µs
|
|
[Fx] RUNNING
|
|
{"time":"2025-07-28T17:22:28.121692+02:00","level":"INFO","msg":"Starting RouteWatch","source":"app.go:64","func":"routewatch.(*RouteWatch).Run"}
|
|
{"time":"2025-07-28T17:22:28.12173+02:00","level":"INFO","msg":"Using batched database handlers for improved performance","source":"app.go:76","func":"routewatch.(*RouteWatch).Run"}
|
|
{"time":"2025-07-28T17:22:28.12281+02:00","level":"INFO","msg":"Starting HTTP server","source":"server.go:52","func":"server.(*Server).Start","port":"8080"}
|
|
2025/07/28 17:22:28 [akrotiri/ufn7sJdwmP-000001] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62452 - 200 3655B in 351.613042ms
|
|
2025/07/28 17:22:29 [akrotiri/ufn7sJdwmP-000002] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62452 - 200 3655B in 348.4895ms
|
|
{"time":"2025-07-28T17:22:30.206712+02:00","level":"INFO","msg":"Connected to RIS Live stream","source":"streamer.go:343","func":"streamer.(*Streamer).stream"}
|
|
{"time":"2025-07-28T17:22:30.540837+02:00","level":"ERROR","msg":"Failed to upsert route batch","source":"prefixhandler.go:206","func":"routewatch.(*PrefixHandler).flushBatchLocked","error":"failed to upsert route 2400:cb00:492::/48: database table is locked","count":1153}
|
|
{"time":"2025-07-28T17:22:30.540883+02:00","level":"ERROR","msg":"Failed to delete route batch","source":"prefixhandler.go:214","func":"routewatch.(*PrefixHandler).flushBatchLocked","error":"failed to delete route 2a12:f680:a00:0:0:0:0:0/48: database table is locked","count":167}
|
|
{"time":"2025-07-28T17:22:30.540891+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5006,"unique_prefixes":1320,"success":0,"duration_ms":1}
|
|
{"time":"2025-07-28T17:22:30.606806+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"database table is locked: asns"}
|
|
{"time":"2025-07-28T17:22:30.606827+02:00","level":"ERROR","msg":"Failed to get database stats","source":"handlers.go:253","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1","error":"database table is locked: asns"}
|
|
2025/07/28 17:22:30 [akrotiri/ufn7sJdwmP-000003] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62452 - 500 31B in 111.958µs
|
|
{"time":"2025-07-28T17:22:30.64475+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:428","func":"streamer.(*Streamer).stream","peer":"196.60.8.170","peer_asn":"327781"}
|
|
{"time":"2025-07-28T17:22:30.723117+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 64114: database table is locked","count":1082}
|
|
{"time":"2025-07-28T17:22:30.804931+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5000,"unique_prefixes":2389,"success":2389,"duration_ms":97}
|
|
{"time":"2025-07-28T17:22:30.958438+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:436","func":"streamer.(*Streamer).stream","peer":"80.81.192.113","peer_asn":"35320"}
|
|
{"time":"2025-07-28T17:22:30.975404+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:428","func":"streamer.(*Streamer).stream","peer":"80.81.194.92","peer_asn":"57111"}
|
|
{"time":"2025-07-28T17:22:31.009315+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5003,"unique_prefixes":1297,"success":1297,"duration_ms":48}
|
|
2025/07/28 17:22:31 [akrotiri/ufn7sJdwmP-000004] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62452 - 200 3704B in 316.55925ms
|
|
2025/07/28 17:22:32 [akrotiri/ufn7sJdwmP-000005] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62452 - 200 3704B in 324.432625ms
|
|
{"time":"2025-07-28T17:22:32.075815+02:00","level":"ERROR","msg":"Failed to upsert route batch","source":"prefixhandler.go:206","func":"routewatch.(*PrefixHandler).flushBatchLocked","error":"failed to upsert route 187.230.96.0/21: database table is locked","count":1647}
|
|
{"time":"2025-07-28T17:22:32.07592+02:00","level":"ERROR","msg":"Failed to delete route batch","source":"prefixhandler.go:214","func":"routewatch.(*PrefixHandler).flushBatchLocked","error":"failed to delete route 177.222.123.0/24: database table is locked","count":59}
|
|
{"time":"2025-07-28T17:22:32.07593+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5000,"unique_prefixes":1706,"success":0,"duration_ms":1}
|
|
{"time":"2025-07-28T17:22:32.54004+02:00","level":"ERROR","msg":"Failed to upsert route batch","source":"prefixhandler.go:206","func":"routewatch.(*PrefixHandler).flushBatchLocked","error":"failed to upsert route 240a:a73c::/32: database table is locked","count":2368}
|
|
2025/07/28 17:22:32 [akrotiri/ufn7sJdwmP-000006] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62452 - 200 3714B in 331.647583ms
|
|
{"time":"2025-07-28T17:22:32.540103+02:00","level":"ERROR","msg":"Failed to delete route batch","source":"prefixhandler.go:214","func":"routewatch.(*PrefixHandler).flushBatchLocked","error":"failed to delete route 193.105.156.0/24: database table is locked","count":49}
|
|
{"time":"2025-07-28T17:22:32.540113+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5000,"unique_prefixes":2417,"success":0,"duration_ms":84}
|
|
{"time":"2025-07-28T17:22:33.678988+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:248","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"}
|
|
2025/07/28 17:22:33 [akrotiri/ufn7sJdwmP-000007] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62452 - 408 17B in 1.0011055s
|
|
{"time":"2025-07-28T17:22:34.195917+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:248","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"}
|
|
2025/07/28 17:22:34 [akrotiri/ufn7sJdwmP-000008] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62456 - 408 17B in 1.0002275s
|
|
{"time":"2025-07-28T17:22:34.612068+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM asns","duration":1934122250}
|
|
{"time":"2025-07-28T17:22:34.632137+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM asns","duration":952397291}
|
|
{"time":"2025-07-28T17:22:34.632194+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM asns","duration":1436454541}
|
|
{"time":"2025-07-28T17:22:34.644233+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM asns","duration":456752334}
|
|
{"time":"2025-07-28T17:22:34.644269+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM asns","duration":957002833}
|
|
{"time":"2025-07-28T17:22:34.67566+02:00","level":"ERROR","msg":"Failed to process peer batch","source":"peerhandler.go:151","func":"routewatch.(*PeerHandler).flushBatchLocked","error":"failed to update peer 45.65.244.1: database table is locked","count":584}
|
|
{"time":"2025-07-28T17:22:34.680773+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:248","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"}
|
|
2025/07/28 17:22:34 [akrotiri/ufn7sJdwmP-000009] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62457 - 408 17B in 1.00107975s
|
|
{"time":"2025-07-28T17:22:34.687737+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:248","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"}
|
|
2025/07/28 17:22:34 [akrotiri/ufn7sJdwmP-000010] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62458 - 408 17B in 1.000508709s
|
|
{"time":"2025-07-28T17:22:34.695679+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 212483: database table is locked","count":1301}
|
|
{"time":"2025-07-28T17:22:34.702799+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM bgp_peers","duration":70568666}
|
|
{"time":"2025-07-28T17:22:34.702978+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM asns","duration":506360791}
|
|
{"time":"2025-07-28T17:22:34.703075+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.703085+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.703093+02:00","level":"ERROR","msg":"Failed to get database stats","source":"handlers.go:253","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
2025/07/28 17:22:34 [akrotiri/ufn7sJdwmP-000011] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62459 - 500 67B in 515.656083ms
|
|
{"time":"2025-07-28T17:22:34.765476+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.772759+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.772775+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.772813+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.77282+02:00","level":"ERROR","msg":"Failed to get database stats","source":"handlers.go:253","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.772821+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.77286+02:00","level":"ERROR","msg":"Failed to get database stats","source":"handlers.go:253","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
2025/07/28 17:22:34 [akrotiri/ufn7sJdwmP-000015] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62464 - 500 67B in 84.775333ms
|
|
{"time":"2025-07-28T17:22:34.772863+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 262589: database table is locked","count":731}
|
|
2025/07/28 17:22:34 [akrotiri/ufn7sJdwmP-000012] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62460 - 500 67B in 576.269417ms
|
|
{"time":"2025-07-28T17:22:34.773352+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM asns","duration":85404084}
|
|
{"time":"2025-07-28T17:22:34.773572+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.773578+02:00","level":"ERROR","msg":"Failed to get database stats","source":"handlers.go:253","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
2025/07/28 17:22:34 [akrotiri/ufn7sJdwmP-000013] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62462 - 500 67B in 92.172958ms
|
|
{"time":"2025-07-28T17:22:34.793081+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 9650: database table is locked","count":887}
|
|
{"time":"2025-07-28T17:22:34.793092+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:34.793104+02:00","level":"ERROR","msg":"Failed to get database stats","source":"handlers.go:253","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
2025/07/28 17:22:34 [akrotiri/ufn7sJdwmP-000014] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62463 - 500 67B in 105.191ms
|
|
{"time":"2025-07-28T17:22:34.796443+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 3214: database table is locked","count":1265}
|
|
{"time":"2025-07-28T17:22:34.797288+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 55898: database table is locked","count":999}
|
|
{"time":"2025-07-28T17:22:34.798088+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 267463: database table is locked","count":1266}
|
|
{"time":"2025-07-28T17:22:34.800198+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 263478: database table is locked","count":1163}
|
|
{"time":"2025-07-28T17:22:34.801829+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 264974: database table is locked","count":1426}
|
|
{"time":"2025-07-28T17:22:34.812159+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 12956: database table is locked","count":1444}
|
|
{"time":"2025-07-28T17:22:34.873194+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5004,"unique_prefixes":2353,"success":2353,"duration_ms":1801}
|
|
{"time":"2025-07-28T17:22:34.979911+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5194,"unique_prefixes":2887,"success":2887,"duration_ms":106}
|
|
{"time":"2025-07-28T17:22:35.099026+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5000,"unique_prefixes":3480,"success":3480,"duration_ms":118}
|
|
{"time":"2025-07-28T17:22:35.165997+02:00","level":"ERROR","msg":"Failed to process ASN batch","source":"ashandler.go:149","func":"routewatch.(*ASHandler).flushBatchLocked","error":"failed to update ASN 262360: database table is locked","count":1234}
|
|
{"time":"2025-07-28T17:22:35.166098+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5001,"unique_prefixes":3373,"success":3373,"duration_ms":66}
|
|
{"time":"2025-07-28T17:22:35.207606+02:00","level":"DEBUG","msg":"Database stats query failed","source":"handlers.go:237","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
{"time":"2025-07-28T17:22:35.207649+02:00","level":"ERROR","msg":"Failed to get database stats","source":"handlers.go:253","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1","error":"failed to count live routes: database table is locked: live_routes"}
|
|
2025/07/28 17:22:35 [akrotiri/ufn7sJdwmP-000016] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:62459 - 500 67B in 20.740416ms
|
|
{"time":"2025-07-28T17:22:35.250142+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5000,"unique_prefixes":4227,"success":4227,"duration_ms":83}
|
|
{"time":"2025-07-28T17:22:35.318116+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:221","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":5000,"unique_prefixes":3248,"success":3248,"duration_ms":67}
|