Statistics

Requests by hour versions

Time Count latencyMs minMs maxMs
2026-10-08T00:51:49.455985Z 176 32.51704545454545 0 598
2026-10-07T23:51:49.455985Z 251 47 0 1838
2026-10-07T22:51:49.455985Z 251 16 0 567
2026-10-07T21:51:49.455985Z 453 46 0 4591
2026-10-07T20:51:49.455985Z 473 43 0 1136
2026-10-07T19:51:49.455985Z 430 47 0 3296
2026-10-07T18:51:49.455985Z 448 49 0 1427
2026-10-07T17:51:49.455985Z 474 63 0 482
2026-10-07T16:51:49.455985Z 368 64 0 971
2026-10-07T15:51:49.455985Z 527 87 0 5366
2026-10-07T14:51:49.455985Z 488 102 0 3108
2026-10-07T13:51:49.455985Z 384 99 0 1235
2026-10-07T12:51:49.455985Z 386 65 0 2441
2026-10-07T11:51:49.455985Z 430 61 0 2538
2026-10-07T10:51:49.455985Z 344 58 0 541
2026-10-07T09:51:49.455985Z 357 69 0 3850
2026-10-07T08:51:49.455985Z 287 76 0 2537
2026-10-07T07:51:49.455985Z 334 63 0 1685
2026-10-07T06:51:49.455985Z 436 68 0 717
2026-10-07T05:51:49.455985Z 428 83 0 1762
2026-10-07T04:51:49.455985Z 370 93 0 1921
2026-10-07T03:51:49.455985Z 368 80 0 2216
2026-10-07T02:51:49.455985Z 270 66 0 1960
2026-10-07T01:51:49.455985Z 283 15 0 545

Api versions

Api version Count
0 526
71 20569
63 2

Stop popularity map

Stop Loads
Hägerstensåsen T-bana (Stockholm kn) 6007
Alviksplan (Stockholm kn) 1
Arlanda Södra/ Arlanda Express (Sigtuna kn) 1
Lidingö Kottlasjön 1
Hässelby strandväg (Stockholm kn) 1
Almvägen (Nacka kn) 5971

Class stats

departures.SingleDepartureData
missing_metadata_VARMLANDSTRAFIK_key_TRAIN_714
missing_metadata_VARMLANDSTRAFIK_key_BUS_5554
missing_metadata_FLYGBUSSSARNA_key_BUS_97626
missing_metadata_FLYGBUSSSARNA_key_BUS_98584
missing_metadata_VARMLANDSTRAFIK_key_BUS_5058
missing_metadata_FLYGBUSSSARNA_key_BUS_9812
unknown_operator_618_name_Ressels rederi1
missing_metadata_VARMLANDSTRAFIK_key_BUS_40054
missing_metadata_VARMLANDSTRAFIK_key_BUS_40310
missing_metadata_VARMLANDSTRAFIK_key_BUS_4062
missing_metadata_FLYGBUSSSARNA_key_BUS_9601040
missing_metadata_FLYGBUSSSARNA_key_BUS_20238
main.ConfigProvider
missing_int_key_'items_to_render_in_response'_default_440005
missing_int_key_'minutes_too_far'_default_8040005
missing_int_key_'seconds_always_expired_dep'_default_9040276
missing_int_key_'minutes_departure_fetch'_default_706167
missing_int_key_'search_cache_expire_seconds'_default_1201
missing_int_key_'drop_meta_stops_in_search'_default_1176
missing_int_key_'thread_pool_size'_default_101
missing_int_key_'seconds_never_expired'_default_540276
missing_int_key_'minutes_all_departures_fetch'_default_720534
missing_int_key_'position_expire_hours'_default_11
missing_int_key_'stop_popularity_max_size'_default_1001
Loaded 1593 legacy mappings.4
missing_int_key_'operator_config_cache_expire_hours'_default_21
missing_int_key_'seconds_always_expired'_default_120040276
missing_int_key_'udp_tasks'_default_101
missing_int_key_'stop_popularity_expire_cache_minutes'_default_71
net.UdpServer
udp_task_worker_created11
rxBytes1180758
tx20500
udp_socket_started1
rx20500
txBytes2832955
departures.DepartureDataLoaderImpl
exception_loading_str_site_id: "740083514" 26
exception_loading_str_site_id: "740050933" 2
exception_loading_str_site_id: "740001617" 1
exception_loading_str_site_id: "740068377" 27
exception_loading_str_site_id: "740076759" 13
exception_loading_str_site_id: "740072465" 29
exception_loading_str_site_id: "740066188" 1
exception_loading_str_site_id: "740059049" 23
exception_loading_str_site_id: "740046190" 13
exception_loading_str_site_id: "740015887" 31
exception_loading_str_site_id: "740021717" 3
exception_loading_str_site_id: "740036576" 13
exception_loading_str_site_id: "740021653" 2
exception_loading_str_site_id: "740000031" 3
exception_loading_str_site_id: "740066669" 12
exception_loading_str_site_id: "74004557" 13
MainHandler
auto_fetcher_exception260
missing_operator_config_TAGAB7
auto_fetcher_running3720
no_departures_returned_legacy_config3173
auto_fetcher_started_interval_50_seconds1
no_departures_returned20384
missing_operator_config_VASTERVIK_EXPRESS8
auto_fetcher_complete3720
stop_search_cache_hit5
auto_fetcher_loaded_stop19945
missing_operator_config_MASEXPRESSEN3
missing_operator_config_WAXHOLMSBOLAGET245
LegacySiteHandled12236
se.locutus.MainServlet
Main servlet startup at Mon Oct 05 23:51:49 CEST 20261
http_request110
binary_request_input69
ClientUpdateMode
LEARNING_UPDATE_MODE4502
MANUAL_UPDATE_MODE30
ALWAYS_UPDATE_MODE16536
UPDATE_MODE_UNKNOWN29
UserCacheHit
false6132
true14694
db.StopPosition
updating_existing_departure13102
DepartureCaching
departure_cache_hit34635
departure_cache_filled_waiting330
departure_cache_miss6701
departures.TimeFunctionsKt
departure_time_passed10188
MainModuleKt
Reading config from file 10
net.UdpServer$requestResponse$1
udp_request20502

