lavalink-devs / Lavalink

Standalone audio sending node based on Lavaplayer.
https://lavalink.dev/
MIT License
1.56k stars 668 forks source link

Large playlists trigger 503 timeouts due to not returning in time. #456

Closed initzx closed 3 years ago

initzx commented 3 years ago

Description

Loading huge playlists with over 3k tracks will timeout the internal REST server before the playlist has finished loading. This seems to happen if IPv6 Load-balancing is enabled, as it takes a lot of time to send each request to fetch all of the tracks, the internal REST server decides to time out before all of the tracks have been fetched. This is reflected in the logs as follows:

***Here we start loading the playlist***: 2021-03-20 13:40:06.999  INFO 155474 --- [ XNIO-1 task-15] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://www.youtube.com/playlist?list=PLH7WMWpWl4GUpYAbFYoQZbIUGDN2MMokC"
2021-03-20 13:40:07.012  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:7493:501c:9393:57e2:5468
2021-03-20 13:40:08.193  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:7bc6:80b9:3676:37e6:5717
2021-03-20 13:40:09.394  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:7956:c88d:3742:e10f:6ed8
2021-03-20 13:40:10.609  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:a28:f1d0:1228:e2ae:b121
2021-03-20 13:40:11.729  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:2d73:fbe9:aea6:c06c:6c02
2021-03-20 13:40:12.882  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:4a02:47c0:95f4:b0d5:42bd
2021-03-20 13:40:14.097  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:45e0:5eb6:3df7:f12b:6daa
2021-03-20 13:40:15.288  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:6261:f2c5:54eb:3539:27b8
2021-03-20 13:40:16.528  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:6fbd:64f6:9d05:268:7f08
2021-03-20 13:40:17.879  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:1d31:db21:9eee:d15d:1eba
2021-03-20 13:40:19.198  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:42d:4300:8f38:ddfc:ec4d
2021-03-20 13:40:20.443  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:dd1:2d31:4f37:faec:4815
2021-03-20 13:40:21.711  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:3910:7571:1656:46cf:c4ff
2021-03-20 13:40:23.021  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:2ebe:2749:7de9:fedb:4124
2021-03-20 13:40:24.206  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:4208:b02c:9258:7092:fa7a
2021-03-20 13:40:25.511  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:5b2b:a880:43bb:38a8:1f88
2021-03-20 13:40:26.669  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:1241:9766:4d3f:5fda:c146
2021-03-20 13:40:27.843  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:6f2c:9916:79c:193c:75a8
2021-03-20 13:40:29.143  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:1077:eb68:bba5:68bb:66f7
2021-03-20 13:40:30.550  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:72f3:450e:cde2:2b49:fe2b
2021-03-20 13:40:31.904  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:32c3:38a8:3374:1005:ffd2
2021-03-20 13:40:33.278  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:1470:6b80:563:7d2e:5e7b
2021-03-20 13:40:34.761  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:15b0:1920:9018:dd58:f675
2021-03-20 13:40:36.078  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:1c44:d20f:2a7a:f739:b06a
***The server times out before it's done loading and returns with a 503***:  2021-03-20 13:40:37.028  WARN 155474 --- [ XNIO-1 task-16] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.context.request.async.AsyncRequestTimeoutException]
2021-03-20 13:40:37.333  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:451b:d399:3fff:e472:f528
2021-03-20 13:40:38.769  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:6877:be78:9902:61f2:c186
2021-03-20 13:40:40.024  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:27a3:9938:1943:d996:a3ac
2021-03-20 13:40:41.410  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:2525:8b8a:dd8e:37d3:42d2
2021-03-20 13:40:42.731  INFO 155474 --- [ader-2-thread-1] c.s.l.e.y.tools.ip.Ipv6Block             : /dead:beef:7d52:4729:2feb:23d2:d68f:9d9c
***Playlist finally loaded***:  2021-03-20 13:40:44.085  INFO 155474 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded playlist Chill

Version info

Client used: My own custom library

        Version:        29fb37958c3514386c58fc62b6099d5c5f59a5ac-SNAPSHOT
        Build:          1215
        Build time:     07.03.2021 15:31:10 UTC
        Branch          dev
        Commit:         29fb379
        Commit time:    07.03.2021 15:28:32 UTC
        JVM:            14.0.2
        Lavaplayer      1.3.73
initzx commented 3 years ago

Adding

  mvc:
   async:
     request-timeout: -1

To the root level of application.yml seems to fix it