From 7d39bd18bc3e76aa41b806825c50fdc98eb0afea Mon Sep 17 00:00:00 2001 From: sneak Date: Mon, 28 Jul 2025 21:54:58 +0200 Subject: [PATCH] Fix concurrent map write panic in timeout middleware - Add thread-safe header wrapper in timeoutWriter - Check context cancellation before writing responses in handlers - Protect header access after timeout with mutex - Prevents race condition when requests timeout while handlers are still running --- Makefile | 2 +- internal/server/handlers.go | 24 + internal/server/middleware.go | 18 + log.txt | 2509 ++++++++++++++++++--------------- 4 files changed, 1403 insertions(+), 1150 deletions(-) diff --git a/Makefile b/Makefile index e85a557..c8d1a8f 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ clean: rm -rf bin/ run: build - ./bin/routewatch + DEBUG=routewatch ./bin/routewatch 2>&1 | tee log.txt asupdate: @echo "Updating AS info data..." diff --git a/internal/server/handlers.go b/internal/server/handlers.go index b12233f..08ce5be 100644 --- a/internal/server/handlers.go +++ b/internal/server/handlers.go @@ -557,6 +557,14 @@ func (s *Server) handleASDetail() http.HandlerFunc { IPv6Count: len(ipv6Prefixes), } + // Check if context is still valid before writing response + select { + case <-r.Context().Done(): + // Request was cancelled, don't write response + return + default: + } + w.Header().Set("Content-Type", "text/html; charset=utf-8") tmpl := templates.ASDetailTemplate() if err := tmpl.Execute(w, data); err != nil { @@ -694,6 +702,14 @@ func (s *Server) handlePrefixDetail() http.HandlerFunc { OriginCount: len(originMap), } + // Check if context is still valid before writing response + select { + case <-r.Context().Done(): + // Request was cancelled, don't write response + return + default: + } + w.Header().Set("Content-Type", "text/html; charset=utf-8") tmpl := templates.PrefixDetailTemplate() if err := tmpl.Execute(w, data); err != nil { @@ -814,6 +830,14 @@ func (s *Server) handlePrefixLength() http.HandlerFunc { "Count": len(prefixes), } + // Check if context is still valid before writing response + select { + case <-r.Context().Done(): + // Request was cancelled, don't write response + return + default: + } + tmpl := template.Must(template.ParseFiles("internal/templates/prefix_length.html")) if err := tmpl.Execute(w, data); err != nil { s.logger.Error("Failed to render prefix length template", "error", err) diff --git a/internal/server/middleware.go b/internal/server/middleware.go index d9d9689..0907275 100644 --- a/internal/server/middleware.go +++ b/internal/server/middleware.go @@ -108,6 +108,7 @@ type timeoutWriter struct { http.ResponseWriter mu sync.Mutex written bool + header http.Header // cached header to prevent concurrent access } func (tw *timeoutWriter) Write(b []byte) (int, error) { @@ -133,6 +134,18 @@ func (tw *timeoutWriter) WriteHeader(statusCode int) { } func (tw *timeoutWriter) Header() http.Header { + tw.mu.Lock() + defer tw.mu.Unlock() + + if tw.written { + // Return a copy to prevent modifications after timeout + if tw.header == nil { + tw.header = make(http.Header) + } + + return tw.header + } + return tw.ResponseWriter.Header() } @@ -153,6 +166,7 @@ func TimeoutMiddleware(timeout time.Duration) func(http.Handler) http.Handler { tw := &timeoutWriter{ ResponseWriter: w, + header: make(http.Header), } done := make(chan struct{}) @@ -178,8 +192,12 @@ func TimeoutMiddleware(timeout time.Duration) func(http.Handler) http.Handler { tw.markWritten() // Prevent the handler from writing after timeout execTime := time.Since(startTime) + // Write directly to the underlying writer since we've marked tw as written + // This is safe because markWritten() prevents the handler from writing + tw.mu.Lock() w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusRequestTimeout) + tw.mu.Unlock() response := map[string]interface{}{ "status": "error", diff --git a/log.txt b/log.txt index a603a49..54cb101 100644 --- a/log.txt +++ b/log.txt @@ -10,1164 +10,1375 @@ [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.834µs +[Fx] RUN provide: go.uber.org/fx.New.func1() in 3.083µ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 6.792µs +[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/config.New() in 3.5µ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 5.041µs +[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/logger.New() in 2.75µs [Fx] BEFORE RUN provide: fx.Annotate(git.eeqj.de/sneak/routewatch/internal/database.New(), fx.As([[database.Store]]) -{"time":"2025-07-28T19:07:04.003748+02:00","level":"INFO","msg":"Opening database","source":"database.go:60","func":"database.New","path":"/Users/user/Library/Application Support/berlin.sneak.app.routewatch/db.sqlite"} -{"time":"2025-07-28T19:07:17.095001+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"PRAGMA wal_checkpoint(TRUNCATE)","duration":3246961625} -{"time":"2025-07-28T19:07:17.096647+02:00","level":"INFO","msg":"Running VACUUM to optimize database (this may take a moment)","source":"database.go:124","func":"database.(*Database).Initialize"} -{"time":"2025-07-28T19:07:33.635837+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"VACUUM","duration":16501666209} -[Fx] RUN provide: fx.Annotate(git.eeqj.de/sneak/routewatch/internal/database.New(), fx.As([[database.Store]]) in 29.642112125s +{"time":"2025-07-28T21:50:17.844513+02:00","level":"INFO","msg":"Opening database","source":"database.go:61","func":"database.New","path":"/Users/user/Library/Application Support/berlin.sneak.app.routewatch/db.sqlite"} +{"time":"2025-07-28T21:50:25.277512+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"PRAGMA wal_checkpoint(TRUNCATE)","duration":2799672292} +{"time":"2025-07-28T21:50:25.278057+02:00","level":"INFO","msg":"Running VACUUM to optimize database (this may take a moment)","source":"database.go:125","func":"database.(*Database).Initialize"} +{"time":"2025-07-28T21:50:38.423636+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"VACUUM","duration":13143446958} +[Fx] RUN provide: fx.Annotate(git.eeqj.de/sneak/routewatch/internal/database.New(), fx.As([[database.Store]]) in 20.581600583s [Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/metrics.New() -[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/metrics.New() in 479.791µs +[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/metrics.New() in 2.331333ms [Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/streamer.New() -[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/streamer.New() in 193.625µs +[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/streamer.New() in 9.083µ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 367.708µs +[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/server.New() in 455.084µ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 35.958µs +[Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/routewatch.New() in 4.541µs [Fx] BEFORE RUN provide: go.uber.org/fx.(*App).shutdowner-fm() -[Fx] RUN provide: go.uber.org/fx.(*App).shutdowner-fm() in 164µs +[Fx] RUN provide: go.uber.org/fx.(*App).shutdowner-fm() in 10.25µ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 2.307875ms -{"time":"2025-07-28T19:07:33.654701+02:00","level":"INFO","msg":"Starting RouteWatch","source":"app.go:64","func":"routewatch.(*RouteWatch).Run"} +[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 391.542µs [Fx] RUNNING -{"time":"2025-07-28T19:07:33.657587+02:00","level":"INFO","msg":"Using batched database handlers for improved performance","source":"app.go:76","func":"routewatch.(*RouteWatch).Run"} -{"time":"2025-07-28T19:07:33.662391+02:00","level":"INFO","msg":"Starting HTTP server","source":"server.go:52","func":"server.(*Server).Start","port":"8080"} -2025/07/28 19:07:34 [akrotiri/nRQLu4lSAJ-000001] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3678B in 603.583125ms -2025/07/28 19:07:35 [akrotiri/nRQLu4lSAJ-000002] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3678B in 904.373541ms -2025/07/28 19:07:35 [akrotiri/nRQLu4lSAJ-000004] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3678B in 671.252042ms -2025/07/28 19:07:35 [akrotiri/nRQLu4lSAJ-000003] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3678B in 675.69775ms -2025/07/28 19:07:35 [akrotiri/nRQLu4lSAJ-000006] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3678B in 576.927958ms -2025/07/28 19:07:35 [akrotiri/nRQLu4lSAJ-000005] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3678B in 666.532458ms -{"time":"2025-07-28T19:07:36.003396+02:00","level":"INFO","msg":"Connected to RIS Live stream","source":"streamer.go:347","func":"streamer.(*Streamer).stream"} -2025/07/28 19:07:36 [akrotiri/nRQLu4lSAJ-000007] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3645B in 717.908292ms -2025/07/28 19:07:36 [akrotiri/nRQLu4lSAJ-000008] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3645B in 712.154459ms -{"time":"2025-07-28T19:07:36.672986+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:36.673015+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:07:36 [akrotiri/nRQLu4lSAJ-000009] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3654B in 641.762417ms -{"time":"2025-07-28T19:07:36.864033+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:37 [akrotiri/nRQLu4lSAJ-000011] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3660B in 725.372708ms -2025/07/28 19:07:37 [akrotiri/nRQLu4lSAJ-000012] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3659B in 715.984959ms -2025/07/28 19:07:37 [akrotiri/nRQLu4lSAJ-000010] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3660B in 1.420152834s -{"time":"2025-07-28T19:07:37.659829+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:07:37 [akrotiri/nRQLu4lSAJ-000014] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59225 - 200 3659B in 784.538792ms -2025/07/28 19:07:37 [akrotiri/nRQLu4lSAJ-000013] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3659B in 788.29225ms -{"time":"2025-07-28T19:07:37.968576+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"196.60.8.170","peer_asn":"327781"} -2025/07/28 19:07:38 [akrotiri/nRQLu4lSAJ-000015] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3663B in 732.397208ms -2025/07/28 19:07:38 [akrotiri/nRQLu4lSAJ-000016] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3663B in 744.506042ms -{"time":"2025-07-28T19:07:38.791129+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"80.81.192.113","peer_asn":"35320"} -2025/07/28 19:07:38 [akrotiri/nRQLu4lSAJ-000017] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3664B in 694.515708ms -2025/07/28 19:07:38 [akrotiri/nRQLu4lSAJ-000018] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3664B in 695.887209ms -{"time":"2025-07-28T19:07:39.107277+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":2434} -{"time":"2025-07-28T19:07:39.107299+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:39.107283+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:39 [akrotiri/nRQLu4lSAJ-000020] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3695B in 641.376541ms -2025/07/28 19:07:39 [akrotiri/nRQLu4lSAJ-000019] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3695B in 674.089541ms -{"time":"2025-07-28T19:07:39.491167+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":383} -{"time":"2025-07-28T19:07:39.491176+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:39.492337+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:39.495165+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":3} -{"time":"2025-07-28T19:07:39.495174+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:39.503819+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":8} -{"time":"2025-07-28T19:07:39.503828+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:39.50383+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":9561,"unique_prefixes":5394,"success":5394,"duration_ms":2840} -{"time":"2025-07-28T19:07:39.51176+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:39.770906+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":267} -{"time":"2025-07-28T19:07:39.771667+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:39.772244+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:39 [akrotiri/nRQLu4lSAJ-000021] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3750B in 679.232333ms -2025/07/28 19:07:39 [akrotiri/nRQLu4lSAJ-000022] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3750B in 688.925042ms -2025/07/28 19:07:40 [akrotiri/nRQLu4lSAJ-000023] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3750B in 669.686167ms -2025/07/28 19:07:40 [akrotiri/nRQLu4lSAJ-000024] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3750B in 758.231208ms -{"time":"2025-07-28T19:07:40.552627+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:07:40 [akrotiri/nRQLu4lSAJ-000025] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3753B in 701.078792ms -2025/07/28 19:07:40 [akrotiri/nRQLu4lSAJ-000026] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3753B in 704.207542ms -2025/07/28 19:07:41 [akrotiri/nRQLu4lSAJ-000027] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3754B in 651.290958ms -2025/07/28 19:07:41 [akrotiri/nRQLu4lSAJ-000028] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3754B in 705.348625ms -2025/07/28 19:07:41 [akrotiri/nRQLu4lSAJ-000029] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3754B in 706.697959ms -2025/07/28 19:07:41 [akrotiri/nRQLu4lSAJ-000030] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3754B in 714.660708ms -{"time":"2025-07-28T19:07:42.186146+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":2414} -{"time":"2025-07-28T19:07:42.186168+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:42.186182+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -2025/07/28 19:07:42 [akrotiri/nRQLu4lSAJ-000032] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3755B in 676.637458ms -2025/07/28 19:07:42 [akrotiri/nRQLu4lSAJ-000031] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3755B in 716.843834ms -{"time":"2025-07-28T19:07:42.572063+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:42.572057+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":385} -{"time":"2025-07-28T19:07:42.573153+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:42.575387+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":3} -{"time":"2025-07-28T19:07:42.575395+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:42.589817+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":14} -{"time":"2025-07-28T19:07:42.589869+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":6536,"success":6536,"duration_ms":3084} -{"time":"2025-07-28T19:07:42.59+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:42.597213+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:42.636158+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":46} -{"time":"2025-07-28T19:07:42.636179+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:42.637205+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:42.840773+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:07:42 [akrotiri/nRQLu4lSAJ-000033] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3751B in 783.942166ms -2025/07/28 19:07:42 [akrotiri/nRQLu4lSAJ-000034] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3751B in 780.201292ms -2025/07/28 19:07:43 [akrotiri/nRQLu4lSAJ-000035] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3752B in 754.8965ms -2025/07/28 19:07:43 [akrotiri/nRQLu4lSAJ-000036] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3753B in 824.056ms -2025/07/28 19:07:43 [akrotiri/nRQLu4lSAJ-000038] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3753B in 758.55275ms -2025/07/28 19:07:43 [akrotiri/nRQLu4lSAJ-000037] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3753B in 769.920042ms -{"time":"2025-07-28T19:07:44.01219+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1375} -{"time":"2025-07-28T19:07:44.012208+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:44.012194+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:44.30494+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":292} -{"time":"2025-07-28T19:07:44.30497+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:44.307148+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:44.327733+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":22} -{"time":"2025-07-28T19:07:44.327834+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:44.343496+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":15} -{"time":"2025-07-28T19:07:44.343512+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":6936,"success":6936,"duration_ms":1751} -{"time":"2025-07-28T19:07:44.343524+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:44.350607+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:07:44 [akrotiri/nRQLu4lSAJ-000039] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3751B in 712.754583ms -2025/07/28 19:07:44 [akrotiri/nRQLu4lSAJ-000040] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3751B in 710.354792ms -{"time":"2025-07-28T19:07:44.385329+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":41} -{"time":"2025-07-28T19:07:44.385375+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:44.559466+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:44 [akrotiri/nRQLu4lSAJ-000041] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3748B in 702.279541ms -2025/07/28 19:07:44 [akrotiri/nRQLu4lSAJ-000042] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3748B in 701.294542ms -2025/07/28 19:07:45 [akrotiri/nRQLu4lSAJ-000043] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3748B in 695.041792ms -{"time":"2025-07-28T19:07:45.393845+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:45.393863+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1008} -{"time":"2025-07-28T19:07:45.393886+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:45.417963+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":24} -{"time":"2025-07-28T19:07:45.417978+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:45.434464+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":16} -{"time":"2025-07-28T19:07:45.434478+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":5668,"success":5668,"duration_ms":1088} -2025/07/28 19:07:45 [akrotiri/nRQLu4lSAJ-000044] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3741B in 826.800833ms -{"time":"2025-07-28T19:07:45.709986+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:45.710032+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:07:45 [akrotiri/nRQLu4lSAJ-000046] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3743B in 694.81025ms -2025/07/28 19:07:45 [akrotiri/nRQLu4lSAJ-000045] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3743B in 702.424375ms -{"time":"2025-07-28T19:07:45.932774+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:45.936665+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:45.975087+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:45.975101+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":265} -{"time":"2025-07-28T19:07:46.002255+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":27} -{"time":"2025-07-28T19:07:46.002274+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:46.004553+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":10001041625,"total_messages":40448,"total_bytes":27830819,"total_mb":"26.54","messages_per_sec":"513.85","bits_per_sec":"2839908","mbps":"2.84","total_dropped":0} -{"time":"2025-07-28T19:07:46.004568+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":0,"queue_cap":100000,"processed":39967,"dropped":0,"avg_time":211514,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:07:46.004573+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":39967,"dropped":0,"avg_time":133450,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:07:46.004577+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":297,"queue_cap":100000,"processed":39669,"dropped":0,"avg_time":219636,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:07:46.00458+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":39967,"dropped":0,"avg_time":1615,"min_time":0,"max_time":1217875} -2025/07/28 19:07:46 [akrotiri/nRQLu4lSAJ-000048] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3746B in 684.118292ms -{"time":"2025-07-28T19:07:46.429834+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"193.239.118.249","peer_asn":"41255"} -2025/07/28 19:07:46 [akrotiri/nRQLu4lSAJ-000047] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3746B in 788.57475ms -{"time":"2025-07-28T19:07:46.787382+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":785} -{"time":"2025-07-28T19:07:46.787401+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:46.787405+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -2025/07/28 19:07:46 [akrotiri/nRQLu4lSAJ-000050] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3746B in 704.959625ms -2025/07/28 19:07:46 [akrotiri/nRQLu4lSAJ-000049] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3746B in 719.08ms -{"time":"2025-07-28T19:07:46.984448+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":197} -{"time":"2025-07-28T19:07:46.984466+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20085,"unique_prefixes":4980,"success":4980,"duration_ms":1052} -{"time":"2025-07-28T19:07:47.019767+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:47.019782+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:47.04221+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":22} -2025/07/28 19:07:47 [akrotiri/nRQLu4lSAJ-000052] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3743B in 687.238791ms -2025/07/28 19:07:47 [akrotiri/nRQLu4lSAJ-000051] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3743B in 745.021ms -2025/07/28 19:07:47 [akrotiri/nRQLu4lSAJ-000053] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3743B in 696.837417ms -2025/07/28 19:07:47 [akrotiri/nRQLu4lSAJ-000054] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3743B in 703.614834ms -{"time":"2025-07-28T19:07:48.165713+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"195.208.209.174","peer_asn":"25227"} -{"time":"2025-07-28T19:07:48.221125+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:48.221143+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:48.231799+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":10} -{"time":"2025-07-28T19:07:48.25413+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:48.254157+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:48.25997+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:48.326908+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":72} -{"time":"2025-07-28T19:07:48.327021+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:07:48 [akrotiri/nRQLu4lSAJ-000055] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3746B in 693.772708ms -2025/07/28 19:07:48 [akrotiri/nRQLu4lSAJ-000056] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3746B in 702.133083ms -2025/07/28 19:07:48 [akrotiri/nRQLu4lSAJ-000058] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3744B in 697.475208ms -2025/07/28 19:07:48 [akrotiri/nRQLu4lSAJ-000057] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3744B in 710.6995ms -{"time":"2025-07-28T19:07:49.296131+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:49.323427+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:49.323423+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":996} -{"time":"2025-07-28T19:07:49.323474+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -2025/07/28 19:07:49 [akrotiri/nRQLu4lSAJ-000059] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3750B in 688.046209ms -{"time":"2025-07-28T19:07:49.453644+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:49.453659+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":130} -{"time":"2025-07-28T19:07:49.458008+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":4} -{"time":"2025-07-28T19:07:49.458021+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20190,"unique_prefixes":6983,"success":6983,"duration_ms":1205} -2025/07/28 19:07:49 [akrotiri/nRQLu4lSAJ-000060] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3745B in 818.270792ms -2025/07/28 19:07:49 [akrotiri/nRQLu4lSAJ-000061] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3745B in 662.160042ms -2025/07/28 19:07:49 [akrotiri/nRQLu4lSAJ-000062] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3745B in 676.558541ms -{"time":"2025-07-28T19:07:50.06625+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:7f8::8b0e:0:1","peer_asn":"35598"} -{"time":"2025-07-28T19:07:50.070162+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"2001:7f8::8b0e:0:1","peer_asn":"35598"} -2025/07/28 19:07:50 [akrotiri/nRQLu4lSAJ-000063] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3745B in 677.152625ms -2025/07/28 19:07:50 [akrotiri/nRQLu4lSAJ-000064] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3745B in 669.689125ms -{"time":"2025-07-28T19:07:50.448121+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:50.448139+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:50.454422+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":6} -{"time":"2025-07-28T19:07:50.565058+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:50.565073+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:50.566553+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:50.606524+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":41} -{"time":"2025-07-28T19:07:50.606547+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:50.722444+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:7f8:4::73ab:1","peer_asn":"29611"} -2025/07/28 19:07:50 [akrotiri/nRQLu4lSAJ-000065] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3748B in 693.311792ms -2025/07/28 19:07:50 [akrotiri/nRQLu4lSAJ-000066] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3748B in 699.954ms -{"time":"2025-07-28T19:07:51.134236+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"80.81.194.190","peer_asn":"31042"} -2025/07/28 19:07:51 [akrotiri/nRQLu4lSAJ-000068] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3748B in 707.918916ms -2025/07/28 19:07:51 [akrotiri/nRQLu4lSAJ-000067] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3748B in 771.511292ms -{"time":"2025-07-28T19:07:51.461056+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:51.848782+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1242} -{"time":"2025-07-28T19:07:51.848848+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:51.848812+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:51.93417+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":85} -{"time":"2025-07-28T19:07:51.934198+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:51.94368+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":9} -{"time":"2025-07-28T19:07:51.943695+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":8173,"success":8173,"duration_ms":1383} -{"time":"2025-07-28T19:07:52.06137+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"2001:7f8:1::a503:5598:1","peer_asn":"35598"} -{"time":"2025-07-28T19:07:52.065582+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:7f8:1::a503:5598:1","peer_asn":"35598"} -{"time":"2025-07-28T19:07:52.632916+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:52.632933+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:52.642619+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":9} -{"time":"2025-07-28T19:07:52.646434+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:52.646482+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:07:52 [akrotiri/nRQLu4lSAJ-000070] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3746B in 870.904125ms -2025/07/28 19:07:52 [akrotiri/nRQLu4lSAJ-000071] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3746B in 871.853125ms -2025/07/28 19:07:52 [akrotiri/nRQLu4lSAJ-000072] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3746B in 890.421666ms -{"time":"2025-07-28T19:07:52.769576+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:52 [akrotiri/nRQLu4lSAJ-000069] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3751B in 1.017418291s -{"time":"2025-07-28T19:07:52.958053+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"80.81.194.92","peer_asn":"57111"} -2025/07/28 19:07:53 [akrotiri/nRQLu4lSAJ-000073] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59225 - 200 3750B in 845.957791ms -2025/07/28 19:07:53 [akrotiri/nRQLu4lSAJ-000074] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59361 - 200 3750B in 843.555208ms -2025/07/28 19:07:53 [akrotiri/nRQLu4lSAJ-000075] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3750B in 805.870541ms -2025/07/28 19:07:53 [akrotiri/nRQLu4lSAJ-000076] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3750B in 825.081125ms -{"time":"2025-07-28T19:07:53.61985+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:53.870881+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1224} -{"time":"2025-07-28T19:07:53.870901+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:53.871004+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:53 [akrotiri/nRQLu4lSAJ-000077] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3755B in 763.138375ms -2025/07/28 19:07:53 [akrotiri/nRQLu4lSAJ-000078] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3755B in 761.375958ms -{"time":"2025-07-28T19:07:53.974506+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":103} -{"time":"2025-07-28T19:07:53.974544+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:53.975705+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:53.97694+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":2} -{"time":"2025-07-28T19:07:53.977005+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:53.992346+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":15} -{"time":"2025-07-28T19:07:53.992359+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:53.992363+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20060,"unique_prefixes":10445,"success":10445,"duration_ms":1363} -{"time":"2025-07-28T19:07:54.003621+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:54.049992+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:54.050057+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":57} -{"time":"2025-07-28T19:07:54.05159+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:54 [akrotiri/nRQLu4lSAJ-000079] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3748B in 782.620916ms -2025/07/28 19:07:54 [akrotiri/nRQLu4lSAJ-000080] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3748B in 775.60675ms -{"time":"2025-07-28T19:07:55.014494+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:07:55 [akrotiri/nRQLu4lSAJ-000081] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3750B in 828.106958ms -2025/07/28 19:07:55 [akrotiri/nRQLu4lSAJ-000082] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3753B in 831.940291ms -{"time":"2025-07-28T19:07:55.234058+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1184} -{"time":"2025-07-28T19:07:55.234075+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:55.234059+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:55.383518+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":149} -{"time":"2025-07-28T19:07:55.38354+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:55.385772+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:55.388237+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":4} -{"time":"2025-07-28T19:07:55.388261+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:55.392534+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":4} -{"time":"2025-07-28T19:07:55.392548+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20007,"unique_prefixes":10489,"success":10489,"duration_ms":1398} -{"time":"2025-07-28T19:07:55.392585+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:55.404466+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:55.478219+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":85} -{"time":"2025-07-28T19:07:55.47825+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:55.48057+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:55 [akrotiri/nRQLu4lSAJ-000084] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3750B in 810.51475ms -2025/07/28 19:07:55 [akrotiri/nRQLu4lSAJ-000083] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3750B in 825.17325ms -2025/07/28 19:07:55 [akrotiri/nRQLu4lSAJ-000086] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3750B in 758.836375ms -2025/07/28 19:07:55 [akrotiri/nRQLu4lSAJ-000085] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3750B in 766.820959ms -{"time":"2025-07-28T19:07:56.004642+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":20001042667,"total_messages":96768,"total_bytes":71476257,"total_mb":"68.17","messages_per_sec":"1184.63","bits_per_sec":"6946267","mbps":"6.95","total_dropped":0} -{"time":"2025-07-28T19:07:56.004665+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":5972,"queue_cap":100000,"processed":89786,"dropped":0,"avg_time":132996,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:07:56.00467+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":95759,"dropped":0,"avg_time":63838,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:07:56.004675+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":7170,"queue_cap":100000,"processed":88588,"dropped":0,"avg_time":170700,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:07:56.004678+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":95759,"dropped":0,"avg_time":1799,"min_time":0,"max_time":3326042} -2025/07/28 19:07:56 [akrotiri/nRQLu4lSAJ-000087] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3751B in 735.267334ms -{"time":"2025-07-28T19:07:56.456094+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:07:56 [akrotiri/nRQLu4lSAJ-000088] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3752B in 760.225458ms -{"time":"2025-07-28T19:07:56.563199+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1084} -{"time":"2025-07-28T19:07:56.563219+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:56.563236+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:56.67658+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":113} -{"time":"2025-07-28T19:07:56.676616+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:56.678673+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:56.679956+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":3} -{"time":"2025-07-28T19:07:56.680035+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:56.68251+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":2} -{"time":"2025-07-28T19:07:56.682522+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":11375,"success":11375,"duration_ms":1288} -{"time":"2025-07-28T19:07:56.682552+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:56.697985+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:56.820378+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":137} -{"time":"2025-07-28T19:07:56.820402+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:56.82158+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:56 [akrotiri/nRQLu4lSAJ-000089] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3752B in 786.163708ms -2025/07/28 19:07:57 [akrotiri/nRQLu4lSAJ-000090] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3752B in 808.440625ms -{"time":"2025-07-28T19:07:57.325497+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"80.249.210.89","peer_asn":"31042"} -{"time":"2025-07-28T19:07:57.416999+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:07:57 [akrotiri/nRQLu4lSAJ-000091] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3759B in 781.648208ms -2025/07/28 19:07:57 [akrotiri/nRQLu4lSAJ-000092] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3759B in 777.83225ms -2025/07/28 19:07:58 [akrotiri/nRQLu4lSAJ-000093] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3759B in 731.82675ms -2025/07/28 19:07:58 [akrotiri/nRQLu4lSAJ-000094] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3759B in 740.918209ms -{"time":"2025-07-28T19:07:58.032601+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1212} -{"time":"2025-07-28T19:07:58.032625+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:58.032608+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:58.094801+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":62} -{"time":"2025-07-28T19:07:58.094816+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:58.096021+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:58.096984+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":2} -{"time":"2025-07-28T19:07:58.096997+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:58.098353+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":1} -{"time":"2025-07-28T19:07:58.098363+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20002,"unique_prefixes":12115,"success":12115,"duration_ms":1413} -{"time":"2025-07-28T19:07:58.098388+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:58.113012+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:58.199584+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:58.19958+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":101} -{"time":"2025-07-28T19:07:58.200716+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:58.472772+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:07:58 [akrotiri/nRQLu4lSAJ-000095] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3760B in 763.777959ms -2025/07/28 19:07:58 [akrotiri/nRQLu4lSAJ-000096] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3761B in 774.523041ms -{"time":"2025-07-28T19:07:58.635195+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"2602:fa91:0:cccc::20","peer_asn":"53427"} -2025/07/28 19:07:58 [akrotiri/nRQLu4lSAJ-000097] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3761B in 775.922417ms -2025/07/28 19:07:59 [akrotiri/nRQLu4lSAJ-000098] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3763B in 798.730542ms -{"time":"2025-07-28T19:07:59.277503+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:59.277472+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1077} -{"time":"2025-07-28T19:07:59.277617+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:59.43262+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":155} -{"time":"2025-07-28T19:07:59.433803+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:59.43381+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:07:59 [akrotiri/nRQLu4lSAJ-000099] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3763B in 746.758958ms -2025/07/28 19:07:59 [akrotiri/nRQLu4lSAJ-000100] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3763B in 746.649708ms -{"time":"2025-07-28T19:07:59.515959+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:59.515961+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":82} -{"time":"2025-07-28T19:07:59.517117+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:59.517871+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:07:59.51788+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":1} -{"time":"2025-07-28T19:07:59.519218+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:59.519238+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":1} -{"time":"2025-07-28T19:07:59.51926+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20036,"unique_prefixes":10966,"success":10966,"duration_ms":1419} -{"time":"2025-07-28T19:07:59.519737+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:59.529842+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:07:59.567245+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":48} -{"time":"2025-07-28T19:07:59.56728+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:07:59.5684+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:07:59.569388+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":2} -{"time":"2025-07-28T19:07:59.569429+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:07:59 [akrotiri/nRQLu4lSAJ-000101] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3761B in 764.993875ms -2025/07/28 19:08:00 [akrotiri/nRQLu4lSAJ-000102] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3761B in 774.816541ms -{"time":"2025-07-28T19:08:00.064229+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:08:00 [akrotiri/nRQLu4lSAJ-000103] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3765B in 748.079ms -2025/07/28 19:08:00 [akrotiri/nRQLu4lSAJ-000104] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3765B in 783.1225ms -{"time":"2025-07-28T19:08:00.620066+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1050} -{"time":"2025-07-28T19:08:00.620079+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:00.620085+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:00.704707+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":84} -{"time":"2025-07-28T19:08:00.704797+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:00.706413+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:00.706636+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":1} -{"time":"2025-07-28T19:08:00.706643+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:00.709913+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":3} -{"time":"2025-07-28T19:08:00.70992+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:00.709924+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20003,"unique_prefixes":10446,"success":10446,"duration_ms":1188} -{"time":"2025-07-28T19:08:00.720894+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:00.79123+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":81} -{"time":"2025-07-28T19:08:00.791254+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:00.792429+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:00 [akrotiri/nRQLu4lSAJ-000106] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3761B in 739.773042ms -2025/07/28 19:08:00 [akrotiri/nRQLu4lSAJ-000105] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3761B in 753.927583ms -2025/07/28 19:08:01 [akrotiri/nRQLu4lSAJ-000107] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3761B in 751.062375ms -2025/07/28 19:08:01 [akrotiri/nRQLu4lSAJ-000108] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3761B in 762.420375ms -{"time":"2025-07-28T19:08:01.565814+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:7f8::7942:0:1","peer_asn":"31042"} -{"time":"2025-07-28T19:08:01.587985+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:08:01 [akrotiri/nRQLu4lSAJ-000110] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3764B in 733.316541ms -2025/07/28 19:08:02 [akrotiri/nRQLu4lSAJ-000109] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3764B in 776.968625ms -{"time":"2025-07-28T19:08:02.073141+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1281} -{"time":"2025-07-28T19:08:02.073146+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:02.073185+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:02.125268+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":52} -{"time":"2025-07-28T19:08:02.125279+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:02.126945+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:02.128212+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":2} -{"time":"2025-07-28T19:08:02.128249+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:02.132224+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":3} -{"time":"2025-07-28T19:08:02.132232+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:02.132236+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20178,"unique_prefixes":12081,"success":12081,"duration_ms":1420} -{"time":"2025-07-28T19:08:02.146181+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:02.24666+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":114} -{"time":"2025-07-28T19:08:02.246673+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:02.247964+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:02 [akrotiri/nRQLu4lSAJ-000111] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3761B in 744.355667ms -2025/07/28 19:08:02 [akrotiri/nRQLu4lSAJ-000112] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3761B in 773.2495ms -2025/07/28 19:08:03 [akrotiri/nRQLu4lSAJ-000114] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3761B in 750.066916ms -2025/07/28 19:08:03 [akrotiri/nRQLu4lSAJ-000113] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3761B in 752.982917ms -2025/07/28 19:08:03 [akrotiri/nRQLu4lSAJ-000116] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3761B in 768.463791ms -2025/07/28 19:08:03 [akrotiri/nRQLu4lSAJ-000115] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3761B in 770.904166ms -{"time":"2025-07-28T19:08:03.641517+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1394} -{"time":"2025-07-28T19:08:03.641526+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:03.641538+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:03.753251+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":111} -{"time":"2025-07-28T19:08:03.753291+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:03.75591+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:03.759854+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":6} -{"time":"2025-07-28T19:08:03.759866+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":14843,"success":14843,"duration_ms":1625} -{"time":"2025-07-28T19:08:03.759886+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:03.772878+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:03.863427+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":103} -{"time":"2025-07-28T19:08:03.863431+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:03.865955+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:03 [akrotiri/nRQLu4lSAJ-000117] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3762B in 741.542208ms -2025/07/28 19:08:04 [akrotiri/nRQLu4lSAJ-000118] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3761B in 751.191208ms -{"time":"2025-07-28T19:08:04.092732+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"102.67.56.1","peer_asn":"328474"} -{"time":"2025-07-28T19:08:04.259315+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:04.385529+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"186.211.128.34","peer_asn":"14840"} -{"time":"2025-07-28T19:08:04.385629+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"186.211.128.34","peer_asn":"14840"} -2025/07/28 19:08:04 [akrotiri/nRQLu4lSAJ-000120] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3764B in 772.839292ms -2025/07/28 19:08:04 [akrotiri/nRQLu4lSAJ-000119] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3764B in 782.157667ms -{"time":"2025-07-28T19:08:04.954011+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:12f8::221:238","peer_asn":"262317"} -2025/07/28 19:08:05 [akrotiri/nRQLu4lSAJ-000122] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3763B in 783.544667ms -2025/07/28 19:08:05 [akrotiri/nRQLu4lSAJ-000121] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3763B in 789.895292ms -{"time":"2025-07-28T19:08:05.052625+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1189} -{"time":"2025-07-28T19:08:05.052643+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:05.052655+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:05.105556+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":52} -{"time":"2025-07-28T19:08:05.105565+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:05.106782+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:05.108567+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":3} -{"time":"2025-07-28T19:08:05.108599+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:05.112153+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":3} -{"time":"2025-07-28T19:08:05.11217+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20078,"unique_prefixes":12394,"success":12394,"duration_ms":1350} -{"time":"2025-07-28T19:08:05.112171+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:05.127667+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:05.206908+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":94} -{"time":"2025-07-28T19:08:05.206916+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:05.208013+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:05 [akrotiri/nRQLu4lSAJ-000123] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3758B in 826.184708ms -2025/07/28 19:08:05 [akrotiri/nRQLu4lSAJ-000124] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3758B in 839.739833ms -{"time":"2025-07-28T19:08:05.816151+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:06.004191+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":30000484167,"total_messages":172032,"total_bytes":126005632,"total_mb":"120.17","messages_per_sec":"2165.68","bits_per_sec":"12786101","mbps":"12.79","total_dropped":0} -{"time":"2025-07-28T19:08:06.004226+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":10894,"queue_cap":100000,"processed":159687,"dropped":0,"avg_time":135667,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:08:06.004237+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":1441,"queue_cap":100000,"processed":169140,"dropped":0,"avg_time":60095,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:08:06.004315+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":19350,"queue_cap":100000,"processed":151231,"dropped":0,"avg_time":164230,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:08:06.004354+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":170582,"dropped":0,"avg_time":1814,"min_time":0,"max_time":3326042} -2025/07/28 19:08:06 [akrotiri/nRQLu4lSAJ-000125] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 200 3762B in 861.26525ms -2025/07/28 19:08:06 [akrotiri/nRQLu4lSAJ-000126] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3762B in 878.993083ms -2025/07/28 19:08:06 [akrotiri/nRQLu4lSAJ-000127] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 200 3763B in 826.930041ms -2025/07/28 19:08:06 [akrotiri/nRQLu4lSAJ-000128] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3763B in 838.380708ms -{"time":"2025-07-28T19:08:07.102186+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1895} -{"time":"2025-07-28T19:08:07.102203+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:07.102207+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:07.111804+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:07.111819+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":9} -{"time":"2025-07-28T19:08:07.111839+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20010,"unique_prefixes":12491,"success":12491,"duration_ms":1998} -{"time":"2025-07-28T19:08:07.135738+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:07.144036+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -{"time":"2025-07-28T19:08:07.144057+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:07 [akrotiri/nRQLu4lSAJ-000131] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59151 - 408 151B in 379.261416ms -2025/07/28 19:08:07 [akrotiri/nRQLu4lSAJ-000129] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59154 - 408 151B in 406.081625ms -{"time":"2025-07-28T19:08:07.155384+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:07.155547+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":43} -{"time":"2025-07-28T19:08:07.158127+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:07.15936+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":3} -{"time":"2025-07-28T19:08:07.159375+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:07 [akrotiri/nRQLu4lSAJ-000130] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3760B in 957.286084ms -2025/07/28 19:08:07 [akrotiri/nRQLu4lSAJ-000132] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3760B in 939.063083ms -{"time":"2025-07-28T19:08:07.71021+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:08:08 [akrotiri/nRQLu4lSAJ-000134] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59361 - 200 3763B in 894.611167ms -2025/07/28 19:08:08 [akrotiri/nRQLu4lSAJ-000135] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59374 - 200 3763B in 888.741ms -{"time":"2025-07-28T19:08:08.16524+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"103.200.113.1","peer_asn":"131477"} -2025/07/28 19:08:08 [akrotiri/nRQLu4lSAJ-000136] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3763B in 854.105834ms -2025/07/28 19:08:08 [akrotiri/nRQLu4lSAJ-000137] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3763B in 855.303625ms -{"time":"2025-07-28T19:08:08.710087+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:08.710087+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1550} -{"time":"2025-07-28T19:08:08.710167+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:08.73078+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:08.730844+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":20} -{"time":"2025-07-28T19:08:08.732323+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:08.735035+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:08.735132+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":4} -{"time":"2025-07-28T19:08:08.749723+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:08.749739+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":14} -{"time":"2025-07-28T19:08:08.749769+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":10761,"success":10761,"duration_ms":1636} -{"time":"2025-07-28T19:08:08.762742+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:08.791185+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":41} -{"time":"2025-07-28T19:08:08.791219+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:08.792569+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:09 [akrotiri/nRQLu4lSAJ-000138] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59361 - 200 3760B in 903.582542ms -2025/07/28 19:08:09 [akrotiri/nRQLu4lSAJ-000139] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59374 - 200 3760B in 893.859041ms -2025/07/28 19:08:09 [akrotiri/nRQLu4lSAJ-000133] "GET http://127.0.0.1:8080/prefixlength/22 HTTP/1.1" from 127.0.0.1:59225 - 408 135B in 2.000398917s -2025/07/28 19:08:09 [akrotiri/nRQLu4lSAJ-000141] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3760B in 1.10750725s -2025/07/28 19:08:09 [akrotiri/nRQLu4lSAJ-000140] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3760B in 1.121125584s -{"time":"2025-07-28T19:08:10.062221+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:10.102263+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:10.102263+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1311} -{"time":"2025-07-28T19:08:10.102294+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:10.135009+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":32} -{"time":"2025-07-28T19:08:10.135276+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:10.137338+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:10.141868+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":6} -{"time":"2025-07-28T19:08:10.142041+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:10.153681+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:10.153838+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":11} -{"time":"2025-07-28T19:08:10.153852+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":8531,"success":8531,"duration_ms":1401} -{"time":"2025-07-28T19:08:10.161405+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:10.204999+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":51} -{"time":"2025-07-28T19:08:10.205075+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:10.207641+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:10 [akrotiri/nRQLu4lSAJ-000143] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59374 - 200 3760B in 1.146915958s -2025/07/28 19:08:10 [akrotiri/nRQLu4lSAJ-000144] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59376 - 200 3760B in 1.159083416s -{"time":"2025-07-28T19:08:10.802585+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:10 [akrotiri/nRQLu4lSAJ-000145] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59377 - 408 17B in 1.001297458s -{"time":"2025-07-28T19:08:10.837049+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"2400:c3e0::2","peer_asn":"142271"} -{"time":"2025-07-28T19:08:10.91727+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":712} -{"time":"2025-07-28T19:08:10.917293+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:10.917298+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:10.933631+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:10.934167+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":16} -{"time":"2025-07-28T19:08:10.934218+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":2865,"success":2865,"duration_ms":777} -{"time":"2025-07-28T19:08:10.94409+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:10.980883+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":47} -{"time":"2025-07-28T19:08:10.981341+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:10.983384+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:11 [akrotiri/nRQLu4lSAJ-000146] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3759B in 1.203097334s -2025/07/28 19:08:11 [akrotiri/nRQLu4lSAJ-000142] "GET http://127.0.0.1:8080/prefixlength/22 HTTP/1.1" from 127.0.0.1:59361 - 408 135B in 2.000990667s -{"time":"2025-07-28T19:08:11.286307+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"198.32.160.113","peer_asn":"15547"} -2025/07/28 19:08:11 [akrotiri/nRQLu4lSAJ-000147] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3760B in 1.233922791s -2025/07/28 19:08:11 [akrotiri/nRQLu4lSAJ-000148] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59374 - 200 3760B in 1.187058833s -{"time":"2025-07-28T19:08:11.779192+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:11 [akrotiri/nRQLu4lSAJ-000149] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59376 - 408 17B in 1.0028745s -{"time":"2025-07-28T19:08:11.804012+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:11 [akrotiri/nRQLu4lSAJ-000150] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59379 - 408 17B in 1.000656708s -2025/07/28 19:08:12 [akrotiri/nRQLu4lSAJ-000151] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 200 3760B in 1.314775292s -{"time":"2025-07-28T19:08:12.521089+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1539} -{"time":"2025-07-28T19:08:12.521124+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:12.521133+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:12.556054+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:12.556099+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":34} -{"time":"2025-07-28T19:08:12.556128+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":3913,"success":3913,"duration_ms":1619} -{"time":"2025-07-28T19:08:12.617882+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":61} -{"time":"2025-07-28T19:08:12.620312+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:12.620326+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:12.733693+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":111} -{"time":"2025-07-28T19:08:12.73616+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:12.736186+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:12.775116+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":38} -2025/07/28 19:08:12 [akrotiri/nRQLu4lSAJ-000153] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 200 3753B in 1.267609459s -{"time":"2025-07-28T19:08:12.785153+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:12 [akrotiri/nRQLu4lSAJ-000155] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59381 - 408 17B in 1.003883s -{"time":"2025-07-28T19:08:12.806171+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:12 [akrotiri/nRQLu4lSAJ-000156] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59382 - 408 17B in 1.000950167s -{"time":"2025-07-28T19:08:12.849975+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:12.850003+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:12.880337+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":30} -2025/07/28 19:08:12 [akrotiri/nRQLu4lSAJ-000154] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59374 - 200 3753B in 1.345688208s -{"time":"2025-07-28T19:08:13.138476+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:13.138503+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:13 [akrotiri/nRQLu4lSAJ-000152] "GET http://127.0.0.1:8080/prefixlength/22 HTTP/1.1" from 127.0.0.1:59380 - 408 135B in 2.002604958s -{"time":"2025-07-28T19:08:13.410969+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:13 [akrotiri/nRQLu4lSAJ-000157] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59153 - 408 17B in 1.001096958s -{"time":"2025-07-28T19:08:13.646076+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":507} -{"time":"2025-07-28T19:08:13.646095+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:13.6461+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:13.652136+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":5} -{"time":"2025-07-28T19:08:13.652197+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":4767,"success":4767,"duration_ms":520} -{"time":"2025-07-28T19:08:13.785883+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:13 [akrotiri/nRQLu4lSAJ-000158] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59150 - 408 17B in 1.006791959s -{"time":"2025-07-28T19:08:13.787357+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:13 [akrotiri/nRQLu4lSAJ-000159] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59384 - 408 17B in 1.001558666s -{"time":"2025-07-28T19:08:13.807074+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:13 [akrotiri/nRQLu4lSAJ-000160] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59385 - 408 17B in 1.000131625s -{"time":"2025-07-28T19:08:13.957189+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:13 [akrotiri/nRQLu4lSAJ-000161] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59374 - 408 17B in 1.001823167s -{"time":"2025-07-28T19:08:14.183508+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:14 [akrotiri/nRQLu4lSAJ-000162] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59386 - 408 17B in 1.000910667s -{"time":"2025-07-28T19:08:14.261084+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:14.261113+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:14.323682+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":62} -{"time":"2025-07-28T19:08:14.506607+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:b18:10::3","peer_asn":"47787"} -{"time":"2025-07-28T19:08:14.667334+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:14.667368+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:14.790016+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:14 [akrotiri/nRQLu4lSAJ-000164] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59388 - 408 17B in 1.000692s -{"time":"2025-07-28T19:08:14.799135+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:14 [akrotiri/nRQLu4lSAJ-000165] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59389 - 408 17B in 1.008588417s -{"time":"2025-07-28T19:08:14.961095+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:14 [akrotiri/nRQLu4lSAJ-000167] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59391 - 408 17B in 1.001378458s -2025/07/28 19:08:15 [akrotiri/nRQLu4lSAJ-000166] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59390 - 200 3755B in 1.288205208s -2025/07/28 19:08:15 [akrotiri/nRQLu4lSAJ-000163] "GET http://127.0.0.1:8080/prefixlength/22 HTTP/1.1" from 127.0.0.1:59387 - 408 135B in 2.001762166s -{"time":"2025-07-28T19:08:15.186082+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:15 [akrotiri/nRQLu4lSAJ-000168] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59392 - 408 17B in 1.000421291s -{"time":"2025-07-28T19:08:15.291864+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM prefixes","duration":56013625} -{"time":"2025-07-28T19:08:15.440781+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":773} -{"time":"2025-07-28T19:08:15.4408+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:15.440804+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:15.442674+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":1} -{"time":"2025-07-28T19:08:15.442687+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":8234,"unique_prefixes":1663,"success":1663,"duration_ms":779} -{"time":"2025-07-28T19:08:15.660325+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:15.66036+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:15.792499+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:15 [akrotiri/nRQLu4lSAJ-000169] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59394 - 408 17B in 1.001657917s -{"time":"2025-07-28T19:08:15.801348+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:15 [akrotiri/nRQLu4lSAJ-000170] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59395 - 408 17B in 1.001492791s -{"time":"2025-07-28T19:08:15.839252+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:15.908511+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":248} -{"time":"2025-07-28T19:08:15.912469+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:15.967145+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:15 [akrotiri/nRQLu4lSAJ-000171] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59396 - 408 17B in 1.003547167s -{"time":"2025-07-28T19:08:16.008638+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":40004628500,"total_messages":210432,"total_bytes":152371437,"total_mb":"145.31","messages_per_sec":"2523.63","bits_per_sec":"14628534","mbps":"14.63","total_dropped":0} -{"time":"2025-07-28T19:08:16.017094+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":204,"queue_cap":100000,"processed":208259,"dropped":0,"avg_time":140660,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:08:16.01711+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":208464,"dropped":0,"avg_time":61546,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:08:16.017118+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":0,"queue_cap":100000,"processed":208464,"dropped":0,"avg_time":159871,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:08:16.017126+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":208464,"dropped":0,"avg_time":1898,"min_time":0,"max_time":10314750} -{"time":"2025-07-28T19:08:16.044008+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":131} -{"time":"2025-07-28T19:08:16.109469+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:16 [akrotiri/nRQLu4lSAJ-000172] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59390 - 408 17B in 1.00463425s -{"time":"2025-07-28T19:08:16.187409+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:16 [akrotiri/nRQLu4lSAJ-000173] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59397 - 408 17B in 1.001187916s -{"time":"2025-07-28T19:08:16.66975+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:16.669766+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:16.799905+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:16 [akrotiri/nRQLu4lSAJ-000175] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59399 - 408 17B in 1.006673667s -{"time":"2025-07-28T19:08:16.801779+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:de8:4::1:8403:1","peer_asn":"18403"} -{"time":"2025-07-28T19:08:16.802145+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:16 [akrotiri/nRQLu4lSAJ-000176] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59400 - 408 17B in 1.000122541s -{"time":"2025-07-28T19:08:16.968794+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:16 [akrotiri/nRQLu4lSAJ-000177] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59401 - 408 17B in 1.000725166s -2025/07/28 19:08:17 [akrotiri/nRQLu4lSAJ-000183] "GET http://127.0.0.1:8080/prefixlength/128 HTTP/1.1" from 127.0.0.1:59408 - 200 7442B in 1.795959ms -{"time":"2025-07-28T19:08:17.118767+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:17 [akrotiri/nRQLu4lSAJ-000178] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59402 - 408 17B in 1.008219917s -2025/07/28 19:08:17 [akrotiri/nRQLu4lSAJ-000174] "GET http://127.0.0.1:8080/prefixlength/22 HTTP/1.1" from 127.0.0.1:59398 - 200 191902B in 1.998639042s -{"time":"2025-07-28T19:08:17.1904+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:17 [akrotiri/nRQLu4lSAJ-000179] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59403 - 408 17B in 1.002409125s -{"time":"2025-07-28T19:08:17.272694+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:17.802801+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:17 [akrotiri/nRQLu4lSAJ-000180] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59405 - 408 17B in 1.000817958s -{"time":"2025-07-28T19:08:17.803362+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:43f8:6d0::60","peer_asn":"37468"} -{"time":"2025-07-28T19:08:17.806676+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:17 [akrotiri/nRQLu4lSAJ-000181] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59406 - 408 17B in 1.004242083s -{"time":"2025-07-28T19:08:17.976576+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:17 [akrotiri/nRQLu4lSAJ-000182] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59407 - 408 17B in 1.003798167s -{"time":"2025-07-28T19:08:17.998312+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM peerings","duration":66096000} -{"time":"2025-07-28T19:08:18.124502+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:18 [akrotiri/nRQLu4lSAJ-000184] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59408 - 408 17B in 1.004432s -{"time":"2025-07-28T19:08:18.178122+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM prefixes WHERE ip_version = ?","duration":131551500} -{"time":"2025-07-28T19:08:18.186574+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:18 [akrotiri/nRQLu4lSAJ-000185] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59398 - 408 17B in 1.000868167s -{"time":"2025-07-28T19:08:18.191922+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:18 [akrotiri/nRQLu4lSAJ-000186] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59409 - 408 17B in 1.000417083s -{"time":"2025-07-28T19:08:18.259671+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM bgp_peers","duration":64531292} -{"time":"2025-07-28T19:08:18.259997+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM prefixes","duration":65359084} -{"time":"2025-07-28T19:08:18.278504+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM asns","duration":85992417} -{"time":"2025-07-28T19:08:18.304314+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:18.32996+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1660} -{"time":"2025-07-28T19:08:18.329976+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:18.329981+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:18.330027+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM prefixes WHERE ip_version = ?","duration":70415625} -{"time":"2025-07-28T19:08:18.347879+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:18.348036+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":17} -{"time":"2025-07-28T19:08:18.348091+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":13654,"unique_prefixes":3860,"success":3860,"duration_ms":1684} -{"time":"2025-07-28T19:08:18.385798+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:18.386296+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":37} -{"time":"2025-07-28T19:08:18.40841+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:18.442814+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:18.485114+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":99} -{"time":"2025-07-28T19:08:18.48537+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:18.485416+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM prefixes WHERE ip_version = ?","duration":125381833} -{"time":"2025-07-28T19:08:18.575325+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":89} -{"time":"2025-07-28T19:08:18.575578+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:18.805812+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:18 [akrotiri/nRQLu4lSAJ-000187] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59410 - 408 17B in 1.00254275s -{"time":"2025-07-28T19:08:18.808577+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:18 [akrotiri/nRQLu4lSAJ-000188] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59411 - 408 17B in 1.024969375s -{"time":"2025-07-28T19:08:18.979246+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:18 [akrotiri/nRQLu4lSAJ-000189] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59412 - 408 17B in 1.001201917s -{"time":"2025-07-28T19:08:19.127074+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM prefixes","duration":143170791} -{"time":"2025-07-28T19:08:19.130041+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:19 [akrotiri/nRQLu4lSAJ-000190] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59413 - 408 17B in 1.004298s -{"time":"2025-07-28T19:08:19.19263+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -{"time":"2025-07-28T19:08:19.200033+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:19 [akrotiri/nRQLu4lSAJ-000191] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59414 - 408 17B in 1.011819916s -2025/07/28 19:08:19 [akrotiri/nRQLu4lSAJ-000192] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59415 - 408 17B in 1.007628375s -{"time":"2025-07-28T19:08:19.276227+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM bgp_peers","duration":89706875} -{"time":"2025-07-28T19:08:19.286193+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM asns","duration":84675625} -{"time":"2025-07-28T19:08:19.808954+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:19 [akrotiri/nRQLu4lSAJ-000193] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59417 - 408 17B in 1.001136459s -{"time":"2025-07-28T19:08:19.841998+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:19 [akrotiri/nRQLu4lSAJ-000194] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59418 - 408 17B in 1.007844417s -{"time":"2025-07-28T19:08:20.005451+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:20 [akrotiri/nRQLu4lSAJ-000195] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59419 - 408 17B in 1.024671542s -{"time":"2025-07-28T19:08:20.116723+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:20.132483+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:20 [akrotiri/nRQLu4lSAJ-000196] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59420 - 408 17B in 1.00057575s -{"time":"2025-07-28T19:08:20.202532+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:20 [akrotiri/nRQLu4lSAJ-000197] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59421 - 408 17B in 1.001289417s -{"time":"2025-07-28T19:08:20.202887+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:20 [akrotiri/nRQLu4lSAJ-000198] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59422 - 408 17B in 1.001543166s -{"time":"2025-07-28T19:08:20.543539+02:00","level":"DEBUG","msg":"Slow query","source":"slowquery.go:17","func":"database.logSlowQuery","query":"SELECT COUNT(*) FROM peerings","duration":187139125} -{"time":"2025-07-28T19:08:20.70497+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":2129} -{"time":"2025-07-28T19:08:20.705+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:20.705008+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:20.711695+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:20.71258+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":6} -{"time":"2025-07-28T19:08:20.712604+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20003,"unique_prefixes":9835,"success":9835,"duration_ms":2282} -{"time":"2025-07-28T19:08:20.7633+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":51} -{"time":"2025-07-28T19:08:20.811179+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:20 [akrotiri/nRQLu4lSAJ-000199] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59423 - 408 17B in 1.000767708s -{"time":"2025-07-28T19:08:20.843804+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:20 [akrotiri/nRQLu4lSAJ-000200] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59424 - 408 17B in 1.001282125s -{"time":"2025-07-28T19:08:21.009173+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:21 [akrotiri/nRQLu4lSAJ-000201] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59425 - 408 17B in 1.001428625s -{"time":"2025-07-28T19:08:21.135173+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:21 [akrotiri/nRQLu4lSAJ-000202] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59426 - 408 17B in 1.002054125s -{"time":"2025-07-28T19:08:21.204549+02:00","level":"ERROR","msg":"Database stats timeout","source":"handlers.go:250","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1"} -2025/07/28 19:08:21 [akrotiri/nRQLu4lSAJ-000204] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59427 - 408 17B in 1.001135084s -2025/07/28 19:08:21 [akrotiri/nRQLu4lSAJ-000203] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59428 - 200 3754B in 1.13904825s -{"time":"2025-07-28T19:08:21.641501+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:21.641516+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:21.717351+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":75} -2025/07/28 19:08:21 [akrotiri/nRQLu4lSAJ-000205] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 1.018510834s -2025/07/28 19:08:21 [akrotiri/nRQLu4lSAJ-000206] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 1.020566333s -{"time":"2025-07-28T19:08:22.048299+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:22.048315+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:22.077782+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:22.11331+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":64} -{"time":"2025-07-28T19:08:22.113265+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:22 [akrotiri/nRQLu4lSAJ-000207] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3756B in 1.1265015s -2025/07/28 19:08:22 [akrotiri/nRQLu4lSAJ-000208] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59433 - 200 3756B in 1.06053575s -{"time":"2025-07-28T19:08:22.320431+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"196.60.8.60","peer_asn":"37468"} -2025/07/28 19:08:22 [akrotiri/nRQLu4lSAJ-000209] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59434 - 200 3757B in 1.152573584s -2025/07/28 19:08:22 [akrotiri/nRQLu4lSAJ-000210] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59428 - 200 3760B in 1.135201958s -2025/07/28 19:08:22 [akrotiri/nRQLu4lSAJ-000212] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3757B in 1.125838625s -2025/07/28 19:08:22 [akrotiri/nRQLu4lSAJ-000211] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3757B in 1.169336541s -{"time":"2025-07-28T19:08:23.122404+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"193.107.13.3","peer_asn":"47787"} -2025/07/28 19:08:23 [akrotiri/nRQLu4lSAJ-000213] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3757B in 1.109921584s -2025/07/28 19:08:23 [akrotiri/nRQLu4lSAJ-000214] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59433 - 200 3757B in 1.117077583s -{"time":"2025-07-28T19:08:23.374575+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:23.385104+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1271} -{"time":"2025-07-28T19:08:23.385185+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:23.385241+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:23.426993+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":41} -{"time":"2025-07-28T19:08:23.427017+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -2025/07/28 19:08:23 [akrotiri/nRQLu4lSAJ-000215] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59434 - 200 3757B in 1.101775792s -{"time":"2025-07-28T19:08:23.468659+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":41} -{"time":"2025-07-28T19:08:23.468676+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20005,"unique_prefixes":6645,"success":6645,"duration_ms":1399} -2025/07/28 19:08:23 [akrotiri/nRQLu4lSAJ-000216] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59428 - 200 3754B in 1.089047958s -{"time":"2025-07-28T19:08:23.874899+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:23.874925+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:24 [akrotiri/nRQLu4lSAJ-000217] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3756B in 1.076448041s -2025/07/28 19:08:24 [akrotiri/nRQLu4lSAJ-000218] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3756B in 1.089797375s -2025/07/28 19:08:24 [akrotiri/nRQLu4lSAJ-000219] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3756B in 969.097417ms -{"time":"2025-07-28T19:08:24.327552+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:08:24 [akrotiri/nRQLu4lSAJ-000220] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59433 - 200 3759B in 1.062289917s -2025/07/28 19:08:24 [akrotiri/nRQLu4lSAJ-000221] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59434 - 200 3760B in 1.062829042s -2025/07/28 19:08:24 [akrotiri/nRQLu4lSAJ-000222] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59428 - 200 3760B in 1.076154292s -{"time":"2025-07-28T19:08:24.664824+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:25 [akrotiri/nRQLu4lSAJ-000223] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3763B in 1.108321583s -2025/07/28 19:08:25 [akrotiri/nRQLu4lSAJ-000224] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3763B in 1.109602042s -2025/07/28 19:08:25 [akrotiri/nRQLu4lSAJ-000225] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3763B in 1.052190333s -{"time":"2025-07-28T19:08:25.335737+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1460} -{"time":"2025-07-28T19:08:25.335757+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:25.335804+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:25.344238+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":8} -{"time":"2025-07-28T19:08:25.344271+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:25 [akrotiri/nRQLu4lSAJ-000226] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59433 - 200 3760B in 1.09577275s -{"time":"2025-07-28T19:08:25.48333+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":139} -{"time":"2025-07-28T19:08:25.483757+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:25.490088+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":6} -{"time":"2025-07-28T19:08:25.490105+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20013,"unique_prefixes":8865,"success":8865,"duration_ms":1629} -2025/07/28 19:08:25 [akrotiri/nRQLu4lSAJ-000227] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59434 - 200 3754B in 1.064976958s -2025/07/28 19:08:25 [akrotiri/nRQLu4lSAJ-000228] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59428 - 200 3754B in 1.1105515s -{"time":"2025-07-28T19:08:26.004312+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":50000442125,"total_messages":245593,"total_bytes":177028891,"total_mb":"168.83","messages_per_sec":"2661.85","bits_per_sec":"15336850","mbps":"15.34","total_dropped":0} -{"time":"2025-07-28T19:08:26.004347+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":0,"queue_cap":100000,"processed":243142,"dropped":0,"avg_time":133166,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:08:26.004358+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":243142,"dropped":0,"avg_time":58151,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:08:26.004366+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":0,"queue_cap":100000,"processed":243142,"dropped":0,"avg_time":165693,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:08:26.004373+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":243142,"dropped":0,"avg_time":2069,"min_time":0,"max_time":20882459} -2025/07/28 19:08:26 [akrotiri/nRQLu4lSAJ-000229] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 1.041385416s -2025/07/28 19:08:26 [akrotiri/nRQLu4lSAJ-000230] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 1.063147166s -{"time":"2025-07-28T19:08:26.29021+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:26.290227+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:26.336384+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":46} -2025/07/28 19:08:26 [akrotiri/nRQLu4lSAJ-000231] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 1.095675833s -{"time":"2025-07-28T19:08:26.39104+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"80.81.194.204","peer_asn":"48166"} -2025/07/28 19:08:26 [akrotiri/nRQLu4lSAJ-000232] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59433 - 200 3753B in 963.227ms -{"time":"2025-07-28T19:08:26.552771+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:26.552788+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:26 [akrotiri/nRQLu4lSAJ-000233] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59434 - 200 3755B in 999.683292ms -2025/07/28 19:08:26 [akrotiri/nRQLu4lSAJ-000234] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59428 - 200 3756B in 1.023684542s -2025/07/28 19:08:27 [akrotiri/nRQLu4lSAJ-000235] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3757B in 1.087896542s -2025/07/28 19:08:27 [akrotiri/nRQLu4lSAJ-000236] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3757B in 1.071200959s -{"time":"2025-07-28T19:08:27.389095+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:08:27 [akrotiri/nRQLu4lSAJ-000237] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3758B in 1.094182709s -2025/07/28 19:08:27 [akrotiri/nRQLu4lSAJ-000238] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59433 - 200 3758B in 1.073683959s -2025/07/28 19:08:27 [akrotiri/nRQLu4lSAJ-000239] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59434 - 200 3759B in 1.098977792s -{"time":"2025-07-28T19:08:27.76415+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:27.764158+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1211} -{"time":"2025-07-28T19:08:27.764184+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:27.778124+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":13} -{"time":"2025-07-28T19:08:27.778143+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:27.787948+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":9} -{"time":"2025-07-28T19:08:27.787966+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":6135,"success":6135,"duration_ms":1243} -{"time":"2025-07-28T19:08:27.813536+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:27.813549+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:27 [akrotiri/nRQLu4lSAJ-000240] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59428 - 200 3755B in 1.074659375s -{"time":"2025-07-28T19:08:27.871822+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":58} -{"time":"2025-07-28T19:08:28.277914+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"2001:12f8::121","peer_asn":"42473"} -{"time":"2025-07-28T19:08:28.282425+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:12f8::121","peer_asn":"42473"} -2025/07/28 19:08:28 [akrotiri/nRQLu4lSAJ-000241] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 1.061955042s -2025/07/28 19:08:28 [akrotiri/nRQLu4lSAJ-000242] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 1.080827333s -2025/07/28 19:08:28 [akrotiri/nRQLu4lSAJ-000243] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 1.051267292s -2025/07/28 19:08:28 [akrotiri/nRQLu4lSAJ-000244] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59433 - 200 3754B in 1.018064334s -2025/07/28 19:08:28 [akrotiri/nRQLu4lSAJ-000245] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59434 - 200 3753B in 982.598916ms -2025/07/28 19:08:28 [akrotiri/nRQLu4lSAJ-000246] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59428 - 200 3753B in 960.169333ms -{"time":"2025-07-28T19:08:28.828053+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:28.828081+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:28.947988+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":119} -2025/07/28 19:08:29 [akrotiri/nRQLu4lSAJ-000247] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3753B in 899.490792ms -2025/07/28 19:08:29 [akrotiri/nRQLu4lSAJ-000248] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3753B in 886.198958ms -{"time":"2025-07-28T19:08:29.38112+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:29.381147+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:29 [akrotiri/nRQLu4lSAJ-000249] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3755B in 864.334ms -2025/07/28 19:08:29 [akrotiri/nRQLu4lSAJ-000250] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59433 - 200 3755B in 871.581417ms -{"time":"2025-07-28T19:08:29.417747+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:08:29 [akrotiri/nRQLu4lSAJ-000251] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59434 - 200 3758B in 746.747542ms -{"time":"2025-07-28T19:08:29.790615+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":409} -{"time":"2025-07-28T19:08:29.79064+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:29.790622+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:29.793977+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":3} -{"time":"2025-07-28T19:08:29.793999+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:29.83782+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":43} -{"time":"2025-07-28T19:08:29.837835+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20009,"unique_prefixes":9043,"success":9043,"duration_ms":466} -{"time":"2025-07-28T19:08:29.865667+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:29.865685+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:29.900598+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":34} -{"time":"2025-07-28T19:08:29.940564+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:29.940581+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:30 [akrotiri/nRQLu4lSAJ-000252] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3753B in 673.332625ms -{"time":"2025-07-28T19:08:30.330755+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":390} -{"time":"2025-07-28T19:08:30.330772+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:30.330776+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:30.369903+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":39} -{"time":"2025-07-28T19:08:30.369921+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20007,"unique_prefixes":17330,"success":17330,"duration_ms":443} -{"time":"2025-07-28T19:08:30.430228+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:30.43024+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:30.463905+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":33} -{"time":"2025-07-28T19:08:30.600148+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:30.600164+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:30 [akrotiri/nRQLu4lSAJ-000253] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 658.970167ms -{"time":"2025-07-28T19:08:30.650478+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:31.002825+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":402} -{"time":"2025-07-28T19:08:31.002851+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:31.002833+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:31.005408+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":2} -{"time":"2025-07-28T19:08:31.005445+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:31.007851+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":2} -{"time":"2025-07-28T19:08:31.00786+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":17577,"success":17577,"duration_ms":419} -2025/07/28 19:08:31 [akrotiri/nRQLu4lSAJ-000254] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3751B in 640.66375ms -{"time":"2025-07-28T19:08:31.131814+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:31.131826+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:31.209497+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":77} -{"time":"2025-07-28T19:08:31.394478+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:31.394493+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:31 [akrotiri/nRQLu4lSAJ-000255] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3755B in 648.955208ms -{"time":"2025-07-28T19:08:31.961427+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:32.052114+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:08:32 [akrotiri/nRQLu4lSAJ-000256] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3761B in 729.255584ms -2025/07/28 19:08:32 [akrotiri/nRQLu4lSAJ-000257] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3761B in 662.749375ms -{"time":"2025-07-28T19:08:32.742275+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1347} -{"time":"2025-07-28T19:08:32.742294+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:32.742311+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:32.921695+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":179} -{"time":"2025-07-28T19:08:32.921709+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:32.922853+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:32.923575+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":1} -{"time":"2025-07-28T19:08:32.923594+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:32.928459+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":4} -{"time":"2025-07-28T19:08:32.928466+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:32.928471+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":16497,"success":16497,"duration_ms":1543} -{"time":"2025-07-28T19:08:32.942775+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:32.985476+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":57} -{"time":"2025-07-28T19:08:32.985489+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:33 [akrotiri/nRQLu4lSAJ-000258] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 714.2415ms -{"time":"2025-07-28T19:08:33.653594+02:00","level":"DEBUG","msg":"System stats","source":"cli.go:40","func":"routewatch.logDebugStats","goroutines":83,"alloc_mb":97,"total_alloc_mb":1720,"sys_mb":137,"num_gc":49,"heap_alloc_mb":97,"heap_sys_mb":125,"heap_idle_mb":22,"heap_inuse_mb":102,"heap_released_mb":15,"stack_inuse_mb":2} -2025/07/28 19:08:33 [akrotiri/nRQLu4lSAJ-000259] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3755B in 690.170375ms -{"time":"2025-07-28T19:08:34.023451+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:34 [akrotiri/nRQLu4lSAJ-000260] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3757B in 639.157458ms -{"time":"2025-07-28T19:08:34.120439+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:34.563495+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1577} -{"time":"2025-07-28T19:08:34.563515+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:34.56352+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:34.645032+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":81} -{"time":"2025-07-28T19:08:34.645035+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:34.64928+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":4} -{"time":"2025-07-28T19:08:34.649303+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:34.65688+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":7} -{"time":"2025-07-28T19:08:34.656894+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20007,"unique_prefixes":17320,"success":17320,"duration_ms":1727} -{"time":"2025-07-28T19:08:34.664534+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:34.664547+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:34 [akrotiri/nRQLu4lSAJ-000261] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 736.743708ms -{"time":"2025-07-28T19:08:34.818992+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:35.035348+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"2001:7f8:1::a503:1042:1","peer_asn":"31042"} -2025/07/28 19:08:35 [akrotiri/nRQLu4lSAJ-000262] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3758B in 787.74675ms -{"time":"2025-07-28T19:08:35.647681+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:35.647681+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":983} -{"time":"2025-07-28T19:08:35.64773+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -2025/07/28 19:08:35 [akrotiri/nRQLu4lSAJ-000263] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3759B in 702.227791ms -{"time":"2025-07-28T19:08:35.791126+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:35.791122+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":143} -{"time":"2025-07-28T19:08:35.79726+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":6} -{"time":"2025-07-28T19:08:35.797272+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20005,"unique_prefixes":7951,"success":7951,"duration_ms":1139} -{"time":"2025-07-28T19:08:35.802998+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:35.803009+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:36.004086+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":60000166625,"total_messages":297984,"total_bytes":216255311,"total_mb":"206.24","messages_per_sec":"3040.71","bits_per_sec":"17698667","mbps":"17.70","total_dropped":0} -{"time":"2025-07-28T19:08:36.004107+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":0,"queue_cap":100000,"processed":295105,"dropped":0,"avg_time":119904,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:08:36.004112+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":295105,"dropped":0,"avg_time":56514,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:08:36.004115+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":961,"queue_cap":100000,"processed":294143,"dropped":0,"avg_time":160729,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:08:36.004118+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":295105,"dropped":0,"avg_time":2031,"min_time":0,"max_time":20882459} -{"time":"2025-07-28T19:08:36.203492+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:36.338531+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"217.29.66.232","peer_asn":"54104"} -{"time":"2025-07-28T19:08:36.341477+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -2025/07/28 19:08:36 [akrotiri/nRQLu4lSAJ-000264] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3759B in 860.047708ms -{"time":"2025-07-28T19:08:36.522808+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:36.52284+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":719} -{"time":"2025-07-28T19:08:36.522876+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:36.561225+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":38} -{"time":"2025-07-28T19:08:36.561266+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:36.56591+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":4} -{"time":"2025-07-28T19:08:36.565945+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:36.570159+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":4} -{"time":"2025-07-28T19:08:36.570169+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":5742,"success":5742,"duration_ms":771} -2025/07/28 19:08:36 [akrotiri/nRQLu4lSAJ-000265] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3752B in 739.382417ms -{"time":"2025-07-28T19:08:37.417883+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:37.417898+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:37 [akrotiri/nRQLu4lSAJ-000266] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 623.284125ms -{"time":"2025-07-28T19:08:37.498092+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":80} -2025/07/28 19:08:37 [akrotiri/nRQLu4lSAJ-000267] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3753B in 622.882375ms -{"time":"2025-07-28T19:08:37.667058+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:37.667078+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:37.736365+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"195.208.208.187","peer_asn":"9002"} -2025/07/28 19:08:38 [akrotiri/nRQLu4lSAJ-000268] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3756B in 645.478791ms -{"time":"2025-07-28T19:08:38.324788+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":657} -{"time":"2025-07-28T19:08:38.324804+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:38.324808+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:38.415062+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":90} -{"time":"2025-07-28T19:08:38.415082+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":16418,"unique_prefixes":7199,"success":7199,"duration_ms":752} -{"time":"2025-07-28T19:08:38.519524+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:38.519537+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:38.563551+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":44} -{"time":"2025-07-28T19:08:38.619037+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:38.619054+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:38.625245+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":6} -2025/07/28 19:08:38 [akrotiri/nRQLu4lSAJ-000269] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3753B in 640.730292ms -2025/07/28 19:08:39 [akrotiri/nRQLu4lSAJ-000270] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 679.340083ms -2025/07/28 19:08:39 [akrotiri/nRQLu4lSAJ-000271] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 648.752416ms -{"time":"2025-07-28T19:08:39.665076+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:39.665087+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:40.021877+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":356} -{"time":"2025-07-28T19:08:40.021894+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:40.021901+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:40.075277+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:40.075856+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":53} -{"time":"2025-07-28T19:08:40.07587+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":12790,"unique_prefixes":3484,"success":3484,"duration_ms":413} -{"time":"2025-07-28T19:08:40.07588+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:40.10634+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":30} -2025/07/28 19:08:40 [akrotiri/nRQLu4lSAJ-000272] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 703.211584ms -{"time":"2025-07-28T19:08:40.62553+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"80.81.192.113","peer_asn":"35320"} -2025/07/28 19:08:40 [akrotiri/nRQLu4lSAJ-000273] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 663.594ms -{"time":"2025-07-28T19:08:40.871914+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:40.871926+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:40.905366+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:40.913924+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":41} -{"time":"2025-07-28T19:08:40.91393+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:40.917132+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":3} -2025/07/28 19:08:41 [akrotiri/nRQLu4lSAJ-000274] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 646.394666ms -{"time":"2025-07-28T19:08:41.216624+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"196.60.8.170","peer_asn":"327781"} -2025/07/28 19:08:41 [akrotiri/nRQLu4lSAJ-000275] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 600.239208ms -{"time":"2025-07-28T19:08:41.668475+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:41.66849+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:42.115819+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:42 [akrotiri/nRQLu4lSAJ-000276] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3759B in 586.912ms -{"time":"2025-07-28T19:08:42.472822+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:42.472819+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":804} -{"time":"2025-07-28T19:08:42.472861+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:42.510436+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":37} -{"time":"2025-07-28T19:08:42.510447+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:42.513694+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":3} -{"time":"2025-07-28T19:08:42.513706+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":19350,"unique_prefixes":7616,"success":7616,"duration_ms":850} -2025/07/28 19:08:42 [akrotiri/nRQLu4lSAJ-000277] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 672.594416ms -{"time":"2025-07-28T19:08:42.89924+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:42.899255+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:42.918192+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:42.991005+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":91} -{"time":"2025-07-28T19:08:42.991014+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:42.994176+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":3} -2025/07/28 19:08:43 [akrotiri/nRQLu4lSAJ-000278] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 619.220584ms -2025/07/28 19:08:43 [akrotiri/nRQLu4lSAJ-000279] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3752B in 592.1105ms -{"time":"2025-07-28T19:08:43.667804+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:43.667818+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:44 [akrotiri/nRQLu4lSAJ-000280] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3751B in 651.86725ms -{"time":"2025-07-28T19:08:44.465271+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":797} -{"time":"2025-07-28T19:08:44.465312+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:44.465316+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:44.467972+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:44.475088+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":9} -{"time":"2025-07-28T19:08:44.475096+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:44.4751+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":18694,"unique_prefixes":6390,"success":6390,"duration_ms":812} -{"time":"2025-07-28T19:08:44.599514+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":124} -2025/07/28 19:08:44 [akrotiri/nRQLu4lSAJ-000281] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3749B in 801.422083ms -2025/07/28 19:08:45 [akrotiri/nRQLu4lSAJ-000282] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3749B in 604.868ms -{"time":"2025-07-28T19:08:45.580503+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:45.580522+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:45.601613+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:45.608413+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:45 [akrotiri/nRQLu4lSAJ-000283] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3755B in 556.036542ms -{"time":"2025-07-28T19:08:45.61972+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":39} -{"time":"2025-07-28T19:08:45.619728+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:45.622759+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":3} -{"time":"2025-07-28T19:08:45.622778+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:46.004541+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":70000555625,"total_messages":342016,"total_bytes":247383573,"total_mb":"235.92","messages_per_sec":"3247.06","bits_per_sec":"18750228","mbps":"18.75","total_dropped":0} -{"time":"2025-07-28T19:08:46.004577+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":0,"queue_cap":100000,"processed":338648,"dropped":0,"avg_time":108108,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:08:46.004582+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":338648,"dropped":0,"avg_time":50285,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:08:46.004591+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":1218,"queue_cap":100000,"processed":337429,"dropped":0,"avg_time":148948,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:08:46.004595+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":338648,"dropped":0,"avg_time":1943,"min_time":0,"max_time":20882459} -2025/07/28 19:08:46 [akrotiri/nRQLu4lSAJ-000284] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3753B in 725.505083ms -{"time":"2025-07-28T19:08:46.740561+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":1117} -{"time":"2025-07-28T19:08:46.74058+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:46.740584+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:46.764025+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":23} -{"time":"2025-07-28T19:08:46.764041+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":10148,"success":10148,"duration_ms":1164} -2025/07/28 19:08:46 [akrotiri/nRQLu4lSAJ-000285] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3750B in 767.819125ms -2025/07/28 19:08:47 [akrotiri/nRQLu4lSAJ-000286] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3750B in 627.9065ms -{"time":"2025-07-28T19:08:47.191751+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:47.191762+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:47.265205+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":73} -{"time":"2025-07-28T19:08:47.659933+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:47.659959+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:47.665859+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":5} -2025/07/28 19:08:47 [akrotiri/nRQLu4lSAJ-000287] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3751B in 759.642167ms -2025/07/28 19:08:48 [akrotiri/nRQLu4lSAJ-000288] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3751B in 741.929583ms -{"time":"2025-07-28T19:08:48.655502+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:48.655522+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:48.668122+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:48.68021+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":24} -{"time":"2025-07-28T19:08:48.680245+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:49 [akrotiri/nRQLu4lSAJ-000289] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3758B in 1.008004166s -{"time":"2025-07-28T19:08:49.121517+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:432","func":"streamer.(*Streamer).stream","peer":"195.208.209.174","peer_asn":"25227"} -2025/07/28 19:08:49 [akrotiri/nRQLu4lSAJ-000290] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3757B in 850.304916ms -{"time":"2025-07-28T19:08:49.676251+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":995} -{"time":"2025-07-28T19:08:49.676268+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:49.676272+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -2025/07/28 19:08:49 [akrotiri/nRQLu4lSAJ-000291] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3758B in 667.173666ms -{"time":"2025-07-28T19:08:49.830118+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":153} -{"time":"2025-07-28T19:08:49.830136+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":17606,"unique_prefixes":4260,"success":4260,"duration_ms":1167} -{"time":"2025-07-28T19:08:49.991001+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:49.991015+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:50.027158+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":36} -{"time":"2025-07-28T19:08:50.137902+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:440","func":"streamer.(*Streamer).stream","peer":"193.239.118.249","peer_asn":"41255"} -2025/07/28 19:08:50 [akrotiri/nRQLu4lSAJ-000292] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3755B in 632.136875ms -{"time":"2025-07-28T19:08:50.236264+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:50.236276+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:50.241092+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":4} -2025/07/28 19:08:50 [akrotiri/nRQLu4lSAJ-000293] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3755B in 630.333416ms -2025/07/28 19:08:51 [akrotiri/nRQLu4lSAJ-000294] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3755B in 645.829ms -{"time":"2025-07-28T19:08:51.665972+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -{"time":"2025-07-28T19:08:51.666134+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:180"} -2025/07/28 19:08:51 [akrotiri/nRQLu4lSAJ-000295] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3755B in 668.391125ms -{"time":"2025-07-28T19:08:52.041884+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:180)","duration_ms":375} -{"time":"2025-07-28T19:08:52.041917+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:52.041921+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:261"} -{"time":"2025-07-28T19:08:52.085899+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:261)","duration_ms":43} -{"time":"2025-07-28T19:08:52.085917+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":12099,"unique_prefixes":1903,"success":1903,"duration_ms":422} -2025/07/28 19:08:52 [akrotiri/nRQLu4lSAJ-000296] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3755B in 629.8825ms -2025/07/28 19:08:52 [akrotiri/nRQLu4lSAJ-000297] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3755B in 595.469584ms -2025/07/28 19:08:53 [akrotiri/nRQLu4lSAJ-000298] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3755B in 578.853125ms -{"time":"2025-07-28T19:08:53.659722+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:53.659738+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:639"} -{"time":"2025-07-28T19:08:53.659846+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:143","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -{"time":"2025-07-28T19:08:53.66108+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:639)","duration_ms":1} -{"time":"2025-07-28T19:08:53.66109+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:149","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:331"} -2025/07/28 19:08:53 [akrotiri/nRQLu4lSAJ-000299] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3755B in 578.871ms -{"time":"2025-07-28T19:08:53.67232+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:161","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:331)","duration_ms":11} -2025/07/28 19:08:54 [akrotiri/nRQLu4lSAJ-000300] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 588.576375ms -2025/07/28 19:08:54 [akrotiri/nRQLu4lSAJ-000301] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3753B in 573.700125ms -2025/07/28 19:08:55 [akrotiri/nRQLu4lSAJ-000302] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3753B in 623.384583ms -2025/07/28 19:08:55 [akrotiri/nRQLu4lSAJ-000303] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3753B in 667.114542ms -{"time":"2025-07-28T19:08:56.005092+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":80001029625,"total_messages":357547,"total_bytes":258343631,"total_mb":"246.38","messages_per_sec":"3119.43","bits_per_sec":"17999429","mbps":"18.00","total_dropped":0} -{"time":"2025-07-28T19:08:56.005113+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":103823,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:08:56.005117+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":48134,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:08:56.005121+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":148552,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:08:56.005124+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":1920,"min_time":0,"max_time":20882459} -2025/07/28 19:08:56 [akrotiri/nRQLu4lSAJ-000304] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3753B in 660.096375ms -2025/07/28 19:08:56 [akrotiri/nRQLu4lSAJ-000305] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3753B in 690.7415ms -2025/07/28 19:08:57 [akrotiri/nRQLu4lSAJ-000306] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3753B in 679.979ms -2025/07/28 19:08:57 [akrotiri/nRQLu4lSAJ-000307] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3753B in 589.36475ms -2025/07/28 19:08:58 [akrotiri/nRQLu4lSAJ-000308] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3753B in 577.09975ms -2025/07/28 19:08:58 [akrotiri/nRQLu4lSAJ-000309] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3753B in 583.525917ms -2025/07/28 19:08:59 [akrotiri/nRQLu4lSAJ-000310] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 576.991042ms -2025/07/28 19:08:59 [akrotiri/nRQLu4lSAJ-000311] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 594.249ms -2025/07/28 19:09:00 [akrotiri/nRQLu4lSAJ-000312] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 612.268ms -2025/07/28 19:09:00 [akrotiri/nRQLu4lSAJ-000313] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 593.98125ms -2025/07/28 19:09:01 [akrotiri/nRQLu4lSAJ-000314] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 614.519959ms -2025/07/28 19:09:01 [akrotiri/nRQLu4lSAJ-000315] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 607.626917ms -2025/07/28 19:09:02 [akrotiri/nRQLu4lSAJ-000316] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 600.766875ms -2025/07/28 19:09:02 [akrotiri/nRQLu4lSAJ-000317] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 599.535458ms -2025/07/28 19:09:03 [akrotiri/nRQLu4lSAJ-000318] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 582.233042ms -2025/07/28 19:09:03 [akrotiri/nRQLu4lSAJ-000319] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 582.717875ms -2025/07/28 19:09:04 [akrotiri/nRQLu4lSAJ-000320] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3755B in 586.526209ms -2025/07/28 19:09:04 [akrotiri/nRQLu4lSAJ-000321] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3756B in 574.299083ms -2025/07/28 19:09:05 [akrotiri/nRQLu4lSAJ-000322] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3756B in 571.166083ms -2025/07/28 19:09:05 [akrotiri/nRQLu4lSAJ-000323] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3756B in 575.013625ms -{"time":"2025-07-28T19:09:06.005175+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":90001031000,"total_messages":357547,"total_bytes":258343631,"total_mb":"246.38","messages_per_sec":"2640.54","bits_per_sec":"15236187","mbps":"15.24","total_dropped":0} -{"time":"2025-07-28T19:09:06.005194+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":103823,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:09:06.005199+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":48134,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:09:06.005203+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":148552,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:09:06.005206+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":1920,"min_time":0,"max_time":20882459} -2025/07/28 19:09:06 [akrotiri/nRQLu4lSAJ-000324] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3756B in 592.732292ms -2025/07/28 19:09:07 [akrotiri/nRQLu4lSAJ-000325] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3756B in 622.906708ms -2025/07/28 19:09:07 [akrotiri/nRQLu4lSAJ-000326] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3756B in 610.983083ms -2025/07/28 19:09:07 [akrotiri/nRQLu4lSAJ-000327] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3756B in 582.094333ms -2025/07/28 19:09:08 [akrotiri/nRQLu4lSAJ-000328] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3756B in 576.862875ms -2025/07/28 19:09:08 [akrotiri/nRQLu4lSAJ-000329] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3756B in 582.205209ms -2025/07/28 19:09:09 [akrotiri/nRQLu4lSAJ-000330] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3756B in 581.30425ms -2025/07/28 19:09:09 [akrotiri/nRQLu4lSAJ-000331] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 575.841083ms -2025/07/28 19:09:10 [akrotiri/nRQLu4lSAJ-000332] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 615.411584ms -2025/07/28 19:09:10 [akrotiri/nRQLu4lSAJ-000333] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 591.091375ms -2025/07/28 19:09:11 [akrotiri/nRQLu4lSAJ-000334] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 576.625791ms -2025/07/28 19:09:11 [akrotiri/nRQLu4lSAJ-000335] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 594.505666ms -2025/07/28 19:09:12 [akrotiri/nRQLu4lSAJ-000336] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 583.306917ms -2025/07/28 19:09:12 [akrotiri/nRQLu4lSAJ-000337] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 582.966709ms -2025/07/28 19:09:13 [akrotiri/nRQLu4lSAJ-000338] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3754B in 598.679292ms -2025/07/28 19:09:13 [akrotiri/nRQLu4lSAJ-000339] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 581.196667ms -2025/07/28 19:09:14 [akrotiri/nRQLu4lSAJ-000340] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 578.802541ms -2025/07/28 19:09:14 [akrotiri/nRQLu4lSAJ-000341] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3756B in 578.907333ms -2025/07/28 19:09:15 [akrotiri/nRQLu4lSAJ-000342] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3756B in 577.879417ms -2025/07/28 19:09:15 [akrotiri/nRQLu4lSAJ-000343] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3756B in 575.945417ms -{"time":"2025-07-28T19:09:16.005249+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":100001037208,"total_messages":357547,"total_bytes":258343631,"total_mb":"246.38","messages_per_sec":"2235.17","bits_per_sec":"12897154","mbps":"12.90","total_dropped":0} -{"time":"2025-07-28T19:09:16.005286+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":103823,"min_time":0,"max_time":2800460167} -{"time":"2025-07-28T19:09:16.005293+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":48134,"min_time":0,"max_time":2023266000} -{"time":"2025-07-28T19:09:16.005297+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":148552,"min_time":0,"max_time":3084562375} -{"time":"2025-07-28T19:09:16.0053+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":353961,"dropped":0,"avg_time":1920,"min_time":0,"max_time":20882459} -2025/07/28 19:09:16 [akrotiri/nRQLu4lSAJ-000344] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3756B in 589.83175ms -2025/07/28 19:09:16 [akrotiri/nRQLu4lSAJ-000345] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3756B in 590.129042ms -2025/07/28 19:09:17 [akrotiri/nRQLu4lSAJ-000346] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3756B in 572.234916ms -2025/07/28 19:09:17 [akrotiri/nRQLu4lSAJ-000347] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3756B in 603.296084ms -2025/07/28 19:09:18 [akrotiri/nRQLu4lSAJ-000348] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3756B in 580.68025ms -2025/07/28 19:09:18 [akrotiri/nRQLu4lSAJ-000349] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3756B in 578.744958ms -2025/07/28 19:09:19 [akrotiri/nRQLu4lSAJ-000350] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59432 - 200 3756B in 592.029ms -2025/07/28 19:09:19 [akrotiri/nRQLu4lSAJ-000351] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59431 - 200 3754B in 594.455667ms -2025/07/28 19:09:20 [akrotiri/nRQLu4lSAJ-000352] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:59430 - 200 3754B in 593.041041ms -Failed to parse JSON: unexpected end of JSON input -Raw line: {"type":"ris_message", -panic: JSON parse error: unexpected end of JSON input +{"time":"2025-07-28T21:50:38.45024+02:00","level":"INFO","msg":"Starting RouteWatch","source":"app.go:64","func":"routewatch.(*RouteWatch).Run"} +{"time":"2025-07-28T21:50:38.450667+02:00","level":"INFO","msg":"Using batched database handlers for improved performance","source":"app.go:76","func":"routewatch.(*RouteWatch).Run"} +{"time":"2025-07-28T21:50:38.452065+02:00","level":"INFO","msg":"Starting HTTP server","source":"server.go:52","func":"server.(*Server).Start","port":"8080"} +{"time":"2025-07-28T21:50:40.864603+02:00","level":"INFO","msg":"Connected to RIS Live stream","source":"streamer.go:413","func":"streamer.(*Streamer).stream"} +{"time":"2025-07-28T21:50:41.465578+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:41.465632+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:41.618953+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:42.269563+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:42.806895+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1341} +{"time":"2025-07-28T21:50:42.806906+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:42.806912+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:42.984495+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":177} +{"time":"2025-07-28T21:50:42.984557+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:42.985804+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:42.987279+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:42.987289+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":2} +{"time":"2025-07-28T21:50:42.988171+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":0} +{"time":"2025-07-28T21:50:42.988178+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":6570,"unique_prefixes":4613,"success":4613,"duration_ms":1535} +{"time":"2025-07-28T21:50:42.988196+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:43.002209+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:43.020824+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":32} +{"time":"2025-07-28T21:50:43.020832+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:43.021961+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:43.139182+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"195.208.209.174","peer_asn":"25227"} +{"time":"2025-07-28T21:50:43.404573+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:43.404569+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":383} +{"time":"2025-07-28T21:50:43.404602+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:43.431436+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":26} +{"time":"2025-07-28T21:50:43.431449+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:43.432319+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":0} +{"time":"2025-07-28T21:50:43.432327+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20009,"unique_prefixes":13792,"success":13792,"duration_ms":442} +{"time":"2025-07-28T21:50:43.547638+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:43.547651+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:43.551182+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":3} +{"time":"2025-07-28T21:50:43.568792+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:43.568805+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:43.60011+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":31} +{"time":"2025-07-28T21:50:44.032495+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:44.03252+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:44.047022+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:44.076882+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":44} +{"time":"2025-07-28T21:50:44.076896+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:44.540408+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:44.555266+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:45.023045+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:45.023041+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":946} +{"time":"2025-07-28T21:50:45.023076+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:45.025192+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":2} +{"time":"2025-07-28T21:50:45.025213+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:45.060157+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":34} +{"time":"2025-07-28T21:50:45.06017+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:45.061077+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":0} +{"time":"2025-07-28T21:50:45.061086+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":13846,"success":13846,"duration_ms":1031} +{"time":"2025-07-28T21:50:45.509591+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:45.509607+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:45.512306+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:45.541449+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":31} +{"time":"2025-07-28T21:50:45.541465+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:46.056062+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2001:7f8::8b0e:0:1","peer_asn":"35598"} +{"time":"2025-07-28T21:50:46.074205+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"2001:7f8::8b0e:0:1","peer_asn":"35598"} +{"time":"2025-07-28T21:50:46.120038+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":578} +{"time":"2025-07-28T21:50:46.120055+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:46.120059+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:46.121852+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":1} +{"time":"2025-07-28T21:50:46.121863+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":14100,"success":14100,"duration_ms":627} +{"time":"2025-07-28T21:50:46.271113+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:46.271131+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:46.27565+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":4} +{"time":"2025-07-28T21:50:46.510452+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:46.510482+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:46.512836+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2001:7f8:4::73ab:1","peer_asn":"29611"} +{"time":"2025-07-28T21:50:46.553754+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":43} +{"time":"2025-07-28T21:50:46.995016+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"193.239.118.249","peer_asn":"41255"} +{"time":"2025-07-28T21:50:47.004846+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:47.004858+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:47.035279+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:47.052268+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":47} +{"time":"2025-07-28T21:50:47.052289+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:47.7089+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":656} +{"time":"2025-07-28T21:50:47.708918+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:47.708922+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:47.715571+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":6} +{"time":"2025-07-28T21:50:47.715585+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20140,"unique_prefixes":13131,"success":13131,"duration_ms":698} +2025/07/28 21:50:47 [akrotiri/30nD3SR8IB-000001] "GET http://127.0.0.1:8080/status HTTP/1.1" from 127.0.0.1:53038 - 200 14619B in 568.167µs +{"time":"2025-07-28T21:50:47.960531+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:47.960556+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:47.973331+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:50:48 [akrotiri/30nD3SR8IB-000003] "GET http://127.0.0.1:8080/favicon.ico HTTP/1.1" from 127.0.0.1:53039 - 404 19B in 18.667µs +{"time":"2025-07-28T21:50:48.399244+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:48.423552+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:48.423542+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":462} +{"time":"2025-07-28T21:50:48.514245+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":90} +{"time":"2025-07-28T21:50:48.51428+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:48.866316+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:48.968448+02:00","level":"WARN","msg":"Failed to get live route counts","source":"handlers.go:272","func":"server.(*Server).setupRoutes.func1.(*Server).handleStats.1","error":"failed to count IPv4 routes: context deadline exceeded"} +2025/07/28 21:50:48 [akrotiri/30nD3SR8IB-000002] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3734B in 1.066879583s +2025/07/28 21:50:49 [akrotiri/30nD3SR8IB-000004] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53039 - 200 3745B in 792.52375ms +2025/07/28 21:50:49 [akrotiri/30nD3SR8IB-000005] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3747B in 734.394583ms +{"time":"2025-07-28T21:50:49.881522+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:50:50 [akrotiri/30nD3SR8IB-000006] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3751B in 641.789458ms +2025/07/28 21:50:50 [akrotiri/30nD3SR8IB-000007] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3751B in 613.914208ms +{"time":"2025-07-28T21:50:50.691505+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":2177} +{"time":"2025-07-28T21:50:50.691519+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:50.691525+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:50.729532+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":38} +{"time":"2025-07-28T21:50:50.729542+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:50.730653+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:50.732685+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":3} +{"time":"2025-07-28T21:50:50.732696+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:50.73823+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":5} +{"time":"2025-07-28T21:50:50.738239+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":13834,"success":13834,"duration_ms":2350} +{"time":"2025-07-28T21:50:50.738261+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:50.748161+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:50.865343+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":10000632916,"total_messages":65385,"total_bytes":46137107,"total_mb":"44.00","messages_per_sec":"782.02","bits_per_sec":"4418976","mbps":"4.42","total_dropped":0} +{"time":"2025-07-28T21:50:50.865365+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":4603,"queue_cap":100000,"processed":60312,"dropped":0,"avg_time":81846,"min_time":0,"max_time":1864217917} +{"time":"2025-07-28T21:50:50.865371+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":64916,"dropped":0,"avg_time":39144,"min_time":0,"max_time":852763709} +{"time":"2025-07-28T21:50:50.865375+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":4504,"queue_cap":100000,"processed":60411,"dropped":0,"avg_time":108848,"min_time":0,"max_time":2350061333} +{"time":"2025-07-28T21:50:50.865378+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":64916,"dropped":0,"avg_time":1248,"min_time":0,"max_time":710292} +{"time":"2025-07-28T21:50:50.946316+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:50.946315+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":208} +{"time":"2025-07-28T21:50:50.947638+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:50:51 [akrotiri/30nD3SR8IB-000008] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3748B in 619.578209ms +2025/07/28 21:50:51 [akrotiri/30nD3SR8IB-000009] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3749B in 628.542833ms +{"time":"2025-07-28T21:50:52.248863+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:50:52 [akrotiri/30nD3SR8IB-000010] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3751B in 627.860125ms +2025/07/28 21:50:52 [akrotiri/30nD3SR8IB-000011] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3753B in 638.171834ms +2025/07/28 21:50:53 [akrotiri/30nD3SR8IB-000012] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3755B in 617.698333ms +{"time":"2025-07-28T21:50:53.107708+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":2161} +{"time":"2025-07-28T21:50:53.10773+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:53.107718+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:53.268812+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":161} +{"time":"2025-07-28T21:50:53.268821+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:53.270021+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:53.272044+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":3} +{"time":"2025-07-28T21:50:53.272056+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:53.273964+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":1} +{"time":"2025-07-28T21:50:53.273976+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:53.273977+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":11898,"success":11898,"duration_ms":2534} +{"time":"2025-07-28T21:50:53.282068+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:53.326349+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":52} +{"time":"2025-07-28T21:50:53.326362+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:53.327539+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:50:53 [akrotiri/30nD3SR8IB-000013] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3751B in 618.802791ms +{"time":"2025-07-28T21:50:54.026724+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:50:54 [akrotiri/30nD3SR8IB-000014] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3753B in 624.747875ms +{"time":"2025-07-28T21:50:54.225736+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2001:7f8:1::a503:5598:1","peer_asn":"35598"} +{"time":"2025-07-28T21:50:54.225782+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"2001:7f8:1::a503:5598:1","peer_asn":"35598"} +{"time":"2025-07-28T21:50:54.399447+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:54.399443+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1073} +{"time":"2025-07-28T21:50:54.399467+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:54.557955+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":158} +{"time":"2025-07-28T21:50:54.557965+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:54.559239+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:54.564278+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":6} +{"time":"2025-07-28T21:50:54.564301+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:54.577048+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":12} +{"time":"2025-07-28T21:50:54.577066+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":8410,"success":8410,"duration_ms":1301} +{"time":"2025-07-28T21:50:54.577069+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:54.590179+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:50:54 [akrotiri/30nD3SR8IB-000015] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3751B in 631.324334ms +{"time":"2025-07-28T21:50:54.627827+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":50} +{"time":"2025-07-28T21:50:54.627962+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:54.750446+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"2602:fa91:0:cccc::20","peer_asn":"53427"} +2025/07/28 21:50:55 [akrotiri/30nD3SR8IB-000016] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3748B in 626.068333ms +2025/07/28 21:50:55 [akrotiri/30nD3SR8IB-000017] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3748B in 616.349625ms +{"time":"2025-07-28T21:50:55.734855+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:50:56 [akrotiri/30nD3SR8IB-000018] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3751B in 616.804292ms +{"time":"2025-07-28T21:50:56.123872+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2001:7f8:1::a503:1042:1","peer_asn":"31042"} +{"time":"2025-07-28T21:50:56.411242+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:56.411241+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1783} +{"time":"2025-07-28T21:50:56.41128+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:56.510364+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:50:56 [akrotiri/30nD3SR8IB-000019] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3754B in 623.249625ms +{"time":"2025-07-28T21:50:56.587025+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":175} +{"time":"2025-07-28T21:50:56.587039+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:56.593485+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":6} +{"time":"2025-07-28T21:50:56.593501+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":15423,"success":15423,"duration_ms":2015} +{"time":"2025-07-28T21:50:56.593504+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:56.59644+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":2} +{"time":"2025-07-28T21:50:56.601254+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:56.601262+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:56.783977+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:50:57 [akrotiri/30nD3SR8IB-000020] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3751B in 637.601333ms +2025/07/28 21:50:57 [akrotiri/30nD3SR8IB-000021] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3752B in 627.214125ms +{"time":"2025-07-28T21:50:57.692448+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:57.692464+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1091} +{"time":"2025-07-28T21:50:57.692551+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:57.712845+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:57.741897+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":49} +{"time":"2025-07-28T21:50:57.741909+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:57.743049+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:57.966089+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":224} +{"time":"2025-07-28T21:50:57.966107+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20232,"unique_prefixes":11076,"success":11076,"duration_ms":1371} +{"time":"2025-07-28T21:50:57.966099+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:57.973993+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:57.989697+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":23} +{"time":"2025-07-28T21:50:57.989706+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:58.033262+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":43} +{"time":"2025-07-28T21:50:58.033275+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:58.034398+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:50:58 [akrotiri/30nD3SR8IB-000022] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3755B in 624.169834ms +2025/07/28 21:50:58 [akrotiri/30nD3SR8IB-000023] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3757B in 625.02275ms +{"time":"2025-07-28T21:50:58.90679+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:58.906784+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":873} +{"time":"2025-07-28T21:50:58.906826+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:59.051739+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":144} +{"time":"2025-07-28T21:50:59.051756+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:50:59.052963+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:59.055182+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":3} +{"time":"2025-07-28T21:50:59.055194+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:50:59.055195+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20008,"unique_prefixes":6722,"success":6722,"duration_ms":1087} +{"time":"2025-07-28T21:50:59.065345+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:50:59 [akrotiri/30nD3SR8IB-000024] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3756B in 637.030541ms +{"time":"2025-07-28T21:50:59.132119+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":76} +{"time":"2025-07-28T21:50:59.132133+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:50:59.239911+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:50:59.323893+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2001:b18:10::3","peer_asn":"47787"} +{"time":"2025-07-28T21:50:59.343829+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2001:12f8::221:238","peer_asn":"262317"} +{"time":"2025-07-28T21:50:59.588715+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:50:59 [akrotiri/30nD3SR8IB-000025] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3758B in 631.392125ms +2025/07/28 21:51:00 [akrotiri/30nD3SR8IB-000026] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3760B in 618.101ms +{"time":"2025-07-28T21:51:00.41621+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:00.416207+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1284} +{"time":"2025-07-28T21:51:00.416232+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:00.515983+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"102.67.56.1","peer_asn":"328474"} +{"time":"2025-07-28T21:51:00.558418+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:00.558412+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":142} +2025/07/28 21:51:00 [akrotiri/30nD3SR8IB-000027] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3758B in 618.231625ms +{"time":"2025-07-28T21:51:00.595659+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:00.595654+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":37} +{"time":"2025-07-28T21:51:00.596979+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:00.597487+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":1} +{"time":"2025-07-28T21:51:00.597497+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":10676,"success":10676,"duration_ms":1541} +{"time":"2025-07-28T21:51:00.597523+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:00.605359+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:00.662543+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":65} +{"time":"2025-07-28T21:51:00.662556+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:00.864779+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":20000009208,"total_messages":119678,"total_bytes":85146047,"total_mb":"81.20","messages_per_sec":"1461.82","bits_per_sec":"8310642","mbps":"8.31","total_dropped":0} +{"time":"2025-07-28T21:51:00.864797+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":1,"queue_cap":100000,"processed":118730,"dropped":0,"avg_time":110423,"min_time":0,"max_time":2321702334} +{"time":"2025-07-28T21:51:00.864803+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":1,"queue_cap":100000,"processed":118731,"dropped":0,"avg_time":48825,"min_time":0,"max_time":1319057792} +{"time":"2025-07-28T21:51:00.864807+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":4443,"queue_cap":100000,"processed":114289,"dropped":0,"avg_time":143777,"min_time":0,"max_time":2534549791} +{"time":"2025-07-28T21:51:00.86481+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":118733,"dropped":0,"avg_time":1279,"min_time":0,"max_time":710292} +{"time":"2025-07-28T21:51:01.092445+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:01 [akrotiri/30nD3SR8IB-000028] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3756B in 633.184208ms +{"time":"2025-07-28T21:51:01.213613+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:01.546142+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":883} +{"time":"2025-07-28T21:51:01.54616+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:01.546179+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:01 [akrotiri/30nD3SR8IB-000029] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3761B in 618.001125ms +{"time":"2025-07-28T21:51:01.633654+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":87} +{"time":"2025-07-28T21:51:01.633666+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:02.189004+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:02.189003+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":555} +{"time":"2025-07-28T21:51:02.190259+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:02.211359+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":22} +{"time":"2025-07-28T21:51:02.211368+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:02.211373+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20008,"unique_prefixes":7752,"success":7752,"duration_ms":1612} +{"time":"2025-07-28T21:51:02.226102+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:02.248005+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":36} +{"time":"2025-07-28T21:51:02.248014+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:02 [akrotiri/30nD3SR8IB-000030] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3753B in 626.604208ms +2025/07/28 21:51:02 [akrotiri/30nD3SR8IB-000031] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3754B in 622.497625ms +{"time":"2025-07-28T21:51:02.811872+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:03 [akrotiri/30nD3SR8IB-000032] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3755B in 631.966292ms +{"time":"2025-07-28T21:51:03.557257+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:03 [akrotiri/30nD3SR8IB-000033] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3759B in 613.845417ms +{"time":"2025-07-28T21:51:03.723789+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1475} +{"time":"2025-07-28T21:51:03.723799+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:03.723806+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:03.864015+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:03.864009+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":140} +{"time":"2025-07-28T21:51:03.917027+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":53} +{"time":"2025-07-28T21:51:03.917031+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:03.929198+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":12} +{"time":"2025-07-28T21:51:03.929213+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20002,"unique_prefixes":13651,"success":13651,"duration_ms":1716} +{"time":"2025-07-28T21:51:03.938179+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:03.93819+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:04 [akrotiri/30nD3SR8IB-000034] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3753B in 639.362208ms +{"time":"2025-07-28T21:51:04.131148+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:04.555951+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:04 [akrotiri/30nD3SR8IB-000035] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3759B in 638.81875ms +{"time":"2025-07-28T21:51:04.921414+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:04.921413+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":983} +{"time":"2025-07-28T21:51:04.92145+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:04.957973+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":36} +{"time":"2025-07-28T21:51:04.957986+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:04.959122+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:04.960719+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":2} +{"time":"2025-07-28T21:51:04.960738+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:04.970682+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":9} +{"time":"2025-07-28T21:51:04.970695+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:04.970696+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20002,"unique_prefixes":7283,"success":7283,"duration_ms":1040} +{"time":"2025-07-28T21:51:04.978579+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:05.02217+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":51} +{"time":"2025-07-28T21:51:05.022184+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:05.090192+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2405:a640::50","peer_asn":"38855"} +{"time":"2025-07-28T21:51:05.091616+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:05 [akrotiri/30nD3SR8IB-000036] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3758B in 639.612916ms +2025/07/28 21:51:05 [akrotiri/30nD3SR8IB-000037] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3758B in 637.103375ms +{"time":"2025-07-28T21:51:06.101119+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1078} +{"time":"2025-07-28T21:51:06.101141+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:06.101136+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:06 [akrotiri/30nD3SR8IB-000038] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3758B in 625.788875ms +{"time":"2025-07-28T21:51:06.251241+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":150} +{"time":"2025-07-28T21:51:06.251247+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:06.256227+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":4} +{"time":"2025-07-28T21:51:06.256239+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20005,"unique_prefixes":9108,"success":9108,"duration_ms":1284} +{"time":"2025-07-28T21:51:06.318241+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:06.318255+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:06.322787+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":4} +{"time":"2025-07-28T21:51:06.478474+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:06.478487+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:06.517025+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":38} +2025/07/28 21:51:06 [akrotiri/30nD3SR8IB-000039] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3752B in 602.419959ms +{"time":"2025-07-28T21:51:06.903079+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:06.903092+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:06.911467+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"198.32.160.113","peer_asn":"15547"} +{"time":"2025-07-28T21:51:07.272544+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:07 [akrotiri/30nD3SR8IB-000040] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3757B in 651.981167ms +2025/07/28 21:51:07 [akrotiri/30nD3SR8IB-000041] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3758B in 628.057208ms +{"time":"2025-07-28T21:51:07.826706+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":923} +{"time":"2025-07-28T21:51:07.82671+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:07.826722+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:07.969977+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":143} +{"time":"2025-07-28T21:51:07.969984+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:07.973147+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":3} +{"time":"2025-07-28T21:51:07.973161+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":6864,"success":6864,"duration_ms":1075} +2025/07/28 21:51:08 [akrotiri/30nD3SR8IB-000042] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3753B in 607.124792ms +{"time":"2025-07-28T21:51:08.243201+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:08.243219+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:08.452495+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:08 [akrotiri/30nD3SR8IB-000043] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3759B in 603.0935ms +{"time":"2025-07-28T21:51:08.726635+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:08.821926+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"80.81.194.190","peer_asn":"31042"} +2025/07/28 21:51:09 [akrotiri/30nD3SR8IB-000044] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3762B in 623.855917ms +2025/07/28 21:51:09 [akrotiri/30nD3SR8IB-000045] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3762B in 620.909ms +{"time":"2025-07-28T21:51:09.797027+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1553} +{"time":"2025-07-28T21:51:09.797048+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:09.797031+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:09.800327+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":3} +{"time":"2025-07-28T21:51:09.800335+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:09.951301+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:09.951301+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":150} +{"time":"2025-07-28T21:51:09.954209+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":2} +{"time":"2025-07-28T21:51:09.95422+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20530,"unique_prefixes":15605,"success":15605,"duration_ms":1723} +{"time":"2025-07-28T21:51:10.076294+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:10.076309+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:10.110525+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":34} +2025/07/28 21:51:10 [akrotiri/30nD3SR8IB-000046] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3753B in 611.85ms +{"time":"2025-07-28T21:51:10.573158+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:10.573173+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:10 [akrotiri/30nD3SR8IB-000047] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3755B in 573.764ms +{"time":"2025-07-28T21:51:10.757536+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:10.86553+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":30000692458,"total_messages":172032,"total_bytes":122414608,"total_mb":"116.74","messages_per_sec":"2112.06","bits_per_sec":"11985620","mbps":"11.99","total_dropped":0} +{"time":"2025-07-28T21:51:10.865548+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":0,"queue_cap":100000,"processed":170606,"dropped":0,"avg_time":108802,"min_time":0,"max_time":2321702334} +{"time":"2025-07-28T21:51:10.865554+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":629,"queue_cap":100000,"processed":169976,"dropped":0,"avg_time":53522,"min_time":0,"max_time":1319057792} +{"time":"2025-07-28T21:51:10.865557+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":2021,"queue_cap":100000,"processed":168584,"dropped":0,"avg_time":147640,"min_time":0,"max_time":2534549791} +{"time":"2025-07-28T21:51:10.86556+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":170606,"dropped":0,"avg_time":1293,"min_time":0,"max_time":710292} +{"time":"2025-07-28T21:51:10.897565+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:11 [akrotiri/30nD3SR8IB-000048] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3761B in 632.375208ms +{"time":"2025-07-28T21:51:11.46779+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:11.46779+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":894} +{"time":"2025-07-28T21:51:11.467822+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:11.540511+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":72} +{"time":"2025-07-28T21:51:11.540529+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:11.582065+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":41} +{"time":"2025-07-28T21:51:11.582076+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:11.597803+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":15} +{"time":"2025-07-28T21:51:11.59782+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":9066,"success":9066,"duration_ms":1031} +2025/07/28 21:51:11 [akrotiri/30nD3SR8IB-000049] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3752B in 637.920667ms +2025/07/28 21:51:12 [akrotiri/30nD3SR8IB-000050] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3753B in 591.071916ms +{"time":"2025-07-28T21:51:12.172586+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:12.1726+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:12.220503+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":47} +{"time":"2025-07-28T21:51:12.326587+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:12.326602+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:12 [akrotiri/30nD3SR8IB-000051] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3756B in 673.327541ms +{"time":"2025-07-28T21:51:12.790591+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:12.914022+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:13 [akrotiri/30nD3SR8IB-000052] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3761B in 626.499167ms +{"time":"2025-07-28T21:51:13.171532+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2001:de8:4::1:8403:1","peer_asn":"18403"} +{"time":"2025-07-28T21:51:13.519038+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"103.200.113.1","peer_asn":"131477"} +2025/07/28 21:51:13 [akrotiri/30nD3SR8IB-000053] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3763B in 626.357042ms +{"time":"2025-07-28T21:51:13.69681+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1370} +{"time":"2025-07-28T21:51:13.696829+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:13.696812+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:13.793945+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":97} +{"time":"2025-07-28T21:51:13.79395+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:13.83742+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":43} +{"time":"2025-07-28T21:51:13.83751+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:13.839733+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:13.839807+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":2} +{"time":"2025-07-28T21:51:13.839816+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20010,"unique_prefixes":12335,"success":12335,"duration_ms":1521} +{"time":"2025-07-28T21:51:13.839831+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:13.853689+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:13.896352+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":56} +{"time":"2025-07-28T21:51:13.896363+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:14.123705+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:14 [akrotiri/30nD3SR8IB-000054] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3759B in 634.371375ms +{"time":"2025-07-28T21:51:14.349067+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:14 [akrotiri/30nD3SR8IB-000055] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3763B in 651.624916ms +{"time":"2025-07-28T21:51:15.026066+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:15.026063+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1129} +{"time":"2025-07-28T21:51:15.026093+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:15.028663+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":2} +{"time":"2025-07-28T21:51:15.028678+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:15.108357+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2001:7f8::7942:0:1","peer_asn":"31042"} +{"time":"2025-07-28T21:51:15.178563+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":149} +{"time":"2025-07-28T21:51:15.17864+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +2025/07/28 21:51:15 [akrotiri/30nD3SR8IB-000056] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3761B in 644.024959ms +{"time":"2025-07-28T21:51:15.180289+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:15.18386+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":5} +{"time":"2025-07-28T21:51:15.183877+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":13270,"success":13270,"duration_ms":1341} +{"time":"2025-07-28T21:51:15.183892+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:15.202592+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:15.257785+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":73} +{"time":"2025-07-28T21:51:15.257797+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:15.466632+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:15.676386+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:15 [akrotiri/30nD3SR8IB-000057] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3763B in 704.866042ms +{"time":"2025-07-28T21:51:15.978515+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"2001:43f8:6d0::60","peer_asn":"37468"} +2025/07/28 21:51:16 [akrotiri/30nD3SR8IB-000058] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3763B in 654.067375ms +{"time":"2025-07-28T21:51:16.449576+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:16.449573+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1191} +{"time":"2025-07-28T21:51:16.4496+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:16.451785+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":2} +{"time":"2025-07-28T21:51:16.451799+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:16.534162+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":82} +{"time":"2025-07-28T21:51:16.534173+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:16.535515+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:16.535784+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":1} +{"time":"2025-07-28T21:51:16.535794+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":14920,"success":14920,"duration_ms":1349} +{"time":"2025-07-28T21:51:16.535808+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:16.546908+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:16.666756+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":130} +{"time":"2025-07-28T21:51:16.666778+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:16 [akrotiri/30nD3SR8IB-000059] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3756B in 660.967375ms +{"time":"2025-07-28T21:51:16.766787+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:16.98804+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:17 [akrotiri/30nD3SR8IB-000060] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3763B in 650.892709ms +2025/07/28 21:51:17 [akrotiri/30nD3SR8IB-000061] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3763B in 681.18725ms +{"time":"2025-07-28T21:51:18.025218+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1358} +{"time":"2025-07-28T21:51:18.025229+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:18.025235+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:18.077176+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":51} +{"time":"2025-07-28T21:51:18.077255+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:18.132634+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:18.167781+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"196.60.8.60","peer_asn":"37468"} +{"time":"2025-07-28T21:51:18.178431+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:18.178421+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":101} +{"time":"2025-07-28T21:51:18.180502+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:18.182739+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":4} +{"time":"2025-07-28T21:51:18.182752+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20016,"unique_prefixes":13482,"success":13482,"duration_ms":1645} +{"time":"2025-07-28T21:51:18.182768+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:18.187403+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":4} +{"time":"2025-07-28T21:51:18.187449+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:18.19807+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:18 [akrotiri/30nD3SR8IB-000062] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3760B in 711.599333ms +{"time":"2025-07-28T21:51:18.269292+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":81} +{"time":"2025-07-28T21:51:18.269302+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:18.292057+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:18 [akrotiri/30nD3SR8IB-000063] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3759B in 651.6655ms +2025/07/28 21:51:19 [akrotiri/30nD3SR8IB-000064] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3759B in 666.910125ms +{"time":"2025-07-28T21:51:19.272264+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1002} +{"time":"2025-07-28T21:51:19.272283+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:19.272271+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:19.335323+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":63} +{"time":"2025-07-28T21:51:19.335333+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:19.335921+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":0} +{"time":"2025-07-28T21:51:19.33593+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":12580,"success":12580,"duration_ms":1150} +{"time":"2025-07-28T21:51:19.416627+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:19.416639+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:19.522048+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:19 [akrotiri/30nD3SR8IB-000065] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3759B in 645.597083ms +{"time":"2025-07-28T21:51:20.072309+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:20 [akrotiri/30nD3SR8IB-000068] "GET http://127.0.0.1:8080/prefixlength/128 HTTP/1.1" from 127.0.0.1:53039 - 200 7442B in 4.90725ms +2025/07/28 21:51:20 [akrotiri/30nD3SR8IB-000066] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3761B in 665.881167ms +{"time":"2025-07-28T21:51:20.678037+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1261} +{"time":"2025-07-28T21:51:20.678064+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:20.678072+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +2025/07/28 21:51:20 [akrotiri/30nD3SR8IB-000067] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53040 - 200 3762B in 710.941917ms +{"time":"2025-07-28T21:51:20.839192+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:20.839187+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":161} +{"time":"2025-07-28T21:51:20.840304+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:20.842268+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":3} +{"time":"2025-07-28T21:51:20.842299+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:20.850499+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":8} +{"time":"2025-07-28T21:51:20.850506+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:20.850514+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":13226,"success":13226,"duration_ms":1444} +{"time":"2025-07-28T21:51:20.864905+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":40000006708,"total_messages":236032,"total_bytes":172735765,"total_mb":"164.73","messages_per_sec":"2725.14","bits_per_sec":"16032866","mbps":"16.03","total_dropped":0} +{"time":"2025-07-28T21:51:20.864958+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":2130,"queue_cap":100000,"processed":231998,"dropped":0,"avg_time":111331,"min_time":0,"max_time":2321702334} +{"time":"2025-07-28T21:51:20.864966+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":0,"queue_cap":100000,"processed":234129,"dropped":0,"avg_time":63748,"min_time":0,"max_time":1319057792} +{"time":"2025-07-28T21:51:20.864971+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":0,"queue_cap":100000,"processed":234129,"dropped":0,"avg_time":146853,"min_time":0,"max_time":2534549791} +{"time":"2025-07-28T21:51:20.864974+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":234129,"dropped":0,"avg_time":1300,"min_time":0,"max_time":710292} +{"time":"2025-07-28T21:51:20.888219+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":37} +{"time":"2025-07-28T21:51:21.020569+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:21.020583+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:21 [akrotiri/30nD3SR8IB-000069] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3756B in 788.606459ms +{"time":"2025-07-28T21:51:21.467524+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:21 [akrotiri/30nD3SR8IB-000070] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53039 - 200 3759B in 709.536959ms +{"time":"2025-07-28T21:51:21.913325+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:21.940653+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"80.249.210.89","peer_asn":"31042"} +{"time":"2025-07-28T21:51:22.140197+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1119} +{"time":"2025-07-28T21:51:22.140204+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:22.140213+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:22.257232+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:22.257228+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":117} +{"time":"2025-07-28T21:51:22.262385+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":5} +{"time":"2025-07-28T21:51:22.262394+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:22.266191+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":3} +{"time":"2025-07-28T21:51:22.266205+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20008,"unique_prefixes":8174,"success":8174,"duration_ms":1252} +2025/07/28 21:51:22 [akrotiri/30nD3SR8IB-000071] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3753B in 664.043459ms +{"time":"2025-07-28T21:51:22.366799+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:22.36681+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:22.388038+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"80.81.194.204","peer_asn":"48166"} +{"time":"2025-07-28T21:51:22.722607+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":355} +{"time":"2025-07-28T21:51:22.726984+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:22.726995+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:23 [akrotiri/30nD3SR8IB-000072] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3756B in 636.947083ms +{"time":"2025-07-28T21:51:23.615301+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:23.830351+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1103} +{"time":"2025-07-28T21:51:23.830361+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:23.83037+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:23.864039+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:24.016385+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":186} +{"time":"2025-07-28T21:51:24.016393+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:24.021235+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":4} +{"time":"2025-07-28T21:51:24.02125+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20002,"unique_prefixes":8181,"success":8181,"duration_ms":1301} +{"time":"2025-07-28T21:51:24.021254+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:24.024803+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":3} +{"time":"2025-07-28T21:51:24.128354+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:24.128368+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:24.175394+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:24 [akrotiri/30nD3SR8IB-000073] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3758B in 634.693ms +{"time":"2025-07-28T21:51:26.075638+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:26.270853+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:26.270848+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":2142} +{"time":"2025-07-28T21:51:26.270954+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:26.321714+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":50} +{"time":"2025-07-28T21:51:26.321725+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:26.322866+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:26.324779+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":3} +{"time":"2025-07-28T21:51:26.324786+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:26.339885+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":15} +{"time":"2025-07-28T21:51:26.339901+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:26.339903+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":11756,"success":11756,"duration_ms":2220} +{"time":"2025-07-28T21:51:26.356273+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:26.378206+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":38} +{"time":"2025-07-28T21:51:26.378218+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:26 [akrotiri/30nD3SR8IB-000074] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3753B in 679.240792ms +{"time":"2025-07-28T21:51:26.852184+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:27.439842+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"186.211.128.34","peer_asn":"14840"} +{"time":"2025-07-28T21:51:27.443531+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"186.211.128.34","peer_asn":"14840"} +2025/07/28 21:51:27 [akrotiri/30nD3SR8IB-000075] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3760B in 643.77825ms +{"time":"2025-07-28T21:51:27.881893+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1503} +{"time":"2025-07-28T21:51:27.881911+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:27.881945+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:27.926197+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":44} +{"time":"2025-07-28T21:51:27.926206+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:27.942183+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":15} +{"time":"2025-07-28T21:51:27.942198+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20003,"unique_prefixes":8922,"success":8922,"duration_ms":1592} +2025/07/28 21:51:28 [akrotiri/30nD3SR8IB-000076] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3755B in 585.102458ms +{"time":"2025-07-28T21:51:28.452628+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:28.452641+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:28.461617+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":8} +{"time":"2025-07-28T21:51:28.752783+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:28.752797+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:28.795095+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":42} +{"time":"2025-07-28T21:51:28.809532+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"80.81.194.92","peer_asn":"57111"} +{"time":"2025-07-28T21:51:29.361391+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:29.361406+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:29.926458+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:30 [akrotiri/30nD3SR8IB-000077] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53039 - 408 135B in 2.001063708s +{"time":"2025-07-28T21:51:30.40918+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1047} +{"time":"2025-07-28T21:51:30.409199+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:30.409226+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:30.483647+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":74} +{"time":"2025-07-28T21:51:30.483656+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:30.488568+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":4} +{"time":"2025-07-28T21:51:30.488581+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":5971,"success":5971,"duration_ms":1131} +2025/07/28 21:51:30 [akrotiri/30nD3SR8IB-000078] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53038 - 200 3754B in 666.395834ms +2025/07/28 21:51:30 [akrotiri/30nD3SR8IB-000079] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53040 - 408 134B in 489.175584ms +{"time":"2025-07-28T21:51:30.82286+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:30.822875+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:30.865122+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":50000154375,"total_messages":281088,"total_bytes":204826494,"total_mb":"195.34","messages_per_sec":"3042.36","bits_per_sec":"17833610","mbps":"17.83","total_dropped":0} +{"time":"2025-07-28T21:51:30.865149+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":0,"queue_cap":100000,"processed":278682,"dropped":0,"avg_time":112348,"min_time":0,"max_time":2321702334} +{"time":"2025-07-28T21:51:30.865155+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":772,"queue_cap":100000,"processed":277909,"dropped":0,"avg_time":56485,"min_time":0,"max_time":1319057792} +{"time":"2025-07-28T21:51:30.865159+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":0,"queue_cap":100000,"processed":278682,"dropped":0,"avg_time":150297,"min_time":0,"max_time":2534549791} +{"time":"2025-07-28T21:51:30.865163+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":278682,"dropped":0,"avg_time":1280,"min_time":0,"max_time":710292} +{"time":"2025-07-28T21:51:30.883986+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":61} +{"time":"2025-07-28T21:51:30.953094+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:30.953114+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:30.990865+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":37} +{"time":"2025-07-28T21:51:31.112951+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:31.112967+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:31.875921+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":762} +{"time":"2025-07-28T21:51:31.875939+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:31.875943+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:31.905845+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":29} +{"time":"2025-07-28T21:51:31.905862+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":3255,"success":3255,"duration_ms":797} +{"time":"2025-07-28T21:51:32.16953+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:32.169545+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:32.189292+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"195.208.208.187","peer_asn":"9002"} +{"time":"2025-07-28T21:51:32.242608+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":73} +2025/07/28 21:51:32 [akrotiri/30nD3SR8IB-000080] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53038 - 408 135B in 2.000562542s +{"time":"2025-07-28T21:51:32.813062+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:32.813082+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:32.880546+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:32.970011+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":156} +{"time":"2025-07-28T21:51:32.970075+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:32.998319+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:33.056515+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"217.29.66.232","peer_asn":"54104"} +{"time":"2025-07-28T21:51:33.290657+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"2400:c3e0::2","peer_asn":"142271"} +2025/07/28 21:51:33 [akrotiri/30nD3SR8IB-000083] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53050 - 200 3758B in 883.044208ms +2025/07/28 21:51:34 [akrotiri/30nD3SR8IB-000081] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53048 - 408 135B in 2.001079917s +2025/07/28 21:51:34 [akrotiri/30nD3SR8IB-000084] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53050 - 200 3758B in 727.861958ms +{"time":"2025-07-28T21:51:34.757911+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1787} +{"time":"2025-07-28T21:51:34.757931+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:34.757916+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:34 [akrotiri/30nD3SR8IB-000082] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53049 - 408 135B in 2.001109208s +{"time":"2025-07-28T21:51:34.844155+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":86} +{"time":"2025-07-28T21:51:34.844169+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:34.845445+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:34.851714+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":7} +{"time":"2025-07-28T21:51:34.851738+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20002,"unique_prefixes":6495,"success":6495,"duration_ms":1976} +{"time":"2025-07-28T21:51:34.851724+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:34.923775+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":72} +{"time":"2025-07-28T21:51:35.098+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:35.098019+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:35.103744+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":5} +{"time":"2025-07-28T21:51:35.525434+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:35.525452+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:35.705393+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:36.320342+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":794} +{"time":"2025-07-28T21:51:36.32037+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:36.320384+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:36.357398+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":37} +{"time":"2025-07-28T21:51:36.357415+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:36.367542+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":10} +{"time":"2025-07-28T21:51:36.36756+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20000,"unique_prefixes":2931,"success":2931,"duration_ms":845} +2025/07/28 21:51:36 [akrotiri/30nD3SR8IB-000085] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53051 - 408 135B in 2.000394167s +{"time":"2025-07-28T21:51:36.643226+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"196.60.8.170","peer_asn":"327781"} +2025/07/28 21:51:36 [akrotiri/30nD3SR8IB-000087] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53052 - 200 3751B in 767.912333ms +2025/07/28 21:51:36 [akrotiri/30nD3SR8IB-000086] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53050 - 408 135B in 2.000600166s +{"time":"2025-07-28T21:51:36.930684+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:36.930703+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:36.964433+02:00","level":"WARN","msg":"BGP notification","source":"streamer.go:509","func":"streamer.(*Streamer).stream","peer":"80.81.192.113","peer_asn":"35320"} +{"time":"2025-07-28T21:51:37.24159+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":310} +{"time":"2025-07-28T21:51:37.46673+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:37.466753+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:37.470474+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:37 [akrotiri/30nD3SR8IB-000090] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53054 - 200 3757B in 733.235417ms +{"time":"2025-07-28T21:51:37.763034+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:38.450603+02:00","level":"DEBUG","msg":"System stats","source":"cli.go:40","func":"routewatch.logDebugStats","goroutines":38,"alloc_mb":63,"total_alloc_mb":1922,"sys_mb":133,"num_gc":58,"heap_alloc_mb":63,"heap_sys_mb":122,"heap_idle_mb":50,"heap_inuse_mb":72,"heap_released_mb":26,"stack_inuse_mb":1} +2025/07/28 21:51:38 [akrotiri/30nD3SR8IB-000088] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53053 - 408 135B in 2.001162208s +2025/07/28 21:51:38 [akrotiri/30nD3SR8IB-000091] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53054 - 200 3760B in 702.185833ms +{"time":"2025-07-28T21:51:38.614463+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1147} +{"time":"2025-07-28T21:51:38.614477+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:38.614479+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:38.619057+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":4} +{"time":"2025-07-28T21:51:38.619068+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:38.679866+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":60} +{"time":"2025-07-28T21:51:38.679872+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:38.689547+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":9} +{"time":"2025-07-28T21:51:38.68957+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":18773,"unique_prefixes":6753,"success":6753,"duration_ms":1237} +{"time":"2025-07-28T21:51:38.775528+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:38.775545+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:38 [akrotiri/30nD3SR8IB-000089] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53052 - 408 135B in 2.000093917s +{"time":"2025-07-28T21:51:38.927402+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":151} +{"time":"2025-07-28T21:51:39.539837+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:39.539855+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:39.607231+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:39.622144+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:40 [akrotiri/30nD3SR8IB-000092] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53055 - 408 135B in 2.000518583s +2025/07/28 21:51:40 [akrotiri/30nD3SR8IB-000093] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53054 - 408 135B in 2.000978292s +{"time":"2025-07-28T21:51:40.866076+02:00","level":"INFO","msg":"Stream statistics","source":"streamer.go:271","func":"streamer.(*Streamer).logMetrics","uptime":60001031708,"total_messages":326283,"total_bytes":236782845,"total_mb":"225.81","messages_per_sec":"3253.08","bits_per_sec":"18947328","mbps":"18.95","total_dropped":0} +{"time":"2025-07-28T21:51:40.866117+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.ASHandler","index":0,"queue_len":5058,"queue_cap":100000,"processed":318364,"dropped":0,"avg_time":111156,"min_time":0,"max_time":2321702334} +{"time":"2025-07-28T21:51:40.866127+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeerHandler","index":1,"queue_len":5513,"queue_cap":100000,"processed":317909,"dropped":0,"avg_time":53742,"min_time":0,"max_time":1319057792} +{"time":"2025-07-28T21:51:40.866135+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PrefixHandler","index":2,"queue_len":6621,"queue_cap":100000,"processed":316801,"dropped":0,"avg_time":147569,"min_time":0,"max_time":2534549791} +{"time":"2025-07-28T21:51:40.866143+02:00","level":"INFO","msg":"Handler statistics","source":"streamer.go:304","func":"streamer.(*Streamer).logMetrics","handler":"*routewatch.PeeringHandler","index":3,"queue_len":0,"queue_cap":100000,"processed":323423,"dropped":0,"avg_time":1339,"min_time":0,"max_time":710292} +{"time":"2025-07-28T21:51:41.055694+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":1515} +{"time":"2025-07-28T21:51:41.055731+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:41.055722+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:41.060623+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":4} +{"time":"2025-07-28T21:51:41.060646+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:41.129499+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":68} +{"time":"2025-07-28T21:51:41.129543+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:41.130756+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:41.135847+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":6} +{"time":"2025-07-28T21:51:41.135861+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20003,"unique_prefixes":7714,"success":7714,"duration_ms":1602} +{"time":"2025-07-28T21:51:41.135911+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:41.188849+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":52} +2025/07/28 21:51:41 [akrotiri/30nD3SR8IB-000095] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53057 - 200 3752B in 714.976709ms +{"time":"2025-07-28T21:51:41.761689+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:41.761709+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:41.762658+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:41.770756+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":9} +{"time":"2025-07-28T21:51:41.770782+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:41.777385+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:41.865273+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":94} +{"time":"2025-07-28T21:51:41.865296+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +2025/07/28 21:51:41 [akrotiri/30nD3SR8IB-000097] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53059 - 200 3755B in 735.479541ms +2025/07/28 21:51:42 [akrotiri/30nD3SR8IB-000094] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53056 - 408 135B in 2.000427542s +2025/07/28 21:51:42 [akrotiri/30nD3SR8IB-000098] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53057 - 200 3755B in 768.515875ms +{"time":"2025-07-28T21:51:42.708985+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:42 [akrotiri/30nD3SR8IB-000096] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53058 - 408 135B in 2.001123208s +2025/07/28 21:51:42 [akrotiri/30nD3SR8IB-000099] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53059 - 200 3759B in 749.846625ms +{"time":"2025-07-28T21:51:43.578413+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"193.107.13.3","peer_asn":"47787"} +2025/07/28 21:51:43 [akrotiri/30nD3SR8IB-000101] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53057 - 200 3759B in 819.518708ms +{"time":"2025-07-28T21:51:43.770113+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:44 [akrotiri/30nD3SR8IB-000103] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53059 - 200 3763B in 882.21475ms +{"time":"2025-07-28T21:51:44.372712+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpsertLiveRouteBatch (database.go:181)","duration_ms":2507} +{"time":"2025-07-28T21:51:44.372743+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:44.372768+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:44.4892+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":116} +{"time":"2025-07-28T21:51:44.489458+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +{"time":"2025-07-28T21:51:44.490404+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +{"time":"2025-07-28T21:51:44.493572+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"UpdatePeerBatch (database.go:640)","duration_ms":4} +{"time":"2025-07-28T21:51:44.493608+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"DeleteLiveRouteBatch","caller":"database.go:262"} +{"time":"2025-07-28T21:51:44.515416+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"DeleteLiveRouteBatch (database.go:262)","duration_ms":21} +{"time":"2025-07-28T21:51:44.515436+02:00","level":"DEBUG","msg":"Flushed prefix batch","source":"prefixhandler.go:223","func":"routewatch.(*PrefixHandler).flushBatchLocked","batch_size":20001,"unique_prefixes":8636,"success":8636,"duration_ms":2748} +{"time":"2025-07-28T21:51:44.515439+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:44 [akrotiri/30nD3SR8IB-000100] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53060 - 408 135B in 2.00015s +{"time":"2025-07-28T21:51:44.533614+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:44.592056+02:00","level":"DEBUG","msg":"Database lock released","source":"database.go:162","func":"database.(*Database).unlock","held_by":"GetOrCreateASNBatch (database.go:332)","duration_ms":76} +{"time":"2025-07-28T21:51:44.592071+02:00","level":"DEBUG","msg":"Database lock acquired","source":"database.go:150","func":"database.(*Database).lock","operation":"UpsertLiveRouteBatch","caller":"database.go:181"} +{"time":"2025-07-28T21:51:44.594081+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"GetOrCreateASNBatch","caller":"database.go:332"} +2025/07/28 21:51:44 [akrotiri/30nD3SR8IB-000104] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53057 - 200 3761B in 868.793791ms +2025/07/28 21:51:44 [akrotiri/30nD3SR8IB-000102] "GET http://127.0.0.1:8080/as/49505 HTTP/1.1" from 127.0.0.1:53061 - 408 135B in 2.001134667s +{"time":"2025-07-28T21:51:44.888682+02:00","level":"INFO","msg":"BGP session opened","source":"streamer.go:501","func":"streamer.(*Streamer).stream","peer":"195.208.209.174","peer_asn":"25227"} +{"time":"2025-07-28T21:51:45.011987+02:00","level":"DEBUG","msg":"Acquiring database lock","source":"database.go:144","func":"database.(*Database).lock","operation":"UpdatePeerBatch","caller":"database.go:640"} +2025/07/28 21:51:45 [akrotiri/30nD3SR8IB-000105] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53059 - 200 3761B in 815.111333ms +2025/07/28 21:51:45 [akrotiri/30nD3SR8IB-000107] "GET http://127.0.0.1:8080/api/v1/stats HTTP/1.1" from 127.0.0.1:53057 - 200 3763B in 725.258833ms +fatal error: concurrent map writes -goroutine 44 [running]: -git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).stream(0x140000cf340, {0x102d36a70, 0x140000d6050}) - /Users/user/dev/routewatch/internal/streamer/streamer.go:400 +0xd30 +goroutine 182284 [running]: +internal/runtime/maps.fatal({0x104d2e239?, 0x104825998?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/panic.go:1058 +0x20 +net/textproto.MIMEHeader.Set(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/textproto/header.go:22 +net/http.Header.Set(0x1400431dad0, {0x104d27b09?, 0x14003085c98?}, {0x104d2feea, 0x18}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/header.go:40 +0x94 +git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.(*Server).handleASDetail.func6({0x104f26758, 0x1400431dbf0}, 0x14004339040) + /Users/user/dev/routewatch/internal/server/handlers.go:560 +0x4f8 +net/http.HandlerFunc.ServeHTTP(0x140001c6000?, {0x104f26758?, 0x1400431dbf0?}, 0x140059871d4?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5.(*Mux).routeHTTP(0x1400018a2a0, {0x104f26758, 0x1400431dbf0}, 0x14004339040) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/mux.go:478 +0x280 +net/http.HandlerFunc.ServeHTTP(0x3583e48?, {0x104f26758?, 0x1400431dbf0?}, 0x1048dffd4?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +git.eeqj.de/sneak/routewatch/internal/server.JSONResponseMiddleware.func1({0x104f26728, 0x1400432a500}, 0x14004339040) + /Users/user/dev/routewatch/internal/server/middleware.go:67 +0x168 +net/http.HandlerFunc.ServeHTTP(0x14004338f00?, {0x104f26728?, 0x1400432a500?}, 0x1048307c4?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.TimeoutMiddleware.func2.1.1() + /Users/user/dev/routewatch/internal/server/middleware.go:168 +0x9c +created by git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.TimeoutMiddleware.func2.1 in goroutine 182282 + /Users/user/dev/routewatch/internal/server/middleware.go:161 +0x184 + +goroutine 1 [chan receive, 1 minutes]: +go.uber.org/fx.(*App).run(0x140000ea420, 0x1400014de68) + /Users/user/go/pkg/mod/go.uber.org/fx@v1.24.0/app.go:613 +0x98 +go.uber.org/fx.(*App).Run(0x140000ea420) + /Users/user/go/pkg/mod/go.uber.org/fx@v1.24.0/app.go:600 +0x34 +git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry() + /Users/user/dev/routewatch/internal/routewatch/cli.go:97 +0xec +main.main() + /Users/user/dev/routewatch/cmd/routewatch/main.go:9 +0x1c + +goroutine 23 [select, 1 minutes]: +database/sql.(*DB).connectionOpener(0x14000119520, {0x104f27110, 0x140001067d0}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:1261 +0x80 +created by database/sql.OpenDB in goroutine 1 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:841 +0x124 + +goroutine 34 [chan receive]: +github.com/rcrowley/go-metrics.(*meterArbiter).tick(...) + /Users/user/go/pkg/mod/github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9/meter.go:239 +created by github.com/rcrowley/go-metrics.NewMeter in goroutine 1 + /Users/user/go/pkg/mod/github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9/meter.go:46 +0xc8 + +goroutine 26 [select, 1 minutes]: +go.uber.org/fx.(*signalReceivers).relayer(0x140000ea488) + /Users/user/go/pkg/mod/go.uber.org/fx@v1.24.0/signal.go:84 +0x88 +created by go.uber.org/fx.(*signalReceivers).Start in goroutine 1 + /Users/user/go/pkg/mod/go.uber.org/fx@v1.24.0/signal.go:112 +0x208 + +goroutine 36 [chan receive]: +git.eeqj.de/sneak/routewatch/internal/routewatch.logDebugStats(0x140000be5f8) + /Users/user/dev/routewatch/internal/routewatch/cli.go:36 +0x350 +created by git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry.func1.1 in goroutine 35 + /Users/user/dev/routewatch/internal/routewatch/cli.go:65 +0x80 + +goroutine 38 [syscall, 1 minutes]: +os/signal.signal_recv() + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/sigqueue.go:149 +0x2c +os/signal.loop() + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/os/signal/signal_unix.go:23 +0x1c +created by os/signal.Notify.func1.1 in goroutine 35 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/os/signal/signal.go:152 +0x28 + +goroutine 24 [chan receive, 1 minutes]: +git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry.func1.1.1() + /Users/user/dev/routewatch/internal/routewatch/cli.go:72 +0x3c +created by git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry.func1.1 in goroutine 35 + /Users/user/dev/routewatch/internal/routewatch/cli.go:71 +0x144 + +goroutine 2 [sync.Mutex.Lock]: +internal/sync.runtime_SemacquireMutex(0x14000003838?, 0x0?, 0x14000182ee8?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/sema.go:95 +0x28 +internal/sync.(*Mutex).lockSlow(0x1400007e0f8) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:149 +0x170 +internal/sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:70 +sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/sync/mutex.go:46 +git.eeqj.de/sneak/routewatch/internal/routewatch.(*ASHandler).flushLoop(0x1400007e0e0) + /Users/user/dev/routewatch/internal/routewatch/ashandler.go:119 +0x130 +created by git.eeqj.de/sneak/routewatch/internal/routewatch.NewASHandler in goroutine 25 + /Users/user/dev/routewatch/internal/routewatch/ashandler.go:55 +0x144 + +goroutine 3 [sync.Mutex.Lock]: +internal/sync.runtime_SemacquireMutex(0x140000039f8?, 0xe?, 0x1400370bee8?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/sema.go:95 +0x28 +internal/sync.(*Mutex).lockSlow(0x1400007e1d8) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:149 +0x170 +internal/sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:70 +sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/sync/mutex.go:46 +git.eeqj.de/sneak/routewatch/internal/routewatch.(*PeerHandler).flushLoop(0x1400007e1c0) + /Users/user/dev/routewatch/internal/routewatch/peerhandler.go:108 +0x130 +created by git.eeqj.de/sneak/routewatch/internal/routewatch.NewPeerHandler in goroutine 25 + /Users/user/dev/routewatch/internal/routewatch/peerhandler.go:56 +0x144 + +goroutine 6 [sync.Mutex.Lock]: +internal/sync.runtime_SemacquireMutex(0x140004bc4f8?, 0xc?, 0x14000188ee8?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/sema.go:95 +0x28 +internal/sync.(*Mutex).lockSlow(0x140004b01e0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:149 +0x170 +internal/sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:70 +sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/sync/mutex.go:46 +git.eeqj.de/sneak/routewatch/internal/routewatch.(*PrefixHandler).flushLoop(0x140004b01c0) + /Users/user/dev/routewatch/internal/routewatch/prefixhandler.go:146 +0x130 +created by git.eeqj.de/sneak/routewatch/internal/routewatch.NewPrefixHandler in goroutine 25 + /Users/user/dev/routewatch/internal/routewatch/prefixhandler.go:69 +0x144 + +goroutine 7 [select, 1 minutes]: +git.eeqj.de/sneak/routewatch/internal/routewatch.(*PeeringHandler).processLoop(0x14000040040) + /Users/user/dev/routewatch/internal/routewatch/peeringhandler.go:97 +0xa4 +created by git.eeqj.de/sneak/routewatch/internal/routewatch.NewPeeringHandler in goroutine 25 + /Users/user/dev/routewatch/internal/routewatch/peeringhandler.go:52 +0xec + +goroutine 8 [select, 1 minutes]: +git.eeqj.de/sneak/routewatch/internal/routewatch.(*PeeringHandler).pruneLoop(0x14000040040) + /Users/user/dev/routewatch/internal/routewatch/peeringhandler.go:115 +0xa4 +created by git.eeqj.de/sneak/routewatch/internal/routewatch.NewPeeringHandler in goroutine 25 + /Users/user/dev/routewatch/internal/routewatch/peeringhandler.go:53 +0x12c + +goroutine 9 [sync.Mutex.Lock]: +internal/sync.runtime_SemacquireMutex(0x104d21b2a?, 0x4?, 0x19?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/sema.go:95 +0x28 +internal/sync.(*Mutex).lockSlow(0x14000194020) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:149 +0x170 +internal/sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:70 +sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/sync/mutex.go:46 +git.eeqj.de/sneak/routewatch/internal/database.(*Database).lock(0x14000194000, {0x104d2c2ca, 0x13}) + /Users/user/dev/routewatch/internal/database/database.go:146 +0x18c +git.eeqj.de/sneak/routewatch/internal/database.(*Database).GetOrCreateASNBatch(0x14000194000, 0x14005dccd50) + /Users/user/dev/routewatch/internal/database/database.go:332 +0x50 +git.eeqj.de/sneak/routewatch/internal/routewatch.(*ASHandler).flushBatchLocked(0x1400007e0e0) + /Users/user/dev/routewatch/internal/routewatch/ashandler.go:150 +0x138 +git.eeqj.de/sneak/routewatch/internal/routewatch.(*ASHandler).HandleMessage(0x1400007e0e0, 0x14000f3ec60) + /Users/user/dev/routewatch/internal/routewatch/ashandler.go:106 +0x2d0 +git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).runHandlerWorker(0x0?, 0x140002a00a0) + /Users/user/dev/routewatch/internal/streamer/streamer.go:168 +0x78 +created by git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).Start in goroutine 25 + /Users/user/dev/routewatch/internal/streamer/streamer.go:136 +0x128 + +goroutine 10 [sync.Mutex.Lock]: +internal/sync.runtime_SemacquireMutex(0x104d21b2a?, 0x4?, 0x19?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/sema.go:95 +0x28 +internal/sync.(*Mutex).lockSlow(0x14000194020) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:149 +0x170 +internal/sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/sync/mutex.go:70 +sync.(*Mutex).Lock(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/sync/mutex.go:46 +git.eeqj.de/sneak/routewatch/internal/database.(*Database).lock(0x14000194000, {0x104d296d2, 0xf}) + /Users/user/dev/routewatch/internal/database/database.go:146 +0x18c +git.eeqj.de/sneak/routewatch/internal/database.(*Database).UpdatePeerBatch(0x14000194000, 0x14005f3d470) + /Users/user/dev/routewatch/internal/database/database.go:640 +0x50 +git.eeqj.de/sneak/routewatch/internal/routewatch.(*PeerHandler).flushBatchLocked(0x1400007e1c0) + /Users/user/dev/routewatch/internal/routewatch/peerhandler.go:150 +0x35c +git.eeqj.de/sneak/routewatch/internal/routewatch.(*PeerHandler).HandleMessage(0x1400007e1c0, 0x14000e14480) + /Users/user/dev/routewatch/internal/routewatch/peerhandler.go:95 +0x1f8 +git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).runHandlerWorker(0x0?, 0x14000106870) + /Users/user/dev/routewatch/internal/streamer/streamer.go:168 +0x78 +created by git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).Start in goroutine 25 + /Users/user/dev/routewatch/internal/streamer/streamer.go:136 +0x128 + +goroutine 11 [runnable]: +github.com/mattn/go-sqlite3._Cfunc_sqlite3_bind_int64(0x46f9b0ca0, 0x3, 0x30) + _cgo_gotypes.go:568 +0x34 +github.com/mattn/go-sqlite3.(*SQLiteStmt).bind.func7(...) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:1992 +github.com/mattn/go-sqlite3.(*SQLiteStmt).bind(0x14005ca00f0, {0x14004a428c0, 0xb, 0x104828738?}) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:1992 +0x378 +github.com/mattn/go-sqlite3.(*SQLiteStmt).execSync(0x14005ca00f0, {0x14004a428c0?, 0x2a9a?, 0x104824d00?}) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2117 +0x28 +github.com/mattn/go-sqlite3.(*SQLiteStmt).exec(0x14005ca00f0, {0x104f270a0, 0x105531420}, {0x14004a428c0, 0xb, 0xb}) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2085 +0x308 +github.com/mattn/go-sqlite3.(*SQLiteStmt).ExecContext(0x1400120f608?, {0x104f270a0?, 0x105531420?}, {0x14004a428c0?, 0x1?, 0x10483d750?}) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3_go18.go:53 +0x28 +database/sql.ctxDriverStmtExec({0x104f270a0, 0x105531420}, {0x104f27340, 0x14005ca00f0}, {0x14004a428c0, 0xb, 0x1400559ecc0?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/ctxutil.go:65 +0x9c +database/sql.resultFromStatement({0x104f270a0, 0x105531420}, {0x104f26878, 0x14002cd3140}, 0x14005ba6dc0, {0x1400120f568, 0xb, 0xb}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:2680 +0xd4 +database/sql.(*Stmt).ExecContext.func1(0x0?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:2654 +0x8c +database/sql.(*DB).retry(0x1400120f388?, 0x1400120f3a0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:1576 +0x4c +database/sql.(*Stmt).ExecContext(0x104f15e60?, {0x104f270a0?, 0x105531420?}, {0x1400120f568?, 0x1f6?, 0x14004e84bc0?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:2648 +0x124 +database/sql.(*Stmt).Exec(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:2668 +git.eeqj.de/sneak/routewatch/internal/database.(*Database).UpsertLiveRouteBatch(0x14000194000, {0x14004e0a000, 0x26f9, 0x9b8?}) + /Users/user/dev/routewatch/internal/database/database.go:231 +0x4a0 +git.eeqj.de/sneak/routewatch/internal/routewatch.(*PrefixHandler).flushBatchLocked(0x140004b01c0) + /Users/user/dev/routewatch/internal/routewatch/prefixhandler.go:207 +0x554 +git.eeqj.de/sneak/routewatch/internal/routewatch.(*PrefixHandler).HandleMessage(0x140004b01c0, 0x140017d5560) + /Users/user/dev/routewatch/internal/routewatch/prefixhandler.go:133 +0x308 +git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).runHandlerWorker(0x0?, 0x14000106000) + /Users/user/dev/routewatch/internal/streamer/streamer.go:168 +0x78 +created by git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).Start in goroutine 25 + /Users/user/dev/routewatch/internal/streamer/streamer.go:136 +0x128 + +goroutine 12 [chan receive]: +git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).runHandlerWorker(0x0?, 0x14000106050) + /Users/user/dev/routewatch/internal/streamer/streamer.go:166 +0x38 +created by git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).Start in goroutine 25 + /Users/user/dev/routewatch/internal/streamer/streamer.go:136 +0x128 + +goroutine 13 [IO wait]: +internal/poll.runtime_pollWait(0x105972738, 0x72) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/netpoll.go:351 +0xa0 +internal/poll.(*pollDesc).wait(0x14000104100?, 0x14000014500?, 0x0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 +internal/poll.(*pollDesc).waitRead(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:89 +internal/poll.(*FD).Read(0x14000104100, {0x14000014500, 0x2500, 0x2500}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_unix.go:165 +0x1fc +net.(*netFD).Read(0x14000104100, {0x14000014500?, 0x140008a71b8?, 0x1047c857c?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/fd_posix.go:55 +0x28 +net.(*conn).Read(0x14000066028, {0x14000014500?, 0x304455b18?, 0x12e38f710?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/net.go:194 +0x34 +crypto/tls.(*atLeastReader).Read(0x14004455b30, {0x14000014500?, 0x140008a7278?, 0x104a6b2e4?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/crypto/tls/conn.go:809 +0x40 +bytes.(*Buffer).ReadFrom(0x140000d22b8, {0x104f23b60, 0x14004455b30}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/bytes/buffer.go:211 +0x90 +crypto/tls.(*Conn).readFromUntil(0x140000d2008, {0x12c5e2fb8, 0x14000066028}, 0x140008a7320?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/crypto/tls/conn.go:831 +0xcc +crypto/tls.(*Conn).readRecordOrCCS(0x140000d2008, 0x0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/crypto/tls/conn.go:629 +0x35c +crypto/tls.(*Conn).readRecord(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/crypto/tls/conn.go:591 +crypto/tls.(*Conn).Read(0x140000d2008, {0x1400011b000, 0x1000, 0x140050ff3d0?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/crypto/tls/conn.go:1385 +0x15c +net/http.(*persistConn).Read(0x14000000240, {0x1400011b000?, 0x140008a7698?, 0x1048e4a64?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/transport.go:2122 +0x4c +bufio.(*Reader).fill(0x1400007cb40) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/bufio/bufio.go:113 +0xf8 +bufio.(*Reader).ReadSlice(0x1400007cb40, 0xa) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/bufio/bufio.go:380 +0x30 +net/http/internal.readChunkLine(0x104e53540?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/internal/chunked.go:156 +0x20 +net/http/internal.(*chunkedReader).beginChunk(0x140000c22d0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/internal/chunked.go:49 +0x24 +net/http/internal.(*chunkedReader).Read(0x140000c22d0, {0x1400015d000?, 0x0?, 0x0?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/internal/chunked.go:125 +0x128 +net/http.(*body).readLocked(0x140001ccc40, {0x1400015d000?, 0x140008a78a8?, 0x1047cb6cc?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/transfer.go:845 +0x3c +net/http.(*body).Read(0x1055292c0?, {0x1400015d000?, 0x0?, 0x0?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/transfer.go:837 +0x11c +net/http.(*bodyEOFSignal).Read(0x140001ccc80, {0x1400015d000, 0x1000, 0x1000}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/transport.go:2984 +0x170 +bufio.(*Reader).fill(0x1400018a5a0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/bufio/bufio.go:113 +0xf8 +bufio.(*Reader).ReadByte(0x1400018a5a0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/bufio/bufio.go:273 +0x2c +compress/flate.(*decompressor).moreBits(0x1400015e008) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/compress/flate/inflate.go:697 +0x2c +compress/flate.(*decompressor).nextBlock(0x1400015e008) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/compress/flate/inflate.go:304 +0x34 +compress/flate.(*decompressor).Read(0x1400015e008, {0x1400190e000, 0x8000, 0x1048e4998?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/compress/flate/inflate.go:348 +0x50 +compress/gzip.(*Reader).Read(0x140000f8dc8, {0x1400190e000, 0x8000, 0x8000}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/compress/gzip/gunzip.go:252 +0x7c +net/http.(*gzipReader).Read(0x14000290060, {0x1400190e000, 0x8000, 0x8000}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/transport.go:3048 +0x1f4 +bufio.(*Scanner).Scan(0x140008a7d68) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/bufio/scan.go:219 +0x7cc +git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).stream(0x140001e2000, {0x104f27110, 0x140001060a0}) + /Users/user/dev/routewatch/internal/streamer/streamer.go:433 +0x2dc +git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).streamWithReconnect(0x140001e2000, {0x104f27110, 0x140001060a0}) + /Users/user/dev/routewatch/internal/streamer/streamer.go:343 +0xb8 git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).Start.func1() - /Users/user/dev/routewatch/internal/streamer/streamer.go:138 +0x2c -created by git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).Start in goroutine 22 - /Users/user/dev/routewatch/internal/streamer/streamer.go:137 +0x1f8 + /Users/user/dev/routewatch/internal/streamer/streamer.go:140 +0x2c +created by git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).Start in goroutine 25 + /Users/user/dev/routewatch/internal/streamer/streamer.go:139 +0x1f8 + +goroutine 14 [IO wait]: +internal/poll.runtime_pollWait(0x105972850, 0x72) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/netpoll.go:351 +0xa0 +internal/poll.(*pollDesc).wait(0x140002a4100?, 0x1048a4298?, 0x0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 +internal/poll.(*pollDesc).waitRead(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:89 +internal/poll.(*FD).Accept(0x140002a4100) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_unix.go:620 +0x24c +net.(*netFD).accept(0x140002a4100) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/fd_unix.go:172 +0x28 +net.(*TCPListener).accept(0x14000040080) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/tcpsock_posix.go:159 +0x24 +net.(*TCPListener).Accept(0x14000040080) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/tcpsock.go:380 +0x2c +net/http.(*Server).Serve(0x140002a6100, {0x104f267b8, 0x14000040080}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:3424 +0x290 +net/http.(*Server).ListenAndServe(0x140002a6100) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:3350 +0x84 +git.eeqj.de/sneak/routewatch/internal/server.(*Server).Start.func1() + /Users/user/dev/routewatch/internal/server/server.go:55 +0x28 +created by git.eeqj.de/sneak/routewatch/internal/server.(*Server).Start in goroutine 25 + /Users/user/dev/routewatch/internal/server/server.go:54 +0x19c + +goroutine 57 [select, 1 minutes]: +net/http.(*persistConn).readLoop(0x14000000240) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/transport.go:2395 +0xb04 +created by net/http.(*Transport).dialConn in goroutine 50 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/transport.go:1944 +0x11c4 + +goroutine 58 [select, 1 minutes]: +net/http.(*persistConn).writeLoop(0x14000000240) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/transport.go:2590 +0x9c +created by net/http.(*Transport).dialConn in goroutine 50 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/transport.go:1945 +0x120c + +goroutine 33 [select]: +git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).stream.func2() + /Users/user/dev/routewatch/internal/streamer/streamer.go:422 +0x94 +created by git.eeqj.de/sneak/routewatch/internal/streamer.(*Streamer).stream in goroutine 13 + /Users/user/dev/routewatch/internal/streamer/streamer.go:420 +0x1cc + +goroutine 184597 [IO wait]: +internal/poll.runtime_pollWait(0x1059722d8, 0x72) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/netpoll.go:351 +0xa0 +internal/poll.(*pollDesc).wait(0x1400018db00?, 0x14001ccb811?, 0x0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 +internal/poll.(*pollDesc).waitRead(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:89 +internal/poll.(*FD).Read(0x1400018db00, {0x14001ccb811, 0x1, 0x1}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_unix.go:165 +0x1fc +net.(*netFD).Read(0x1400018db00, {0x14001ccb811?, 0x0?, 0x1400037d030?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/fd_posix.go:55 +0x28 +net.(*conn).Read(0x14000192878, {0x14001ccb811?, 0x0?, 0x1048307c4?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/net.go:194 +0x34 +net/http.(*connReader).backgroundRead(0x14001ccb800) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:690 +0x40 +created by net/http.(*connReader).startBackgroundRead in goroutine 176361 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:686 +0xc4 + +goroutine 184523 [select]: +git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.TimeoutMiddleware.func2.1({0x12e422f28, 0x14002df2200}, 0x14000208a00) + /Users/user/dev/routewatch/internal/server/middleware.go:172 +0x1dc +net/http.HandlerFunc.ServeHTTP(0x130?, {0x12e422f28?, 0x14002df2200?}, 0x104b61710?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.Recoverer.func1({0x12e422f28?, 0x14002df2200?}, 0x14002e908b8?) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/recoverer.go:45 +0x70 +net/http.HandlerFunc.ServeHTTP(0x1054f0bc0?, {0x12e422f28?, 0x14002df2200?}, 0x3?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.init.0.RequestLogger.func1.1({0x104f26998, 0x14002f221c0}, 0x140002088c0) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/logger.go:55 +0x110 +net/http.HandlerFunc.ServeHTTP(0x140002088c0?, {0x104f26998?, 0x14002f221c0?}, 0x104f11e20?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.RealIP.func1({0x104f26998, 0x14002f221c0}, 0x140002088c0) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/realip.go:36 +0x88 +net/http.HandlerFunc.ServeHTTP(0x104f270d8?, {0x104f26998?, 0x14002f221c0?}, 0x104defbc0?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.RequestID.func1({0x104f26998, 0x14002f221c0}, 0x14000208780) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/request_id.go:76 +0x1f0 +net/http.HandlerFunc.ServeHTTP(0x104f27110?, {0x104f26998?, 0x14002f221c0?}, 0x1054ed870?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5.(*Mux).ServeHTTP(0x1400018a2a0, {0x104f26998, 0x14002f221c0}, 0x14000208640) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/mux.go:90 +0x280 +net/http.serverHandler.ServeHTTP({0x14001b2aab0?}, {0x104f26998?, 0x14002f221c0?}, 0x6?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:3301 +0xbc +net/http.(*conn).serve(0x1400020a090, {0x104f270d8, 0x1400029e360}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2102 +0x52c +created by net/http.(*Server).Serve in goroutine 14 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:3454 +0x3d8 + +goroutine 184598 [select]: +github.com/mattn/go-sqlite3.(*SQLiteRows).Next(0x14000ce1380, {0x14003757ec0, 0x1, 0x1}) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2216 +0x1ec +database/sql.(*Rows).nextLocked(0x14005d90640) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3066 +0x144 +database/sql.(*Rows).Next.func1() + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3041 +0x30 +database/sql.withLock({0x104f24588, 0x14005d90678}, 0x14000289ed8) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3574 +0x74 +database/sql.(*Rows).Next(0x14005d90640) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3040 +0x74 +database/sql.(*Row).Scan(0x14000289fb8, {0x14000289fe8?, 0x140001e2310?, 0x1}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3511 +0x118 +git.eeqj.de/sneak/routewatch/internal/database.(*Database).GetLiveRouteCountsContext(0x14000194000, {0x104f27180, 0x140001e2310}) + /Users/user/dev/routewatch/internal/database/database.go:964 +0x16c +git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.func1.(*Server).handleStats.1({0x104f26758, 0x140035ba270}, 0x14002348500?) + /Users/user/dev/routewatch/internal/server/handlers.go:270 +0x330 +net/http.HandlerFunc.ServeHTTP(0x14000e30000?, {0x104f26758?, 0x140035ba270?}, 0x140014b5010?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5.(*Mux).routeHTTP(0x1400018a300, {0x104f26758, 0x140035ba270}, 0x14002348500) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/mux.go:478 +0x280 +net/http.HandlerFunc.ServeHTTP(0x14001211c88?, {0x104f26758?, 0x140035ba270?}, 0x14001211c68?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5.(*Mux).ServeHTTP(0x1400018a300, {0x104f26758, 0x140035ba270}, 0x14002348500) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/mux.go:73 +0x2c4 +github.com/go-chi/chi/v5.(*Mux).Mount.func1({0x104f26758, 0x140035ba270}, 0x14002348500) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/mux.go:325 +0x1e0 +net/http.HandlerFunc.ServeHTTP(0x14000e30000?, {0x104f26758?, 0x140035ba270?}, 0x14003016924?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5.(*Mux).routeHTTP(0x1400018a2a0, {0x104f26758, 0x140035ba270}, 0x14002348500) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/mux.go:478 +0x280 +net/http.HandlerFunc.ServeHTTP(0x3149e48?, {0x104f26758?, 0x140035ba270?}, 0x1048dffd4?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +git.eeqj.de/sneak/routewatch/internal/server.JSONResponseMiddleware.func1({0x104f26728, 0x140056b9b80}, 0x14002348500) + /Users/user/dev/routewatch/internal/server/middleware.go:67 +0x168 +net/http.HandlerFunc.ServeHTTP(0x140023483c0?, {0x104f26728?, 0x140056b9b80?}, 0x1048307c4?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.TimeoutMiddleware.func2.1.1() + /Users/user/dev/routewatch/internal/server/middleware.go:168 +0x9c +created by git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.TimeoutMiddleware.func2.1 in goroutine 176361 + /Users/user/dev/routewatch/internal/server/middleware.go:161 +0x184 + +goroutine 182282 [runnable]: +internal/runtime/maps.newarray(0x140039a35c8?, 0x1047c857c?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/malloc.go:1788 +0x1c +internal/runtime/maps.newGroups(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/runtime/maps/group.go:310 +internal/runtime/maps.(*Map).growToSmall(0x1400431dad0, 0x104825998?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/runtime/maps/map.go:591 +0x2c +net/textproto.MIMEHeader.Set(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/textproto/header.go:22 +net/http.Header.Set(0x1400431dad0, {0x104d27b09?, 0x105509720?}, {0x104d2a1d0, 0x10}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/header.go:40 +0x94 +git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.TimeoutMiddleware.func2.1({0x12e422f28, 0x14003ce1480}, 0x14004338f00) + /Users/user/dev/routewatch/internal/server/middleware.go:181 +0x228 +net/http.HandlerFunc.ServeHTTP(0x130?, {0x12e422f28?, 0x14003ce1480?}, 0x104b61710?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.Recoverer.func1({0x12e422f28?, 0x14003ce1480?}, 0x140039a38b8?) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/recoverer.go:45 +0x70 +net/http.HandlerFunc.ServeHTTP(0x1054f0bc0?, {0x12e422f28?, 0x14003ce1480?}, 0x3?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.init.0.RequestLogger.func1.1({0x104f26998, 0x1400355e460}, 0x14004338dc0) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/logger.go:55 +0x110 +net/http.HandlerFunc.ServeHTTP(0x14004338dc0?, {0x104f26998?, 0x1400355e460?}, 0x104f11e20?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.RealIP.func1({0x104f26998, 0x1400355e460}, 0x14004338dc0) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/realip.go:36 +0x88 +net/http.HandlerFunc.ServeHTTP(0x104f270d8?, {0x104f26998?, 0x1400355e460?}, 0x104defbc0?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.RequestID.func1({0x104f26998, 0x1400355e460}, 0x14004338c80) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/request_id.go:76 +0x1f0 +net/http.HandlerFunc.ServeHTTP(0x104f27110?, {0x104f26998?, 0x1400355e460?}, 0x1054ed870?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5.(*Mux).ServeHTTP(0x1400018a2a0, {0x104f26998, 0x1400355e460}, 0x14004338b40) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/mux.go:90 +0x280 +net/http.serverHandler.ServeHTTP({0x1400431da40?}, {0x104f26998?, 0x1400355e460?}, 0x6?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:3301 +0xbc +net/http.(*conn).serve(0x1400432eea0, {0x104f270d8, 0x1400029e360}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2102 +0x52c +created by net/http.(*Server).Serve in goroutine 14 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:3454 +0x3d8 + +goroutine 184789 [select]: +database/sql.(*Rows).awaitDone(0x14005d90640, {0x104f27180, 0x140001e2310}, {0x0, 0x0}, {0x104f27110, 0x140024fc190}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3009 +0xbc +created by database/sql.(*Rows).initContextClose in goroutine 184598 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:2996 +0x144 + +goroutine 184445 [select]: +database/sql.(*Rows).awaitDone(0x1400017c0a0, {0x104f27180, 0x1400007e620}, {0x0, 0x0}, {0x104f27110, 0x140004ce000}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3009 +0xbc +created by database/sql.(*Rows).initContextClose in goroutine 184525 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:2996 +0x144 + +goroutine 184244 [chan receive]: +database/sql.(*Tx).awaitDone(0x140018d2780) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:2212 +0x34 +created by database/sql.(*DB).beginDC in goroutine 11 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:1925 +0x19c + +goroutine 184525 [select]: +github.com/mattn/go-sqlite3.(*SQLiteRows).Next(0x140004b6a80, {0x14004336a40, 0x4, 0x4}) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2216 +0x1ec +database/sql.(*Rows).nextLocked(0x1400017c0a0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3066 +0x144 +database/sql.(*Rows).Next.func1() + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3041 +0x30 +database/sql.withLock({0x104f24588, 0x1400017c0d8}, 0x14003083818) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3574 +0x74 +database/sql.(*Rows).Next(0x1400017c0a0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/database/sql/sql.go:3040 +0x74 +git.eeqj.de/sneak/routewatch/internal/database.(*Database).GetASDetailsContext(0x14000194000, {0x104f27180, 0x1400007e620}, 0xc161) + /Users/user/dev/routewatch/internal/database/database.go:1186 +0x47c +git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.(*Server).handleASDetail.func6({0x104f26758, 0x14001b2ac60}, 0x14000208b40) + /Users/user/dev/routewatch/internal/server/handlers.go:483 +0x8c +net/http.HandlerFunc.ServeHTTP(0x14000bf45a0?, {0x104f26758?, 0x14001b2ac60?}, 0x1400137482c?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5.(*Mux).routeHTTP(0x1400018a2a0, {0x104f26758, 0x14001b2ac60}, 0x14000208b40) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/mux.go:478 +0x280 +net/http.HandlerFunc.ServeHTTP(0x104e93dc0?, {0x104f26758?, 0x14001b2ac60?}, 0x1047b7460?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +git.eeqj.de/sneak/routewatch/internal/server.JSONResponseMiddleware.func1({0x104f26728, 0x14000198360}, 0x14000208b40) + /Users/user/dev/routewatch/internal/server/middleware.go:67 +0x168 +net/http.HandlerFunc.ServeHTTP(0x14000208a00?, {0x104f26728?, 0x14000198360?}, 0x14003ae7270?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.TimeoutMiddleware.func2.1.1() + /Users/user/dev/routewatch/internal/server/middleware.go:168 +0x9c +created by git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.TimeoutMiddleware.func2.1 in goroutine 184523 + /Users/user/dev/routewatch/internal/server/middleware.go:161 +0x184 + +goroutine 184790 [syscall]: +github.com/mattn/go-sqlite3._Cfunc__sqlite3_step_internal(0x3b89ebb80) + _cgo_gotypes.go:384 +0x34 +github.com/mattn/go-sqlite3.(*SQLiteRows).nextSyncLocked.func1(...) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2233 +github.com/mattn/go-sqlite3.(*SQLiteRows).nextSyncLocked(0x14000ce1380, {0x14003757ec0, 0x1, 0x1048307c8?}) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2233 +0x64 +github.com/mattn/go-sqlite3.(*SQLiteRows).Next.func1() + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2214 +0x34 +created by github.com/mattn/go-sqlite3.(*SQLiteRows).Next in goroutine 184598 + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2213 +0x19c + +goroutine 172222 [IO wait]: +internal/poll.runtime_pollWait(0x105972620, 0x72) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/netpoll.go:351 +0xa0 +internal/poll.(*pollDesc).wait(0x14002ac0d80?, 0x1400011a000?, 0x0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 +internal/poll.(*pollDesc).waitRead(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:89 +internal/poll.(*FD).Read(0x14002ac0d80, {0x1400011a000, 0x1000, 0x1000}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_unix.go:165 +0x1fc +net.(*netFD).Read(0x14002ac0d80, {0x1400011a000?, 0x14001215ab8?, 0x104b103ec?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/fd_posix.go:55 +0x28 +net.(*conn).Read(0x14001cc2000, {0x1400011a000?, 0x72?, 0x0?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/net.go:194 +0x34 +net/http.(*connReader).Read(0x14002a283f0, {0x1400011a000, 0x1000, 0x1000}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:798 +0x234 +bufio.(*Reader).fill(0x14002771920) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/bufio/bufio.go:113 +0xf8 +bufio.(*Reader).Peek(0x14002771920, 0x4) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/bufio/bufio.go:152 +0x60 +net/http.(*conn).serve(0x14002a0f8c0, {0x104f270d8, 0x1400029e360}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2137 +0x664 +created by net/http.(*Server).Serve in goroutine 14 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:3454 +0x3d8 + +goroutine 184524 [IO wait]: +internal/poll.runtime_pollWait(0x105972508, 0x72) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/netpoll.go:351 +0xa0 +internal/poll.(*pollDesc).wait(0x14000104400?, 0x14001b2aac1?, 0x0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 +internal/poll.(*pollDesc).waitRead(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:89 +internal/poll.(*FD).Read(0x14000104400, {0x14001b2aac1, 0x1, 0x1}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_unix.go:165 +0x1fc +net.(*netFD).Read(0x14000104400, {0x14001b2aac1?, 0x14002e93f58?, 0x104b100d4?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/fd_posix.go:55 +0x28 +net.(*conn).Read(0x14000192030, {0x14001b2aac1?, 0x0?, 0x1048307c4?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/net.go:194 +0x34 +net/http.(*connReader).backgroundRead(0x14001b2aab0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:690 +0x40 +created by net/http.(*connReader).startBackgroundRead in goroutine 184523 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:686 +0xc4 + +goroutine 184852 [syscall]: +github.com/mattn/go-sqlite3._Cfunc__sqlite3_step_internal(0x138029f60) + _cgo_gotypes.go:384 +0x34 +github.com/mattn/go-sqlite3.(*SQLiteRows).nextSyncLocked.func1(...) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2233 +github.com/mattn/go-sqlite3.(*SQLiteRows).nextSyncLocked(0x140004b6a80, {0x14004336a40, 0x4, 0x1048307c8?}) + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2233 +0x64 +github.com/mattn/go-sqlite3.(*SQLiteRows).Next.func1() + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2214 +0x34 +created by github.com/mattn/go-sqlite3.(*SQLiteRows).Next in goroutine 184525 + /Users/user/go/pkg/mod/github.com/mattn/go-sqlite3@v1.14.29/sqlite3.go:2213 +0x19c + +goroutine 182283 [IO wait]: +internal/poll.runtime_pollWait(0x1059723f0, 0x72) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/runtime/netpoll.go:351 +0xa0 +internal/poll.(*pollDesc).wait(0x14003b8b800?, 0x1400431da51?, 0x0) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 +internal/poll.(*pollDesc).waitRead(...) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_poll_runtime.go:89 +internal/poll.(*FD).Read(0x14003b8b800, {0x1400431da51, 0x1, 0x1}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/internal/poll/fd_unix.go:165 +0x1fc +net.(*netFD).Read(0x14003b8b800, {0x1400431da51?, 0x14002936690?, 0x0?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/fd_posix.go:55 +0x28 +net.(*conn).Read(0x14000780b20, {0x1400431da51?, 0x0?, 0x1048307c4?}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/net.go:194 +0x34 +net/http.(*connReader).backgroundRead(0x1400431da40) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:690 +0x40 +created by net/http.(*connReader).startBackgroundRead in goroutine 182282 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:686 +0xc4 + +goroutine 176361 [select]: +git.eeqj.de/sneak/routewatch/internal/server.(*Server).setupRoutes.TimeoutMiddleware.func2.1({0x12e422f28, 0x140065b2080}, 0x140023483c0) + /Users/user/dev/routewatch/internal/server/middleware.go:172 +0x1dc +net/http.HandlerFunc.ServeHTTP(0x130?, {0x12e422f28?, 0x140065b2080?}, 0x104b61710?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.Recoverer.func1({0x12e422f28?, 0x140065b2080?}, 0x140012138b8?) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/recoverer.go:45 +0x70 +net/http.HandlerFunc.ServeHTTP(0x1054f0bc0?, {0x12e422f28?, 0x140065b2080?}, 0x1?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.init.0.RequestLogger.func1.1({0x104f26998, 0x1400355e000}, 0x14002348280) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/logger.go:55 +0x110 +net/http.HandlerFunc.ServeHTTP(0x14002348280?, {0x104f26998?, 0x1400355e000?}, 0x104f11e20?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.RealIP.func1({0x104f26998, 0x1400355e000}, 0x14002348280) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/realip.go:36 +0x88 +net/http.HandlerFunc.ServeHTTP(0x104f270d8?, {0x104f26998?, 0x1400355e000?}, 0x104defbc0?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5/middleware.RequestID.func1({0x104f26998, 0x1400355e000}, 0x14002348140) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/middleware/request_id.go:76 +0x1f0 +net/http.HandlerFunc.ServeHTTP(0x104f27110?, {0x104f26998?, 0x1400355e000?}, 0x1054ed870?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2294 +0x38 +github.com/go-chi/chi/v5.(*Mux).ServeHTTP(0x1400018a2a0, {0x104f26998, 0x1400355e000}, 0x14002348000) + /Users/user/go/pkg/mod/github.com/go-chi/chi/v5@v5.2.2/mux.go:90 +0x280 +net/http.serverHandler.ServeHTTP({0x14001ccb800?}, {0x104f26998?, 0x1400355e000?}, 0x6?) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:3301 +0xbc +net/http.(*conn).serve(0x1400104e090, {0x104f270d8, 0x1400029e360}) + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:2102 +0x52c +created by net/http.(*Server).Serve in goroutine 14 + /nix/store/f4a0g1p943l61wfvqnpdr73v9bsyfhf2-go-1.24.4/share/go/src/net/http/server.go:3454 +0x3d8