Exceptions

Class/line Count Example
java.lang.IllegalStateException:net.HttpClientModule:38188 java.lang.IllegalStateException: Failed to load https://api.resrobot.se/v2.1/departureBoard?id=740001617&format=json&duration=70&accessId=2d20b659-eeb6-4dd4-ad62-8850e64ccc24 statusCode: 503net.HttpClientModule.checkStatusCode(HttpClient.kt:38)net.HttpClientModule.access$checkStatusCode(HttpClient.kt:20)net.HttpClientModule$httpGet$1.invoke(HttpClient.kt:47)net.HttpClientModule$httpGet$1.invoke(HttpClient.kt:43)departures.DepartureDataLoaderImpl.invoke(DepartureDataLoaderImpl.kt:29)departures.DepartureDataLoaderImpl.invoke(DepartureDataLoaderImpl.kt:11)departures.DepartureCache.lockAndLoad(DepartureCache.kt:85)departures.DepartureCache.get(DepartureCache.kt:55)MainHandler.handleStopLoadData(MainHandler.kt:341)MainHandler.handleStopLoadData$default(MainHandler.kt:313)MainHandler.handleRequestInternal(MainHandler.kt:170)MainHandler.handleRequest(MainHandler.kt:145)MainHandler.invoke(MainHandler.kt:137)MainHandler.invoke(MainHandler.kt:41)net.UdpServer$requestResponse$1.invoke(UdpServer.kt:58)net.UdpServer$requestResponse$1.invoke(UdpServer.kt:52)net.UdpServer.start$lambda$1(UdpServer.kt:42)java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)java.base/java.lang.Thread.run(Thread.java:834)
com.google.protobuf.InvalidProtocolBufferException.InvalidWireTypeException:com.google.protobuf.InvalidProtocolBufferException:1421 com.google.protobuf.InvalidProtocolBufferException$InvalidWireTypeException: Protocol message tag had invalid wire type.com.google.protobuf.InvalidProtocolBufferException.invalidWireType(InvalidProtocolBufferException.java:142)com.google.protobuf.UnknownFieldSet$Builder.mergeFieldFrom(UnknownFieldSet.java:526)com.google.protobuf.GeneratedMessageV3$Builder.parseUnknownField(GeneratedMessageV3.java:887)se.locutus.proto.Ng$RequestData$Builder.mergeFrom(Ng.java:3435)se.locutus.proto.Ng$RequestData$2.parsePartialFrom(Ng.java:4422)se.locutus.proto.Ng$RequestData$2.parsePartialFrom(Ng.java:4414)com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:100)com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:120)com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:125)com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)se.locutus.proto.Ng$RequestData.parseFrom(Ng.java:3058)net.UdpServer$requestResponse$1.invoke(UdpServer.kt:56)net.UdpServer$requestResponse$1.invoke(UdpServer.kt:52)net.UdpServer.start$lambda$1(UdpServer.kt:42)java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)java.base/java.lang.Thread.run(Thread.java:834)
com.google.protobuf.InvalidProtocolBufferException:com.google.protobuf.InvalidProtocolBufferException:1333 com.google.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).com.google.protobuf.InvalidProtocolBufferException.invalidTag(InvalidProtocolBufferException.java:133)com.google.protobuf.CodedInputStream$ArrayDecoder.readTag(CodedInputStream.java:630)se.locutus.proto.Ng$RequestData$Builder.mergeFrom(Ng.java:3377)se.locutus.proto.Ng$RequestData$2.parsePartialFrom(Ng.java:4422)se.locutus.proto.Ng$RequestData$2.parsePartialFrom(Ng.java:4414)com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:100)com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:120)com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:125)com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)se.locutus.proto.Ng$RequestData.parseFrom(Ng.java:3058)net.UdpServer$requestResponse$1.invoke(UdpServer.kt:56)net.UdpServer$requestResponse$1.invoke(UdpServer.kt:52)net.UdpServer.start$lambda$1(UdpServer.kt:42)java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)java.base/java.lang.Thread.run(Thread.java:834)
java.sql.SQLIntegrityConstraintViolationException:com.mysql.cj.jdbc.exceptions.SQLError:118128 java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '740020755-31 Alvik strand Spårv' for key 'PRIMARY'com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061)com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009)com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320)com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994)org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:137)org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:137)db.StopPosition.maybeUpdateDepartures(StopPosition.kt:207)MainHandler$handleStopLoadData$2.invoke(MainHandler.kt:363)MainHandler$handleStopLoadData$2.invoke(MainHandler.kt:363)MainHandler.withConnection(MainHandler.kt:521)MainHandler.handleStopLoadData(MainHandler.kt:363)MainHandler.autoFetcherTask$lambda$0(MainHandler.kt:104)java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)java.base/java.lang.Thread.run(Thread.java:834)
java.lang.IllegalStateException:se.locutus.MainServlet:17541 java.lang.IllegalStateException: missing parameter 'protoJson'se.locutus.MainServlet.parseRequest(MainServlet.kt:175)se.locutus.MainServlet.doPost(MainServlet.kt:195)jakarta.servlet.http.HttpServlet.service(HttpServlet.java:520)jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1410)org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:529)org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598)org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1381)org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303)org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:192)org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)org.eclipse.jetty.server.Server.handle(Server.java:563)org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199)org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)java.base/java.lang.Thread.run(Thread.java:834)
com.google.protobuf.InvalidProtocolBufferException:com.google.protobuf.InvalidProtocolBufferException:1374 com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:137)com.google.protobuf.CodedInputStream$ArrayDecoder.checkLastTagWas(CodedInputStream.java:638)com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:102)com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:120)com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:125)com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)se.locutus.proto.Ng$RequestData.parseFrom(Ng.java:3058)net.UdpServer$requestResponse$1.invoke(UdpServer.kt:56)net.UdpServer$requestResponse$1.invoke(UdpServer.kt:52)net.UdpServer.start$lambda$1(UdpServer.kt:42)java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)java.base/java.lang.Thread.run(Thread.java:834)
java.lang.IllegalStateException:MainHandler:50213 java.lang.IllegalStateException: Can only handle PNG/ICO files! Was https://scontent-arn2-1.xx.fbcdn.net/v/t39.30808-1/374693015_707113914790239_4500964979836009876_n.jpg?stp=cp0_dst-jpg_p40x40&_nc_cat=105&ccb=1-7&_nc_sid=596444&_nc_ohc=AR6aT39zAjIAX9Iz9aP&_nc_ht=scontent-arn2-1.xx&oh=00_AfAac1BWWXAcYelRqj4m0j368OoRnthx5WbyQ5hzulFkFA&oe=65E03F15 for SNALLTAGETMainHandler.validateAndLoadOperatorConfig(MainHandler.kt:502)MainHandler.addAllDeparturesResponse(MainHandler.kt:422)MainHandler.handleStopLoadData(MainHandler.kt:348)MainHandler.handleStopLoadData$default(MainHandler.kt:313)MainHandler.handleRequestInternal(MainHandler.kt:170)MainHandler.handleRequest(MainHandler.kt:145)se.locutus.MainServlet.doStopsGet(MainServlet.kt:116)se.locutus.MainServlet.doGet(MainServlet.kt:146)jakarta.servlet.http.HttpServlet.service(HttpServlet.java:500)jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1410)org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:529)org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598)org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1381)org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303)org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:192)org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)org.eclipse.jetty.server.Server.handle(Server.java:563)org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199)org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)java.base/java.lang.Thread.run(Thread.java:834)