devoxin / Lavalink.py

A wrapper for Lavalink in Python, which aims to be powerful and intuitive.
https://lavalink.readthedocs.io/
MIT License
225 stars 96 forks source link

Websockets versions are incompatible #26

Closed ThatNerdyPikachu closed 6 years ago

ThatNerdyPikachu commented 6 years ago
wsproto 0.11.0 has requirement h11~=0.7.0, but you'll have h11 0.8.0 which is incompatible.
discord-py 1.0.0a1467+g6b75179 has requirement websockets<4.0,>=3.0, but you'll have websockets 5.0.1 which is incompatible.

This results in the bot not playing anything.

AndyTempel commented 6 years ago

You can upgrade websockets to 5.0.1 without any issues. discord.py websockets were downgraded due to an error, but that error has been fixed since. Downgrade: https://github.com/Rapptz/discord.py/commit/e04629999ba32142ba11c20191fca5eed60930f3 Websocket issue: https://github.com/aaugustin/websockets/issues/350

shikhir-arora commented 6 years ago

What @AndyTempel said is correct. We run our own branch of d.py which is near-identical to the upstream and automatically syncs updates with backstroke, but we run the latest websockets from the master branch and also aiohttp. The websocket issue has not only been fixed, it's been really looked into over the last 30 days. There are at least 7-8 commits dedicated to this. It was just that the developer was busy and didn't get a chance to review PRs that had fixed the issue long before.

ThatNerdyPikachu commented 6 years ago

Thing is, I just reinstalled Discord.py today... And it still has that error (latest rewrite pulled from GH)

devoxin commented 6 years ago

The error you provided can be ignored. It's more or less a warning but shouldn't affect the library's operation unless Danny hasn't patched it (which based on the replies I believe he has)

ThatNerdyPikachu commented 6 years ago

It seems like he hasn't, this there are no errors on either Lavalink, nor the bots logs. It says that it's playing (on the user side), but it's not playing...

Did that make sense?

devoxin commented 6 years ago

What websockets version are you running?

shikhir-arora commented 6 years ago

The library isn't patched - you have to upgrade manually.

ThatNerdyPikachu commented 6 years ago

Let me test that, I'll get back to you. What you said made it seem like that it was automatic, sorry for the confusion!

shikhir-arora commented 6 years ago

Oh sorry, I didn't mean it that way. I meant that we have a fork of the library on GitHub which I pull everything from instead of the main rewrite branch of discord.py - so yeah, in our case it is automatic as our websockets and aiohttp are defined to use latest versions, but you'd have to upgrade manually.

ThatNerdyPikachu commented 6 years ago

Nope, when running python -m pip install websockets --upgrade after pulling a fresh copy of rewrite:


discord-py 1.0.0a1467+g6b75179 has requirement websockets<4.0,>=3.0, but you'll have websockets 5.0.1 
which is incompatible.
shikhir-arora commented 6 years ago

Your bot may be trying to check requirements and pulling discord.py again after you upgrade on startup so it errors.

Try:

python3 -m pip install --upgrade --force-reinstall websockets

ThatNerdyPikachu commented 6 years ago

Guessing now this is a good error, since it updated? wsproto 0.11.0 has requirement h11~=0.7.0, but you'll have h11 0.8.0 which is incompatible. discord-py 1.0.0a1467+g6b75179 has requirement websockets<4.0,>=3.0, but you'll have websockets 5.0.1 which is incompatible.

ThatNerdyPikachu commented 6 years ago

(at least I think it did)

AndyTempel commented 6 years ago

Yes, you have websockets version 5.0.1, which is good. One more thing: try enabling debug on the logger, to see if lavalink and the client are exchanging messages.

In the main file:

import logging

logger = logging.getLogger()
logging.basicConfig(level=logging.DEBUG)
logger.setLevel(logging.DEBUG)
AndyTempel commented 6 years ago

You should see something like that in the logs:

2018-06-07 14:30:37,946 DEBUG client > Frame(fin=True, opcode=10, data=b'', rsv1=False, rsv2=False, rsv3=False)
2018-06-07 14:30:38,144 DEBUG client < Frame(fin=True, opcode=1, data=b'{"op":"playerUpdate","state":{"position":33540,"time":1528374638194},"guildId":"404731402429530132"}', rsv1=False, rsv2=False, rsv3=False)
ThatNerdyPikachu commented 6 years ago

@AndyTempel I do, but alas, no sound still.

ThatNerdyPikachu commented 6 years ago

(note: this only happened after moving to a VPs, yes, I edited state.py)

AndyTempel commented 6 years ago

Then this is not the clients issue. Also check what volume do you have set in lavalink and discord. But if you see that lavalink and the client are conversing then this is not the clients issue.

devoxin commented 6 years ago

state.py doesn't need editing on V2+

ThatNerdyPikachu commented 6 years ago

Is Lavalink supposed to log anything else?


of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]                   
2|pika.py- | [12:21:33] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/**] onto handler of type 
[class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]                           
2|pika.py- | [12:21:33] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/**/favicon.ico] onto hand
ler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]               
2|pika.py- | [12:21:34] [ INFO ] [AnnotationMBeanExporter] Registering beans for JMX exposure on start
up                                                                                                    
2|pika.py- | [12:21:34] [ INFO ] [Http11NioProtocol] Starting ProtocolHandler ["http-nio-0.0.0.0-2333"
]                                                                                                     
2|pika.py- | [12:21:34] [ INFO ] [NioSelectorPool] Using a shared selector for servlet write/read
2|pika.py- | [12:21:34] [ INFO ] [TomcatWebServer] Tomcat started on port(s): 2333 (http) with context
 path ''                                                                                              
2|pika.py- | [12:21:34] [ INFO ] [Launcher] Started Launcher in 7.803 seconds (JVM running for 9.489)
2|pika.py- | [14:12:28] [ INFO ] [[/]] Initializing Spring FrameworkServlet 'dispatcherServlet'
2|pika.py- | [14:12:28] [ INFO ] [DispatcherServlet] FrameworkServlet 'dispatcherServlet': initializat
ion started                                                                                           
2|pika.py- | [14:12:28] [ INFO ] [DispatcherServlet] FrameworkServlet 'dispatcherServlet': initializat
ion completed in 39 ms                                                                                
2|pika.py- | [14:12:28] [ INFO ] [AudioLoaderRestHandler] GET /loadtracks
2|pika.py- | [14:12:29] [ INFO ] [AudioLoader] Loaded playlist Search results for: pikachu theme song
2|pika.py- | [14:25:44] [ INFO ] [AudioLoaderRestHandler] GET /loadtracks
2|pika.py- | [14:25:45] [ INFO ] [AudioLoader] Loaded playlist Search results for: pikachu theme song
devoxin commented 6 years ago

Should be logging any received voice server/state updates and also a message containing op: play

ThatNerdyPikachu commented 6 years ago

@Devoxin here's the bots side:


0|pika.py- | [14:12:28] [lavalink.py] [DEBUG] Requesting tracks for query ytsearch:pikachu theme song
0|pika.py- | [14:12:28] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'s
essionId': '11741c4092f2d85ee25d3a481cfd8ccf', 'op': 'voiceUpdate', 'guildId': '406656930510143488', '
event': {'token': '94c340692581ecc7', 'guild_id': '406656930510143488', 'endpoint': 'us-central130.dis
cord.gg:80'}}                                                                                         
0|pika.py- | [14:12:30] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'play', 'guildId': '406656930510143488', 'track': 'QAAAhgIAIkJsdWUgU2F0ZWxsaXRlIOKAkyBQaWthY2h1J3M
gVGhlbWUACkF2aWVuY2xvdWQAAAAAAAHkYAALQkJaVkdEb0dEbG8AAQAraHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1CQ
lpWR0RvR0RsbwAHeW91dHViZQAAAAAAAAAA'}                                                                 
0|pika.py- | [14:12:30] [lavalink.py] [DEBUG] Dispatching event of type TrackStartEvent to 1 hooks
0|pika.py- | [14:12:39] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'stop', 'guildId': '406656930510143488'}                                                          
0|pika.py- | [14:12:39] [lavalink.py] [DEBUG] Dispatching event of type QueueEndEvent to 1 hooks
0|pika.py- | [14:12:41] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'stop', 'guildId': '406656930510143488'}                                                          
0|pika.py- | [14:25:44] [lavalink.py] [DEBUG] Requesting tracks for query ytsearch:pikachu theme song
0|pika.py- | [14:25:44] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'s
essionId': '11741c4092f2d85ee25d3a481cfd8ccf', 'op': 'voiceUpdate', 'guildId': '406656930510143488', '
event': {'token': '741f5ca8936d24f4', 'guild_id': '406656930510143488', 'endpoint': 'us-central130.dis
cord.gg:80'}}                                                                                         
0|pika.py- | [14:25:45] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'play', 'guildId': '406656930510143488', 'track': 'QAAAhgIAIkJsdWUgU2F0ZWxsaXRlIOKAkyBQaWthY2h1J3M
gVGhlbWUACkF2aWVuY2xvdWQAAAAAAAHkYAALQkJaVkdEb0dEbG8AAQAraHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1CQ
lpWR0RvR0RsbwAHeW91dHViZQAAAAAAAAAA'}                                                                 
0|pika.py- | [14:25:45] [lavalink.py] [DEBUG] Dispatching event of type TrackStartEvent to 1 hooks
0|pika.py- | [14:25:55] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'pause', 'guildId': '406656930510143488', 'pause': True}                                          
0|pika.py- | [14:25:59] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'pause', 'guildId': '406656930510143488', 'pause': False}                                         
0|pika.py- | [2018-06-07 14:54:04,240] 127.0.0.1 GET /stats h11 200 42 11303
0|pika.py- | [2018-06-07 14:54:11,155] 127.0.0.1 GET /stats h11 200 42 10270
devoxin commented 6 years ago

Send called before websocket ready, there's no indication that Lavalink.py connected to Lavalink, check your Client parameters match your Lavalink configuration

ThatNerdyPikachu commented 6 years ago

@Devoxin


0|pika.py- | future: <Task finished coro=<WebSocket.connect() done, defined at /root/pika.py/venv/lib/
python3.6/site-packages/lavalink/WebSocket.py:30> exception=InvalidMessage('Malformed HTTP message',)>
0|pika.py- | Traceback (most recent call last):
0|pika.py- |   File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/client.py", line 80, in
 read_http_response                                                                                   
0|pika.py- |     status_code, headers = yield from read_response(self.reader)
0|pika.py- |   File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/http.py", line 120, in 
read_response                                                                                         
0|pika.py- |     status_line = yield from read_line(stream)
0|pika.py- |   File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/http.py", line 196, in 
read_line                                                                                             
0|pika.py- |     raise ValueError("Line without CRLF")
0|pika.py- | ValueError: Line without CRLF
0|pika.py- | 
0|pika.py- | The above exception was the direct cause of the following exception:
0|pika.py- | 
0|pika.py- | Traceback (most recent call last):
0|pika.py- |   File "/root/pika.py/venv/lib/python3.6/site-packages/lavalink/WebSocket.py", line 52, i
n connect                                                                                             
0|pika.py- |     self._ws = await websockets.connect(self._uri, loop=self._loop, extra_headers=headers
)                                                                                                     
0|pika.py- |   File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/client.py", line 404, i
n __await__                                                                                           
0|pika.py- |     extra_headers=protocol.extra_headers,
0|pika.py- |   File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/client.py", line 262, i
n handshake                                                                                           
0|pika.py- |     status_code, response_headers = yield from self.read_http_response()
0|pika.py- |   File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/client.py", line 82, in
 read_http_response                                                                                   
0|pika.py- |     raise InvalidMessage("Malformed HTTP message") from exc
0|pika.py- | websockets.exceptions.InvalidMessage: Malformed HTTP message
devoxin commented 6 years ago

Does the websocket host & port match the address in your lavalink config?

ThatNerdyPikachu commented 6 years ago

I think?


server: # REST server                                                                                 
  port: 2333                                                                                          
  address: 0.0.0.0                                                                                    
lavalink:                                                                                             
  server:                                                                                             
    password: "[redacted]"                                                                       
    ws:                                                                                               
      port: 80                                                                                        
      host: 0.0.0.0                                                                                   
    sources:                                                                                          
      youtube: true                                                                                   
      bandcamp: true                                                                                  
      soundcloud: true                                                                                
      twitch: true                                                                                    
      vimeo: true                                                                                     
      mixer: true                                                                                     
      http: true                                                                                      
      local: false                                                                                    
    sentryDsn: ""                                                                                     
    bufferDurationMs: 400                                                                             
    youtubePlaylistLoadLimit: 600
devoxin commented 6 years ago

Judging by this

0|pika.py- | [2018-06-07 14:54:04,240] 127.0.0.1 GET /stats h11 200 42 11303
0|pika.py- | [2018-06-07 14:54:11,155] 127.0.0.1 GET /stats h11 200 42 10270

You have another webserver running (integrated with your bot?) Try change the WS port from 80 as this may be conflicting

AndyTempel commented 6 years ago

Do you also have a web server on the same machine? Also please show your Lavalink.py client config (client object) without your password of course.

ThatNerdyPikachu commented 6 years ago

Oh, yes. I do have a WS. Let me change that...

ThatNerdyPikachu commented 6 years ago

@AndyTempel When I changed the port...


[17:07:00] [ INFO ] [Launcher] Starting Launcher on ubuntu with PID 75445 (/root/lavalink/Lavalink.jar
 started by root in /root/lavalink)                                                                   
[17:07:00] [ INFO ] [Launcher] No active profile set, falling back to default profiles: default       
[17:07:00] [ INFO ] [AnnotationConfigServletWebServerApplicationContext] Refreshing org.springframewor
k.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6d00a15d: startup date [
Thu Jun 07 17:07:00 UTC 2018]; root of context hierarchy                                              
[17:07:04] [ INFO ] [TomcatWebServer] Tomcat initialized with port(s): 2333 (http)                    
[17:07:04] [ INFO ] [Http11NioProtocol] Initializing ProtocolHandler ["http-nio-0.0.0.0-2333"]        
[17:07:04] [ INFO ] [StandardService] Starting service [Tomcat]                                       
[17:07:04] [ INFO ] [StandardEngine] Starting Servlet Engine: Apache Tomcat/8.5.28                    
[17:07:04] [ INFO ] [AprLifecycleListener] The APR based Apache Tomcat Native library which allows opt
imal performance in production environments was not found on the java.library.path: [/usr/java/package
s/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni
:/lib:/usr/lib]                                                                                       
[17:07:04] [ INFO ] [[/]] Initializing Spring embedded WebApplicationContext                          
[17:07:04] [ INFO ] [ContextLoader] Root WebApplicationContext: initialization completed in 4007 ms   
[17:07:05] [ INFO ] [ServletRegistrationBean] Servlet dispatcherServlet mapped to [/]                 
[17:07:05] [ INFO ] [FilterRegistrationBean] Mapping filter: 'characterEncodingFilter' to: [/*]       
[17:07:05] [ INFO ] [FilterRegistrationBean] Mapping filter: 'hiddenHttpMethodFilter' to: [/*]        
[17:07:05] [ INFO ] [FilterRegistrationBean] Mapping filter: 'httpPutFormContentFilter' to: [/*]      
[17:07:05] [ INFO ] [FilterRegistrationBean] Mapping filter: 'requestContextFilter' to: [/*]          
[17:07:05] [ INFO ] [GarbageCollectionMonitor] GC monitoring enabled, reporting results every 2 minute
s.                                                                                                    
[17:07:05] [ INFO ] [AudioSendFactoryConfiguration] OS: Linux, Arch: amd64                            
[17:07:05] [ INFO ] [AudioSendFactoryConfiguration] JDA-NAS supported system detected. Enabled native 
audio sending.                                                                                        
[17:07:05] [ INFO ] [AudioSendFactoryConfiguration] Setting buffer to 400ms                           
[17:07:05] [ INFO ] [AudioSendFactoryConfiguration] Setting playlist load limit to 600                
[17:07:05] [ INFO ] [Launcher] No sentry dsn found, turning off sentry.                               
[17:07:05] [ ERROR] [SocketServer] Caught exception in websocket                                      
java.net.BindException: Address already in use                                                        
        at sun.nio.ch.Net.bind0(Native Method)                                                        
        at sun.nio.ch.Net.bind(Net.java:433)                                                          
        at sun.nio.ch.Net.bind(Net.java:425)                                                          
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)                  
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)                           
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)                           
        at org.java_websocket.server.WebSocketServer.run(WebSocketServer.java:315)                    
        at java.lang.Thread.run(Thread.java:748)                                                      
Exception in thread "WebsocketSelector18" java.lang.NullPointerException                              
        at org.java_websocket.server.WebSocketServer.stop(WebSocketServer.java:257)                   
        at org.java_websocket.server.WebSocketServer.stop(WebSocketServer.java:263)                   
        at org.java_websocket.server.WebSocketServer.handleFatal(WebSocketServer.java:539)            
        at org.java_websocket.server.WebSocketServer.run(WebSocketServer.java:321)                    
        at java.lang.Thread.run(Thread.java:748)                                                      
[17:07:07] [ INFO ] [RequestMappingHandlerAdapter] Looking for @ControllerAdvice: org.springframework.
boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6d00a15d: startup date [Th
u Jun 07 17:07:00 UTC 2018]; root of context hierarchy                                                
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/loadtracks],methods=[GET],produces=[appl
ication/json]}" onto public java.lang.String lavalink.server.player.AudioLoaderRestHandler.getLoadTrac
ks(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,java.lang.String) thro
ws java.io.IOException,java.lang.InterruptedException                                                 
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/decodetrack],methods=[GET],produces=[app
lication/json]}" onto public java.lang.String lavalink.server.player.AudioLoaderRestHandler.getDecodeT
rack(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,java.lang.String) th
rows java.io.IOException                                                                              
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/decodetracks],methods=[POST],consumes=[a
pplication/json],produces=[application/json]}" onto public java.lang.String lavalink.server.player.Aud
ioLoaderRestHandler.postDecodeTracks(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServ
letResponse,java.lang.String) throws java.io.IOException                                              
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/debug/nashorn],methods=[POST]}" onto pub
lic java.lang.String lavalink.server.util.DebugRestHandler.getLoadTracks(javax.servlet.http.HttpServle
tRequest,javax.servlet.http.HttpServletResponse,java.lang.String,java.lang.String)                    
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/error],produces=[text/html]}" onto publi
c org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.erro
r.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletR
esponse)                                                                                              
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/error]}" onto public org.springframework
.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoc
onfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)          
[17:07:07] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/webjars/**] onto handler of type [clas
s org.springframework.web.servlet.resource.ResourceHttpRequestHandler]                                
[17:07:07] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/**] onto handler of type [class org.sp
ringframework.web.servlet.resource.ResourceHttpRequestHandler]                                        
[17:07:07] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/**/favicon.ico] onto handler of type [
class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]                            
[17:07:07] [ INFO ] [AnnotationMBeanExporter] Registering beans for JMX exposure on startup           
[17:07:07] [ INFO ] [Http11NioProtocol] Starting ProtocolHandler ["http-nio-0.0.0.0-2333"]            
[17:07:07] [ ERROR] [StandardService] Failed to start connector [Connector[HTTP/1.1-2333]]            
org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-2333]]          
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)                       
        at org.apache.catalina.core.StandardService.addConnector(StandardService.java:225)            
        at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors
(TomcatWebServer.java:255)                                                                            
        at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:197
)                                                                                                     
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebSer
ver(ServletWebServerApplicationContext.java:300)                                                      
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefre
sh(ServletWebServerApplicationContext.java:162)                                                       
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationC
ontext.java:552)                                                                                      
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(Ser
vletWebServerApplicationContext.java:140)                                                             
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)             
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:388)      
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:327)                 
        at lavalink.server.Launcher.main(Launcher.java:54)                                            
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                                
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)              
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)      
        at java.lang.reflect.Method.invoke(Method.java:498)                                           
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)             
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)                          
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)                          
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)                      
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed                      
        at org.apache.catalina.connector.Connector.startInternal(Connector.java:1021)                 
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)                       
        ... 19 common frames omitted                                                                  
Caused by: java.net.BindException: Address already in use                                             
        at sun.nio.ch.Net.bind0(Native Method)                                                        
        at sun.nio.ch.Net.bind(Net.java:433)                                                          
        at sun.nio.ch.Net.bind(Net.java:425)                                                          
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)                  
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)                           
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210)                          
        at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1150)              
        at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:591)                        
        at org.apache.catalina.connector.Connector.startInternal(Connector.java:1018)                 
        ... 20 common frames omitted                                                                  
[17:07:07] [ INFO ] [Http11NioProtocol] Pausing ProtocolHandler ["http-nio-0.0.0.0-2333"]             
[17:07:07] [ INFO ] [StandardService] Stopping service [Tomcat]                                       
[17:07:07] [ INFO ] [LifecycleBase] The stop() method was called on component [StandardServer[-1]] aft
er stop() had already been called. The second call will be ignored.                                   
[17:07:07] [ INFO ] [Http11NioProtocol] Stopping ProtocolHandler ["http-nio-0.0.0.0-2333"]            
[17:07:07] [ INFO ] [Http11NioProtocol] Destroying ProtocolHandler ["http-nio-0.0.0.0-2333"]          
[17:07:07] [ INFO ] [GarbageCollectionMonitor] GC monitoring disabled.    
ThatNerdyPikachu commented 6 years ago

Config: https://gist.github.com/ThatNerdyPikachu/4782e0c40c843fbbccde32d1aafc1573

devoxin commented 6 years ago

Tomcat webserver couldn't start because the address/port is in use. Try change the port your REST server uses.

ThatNerdyPikachu commented 6 years ago

Changed ports, and it just doesn't connect. Debug log shows nothing of interest Lavalink actually starts up though, and the ports are set in Client, but it doesn't connect.

ThatNerdyPikachu commented 6 years ago

If it helps at all, it queries successfully,,and it says now playing and such

devoxin commented 6 years ago

Can you dump your code somewhere? (e.g. Hastebin)

ThatNerdyPikachu commented 6 years ago

It's literally the example cog code (for now), with the ports changed

ThatNerdyPikachu commented 6 years ago

It successfully sends stuff to the REST server, but not to WS

devoxin commented 6 years ago

REST is a different matter. Could you try call lavalinkClient.WS.connect()?

ThatNerdyPikachu commented 6 years ago

all its doing is it says "connecting..." but never finishes

ThatNerdyPikachu commented 6 years ago

[21:57:06] [lavalink.py] [DEBUG] Preparing to connect to Lavalink
[21:57:06] [lavalink.py] [DEBUG]     with URI: ws://localhost:5244
[21:57:06] [lavalink.py] [DEBUG]     with headers: {'Authorization': '[redacted]', 'Num-Shards': 1, 'User-Id': 412042272268615680}
[21:57:06] [lavalink.py] [INFO] Connecting to Lavalink...
ThatNerdyPikachu commented 6 years ago

lavalink shows nothing on its side

ThatNerdyPikachu commented 6 years ago

@Devoxin It finally connects! Yet, when I try to play...


Uncaught exception in thread "WebSocketWorker-16":java.lang.NoClassDefFoundError: com/sedmelluq/discord/lavaplayer/jdaudp/NativeAudioSendFactory
        at lavalink.server.io.SocketContext.lambda$getAudioSendFactory$7(SocketContext.java:146)
        at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
        at lavalink.server.io.SocketContext.getAudioSendFactory(SocketContext.java:141)
        at lavalink.server.io.SocketContext.lambda$getCore$3(SocketContext.java:90)
        at java.util.HashMap.computeIfAbsent(HashMap.java:1127)
        at lavalink.server.io.SocketContext.getCore(SocketContext.java:87)
        at lavalink.server.io.SocketServer.onMessage(SocketServer.java:137)
        at org.java_websocket.server.WebSocketServer.onWebsocketMessage(WebSocketServer.java:551)
        at org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:696)
        at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:367)
        at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:212)
        at org.java_websocket.server.WebSocketServer$WebSocketWorker.run(WebSocketServer.java:888)
Caused by: java.lang.ClassNotFoundException: com.sedmelluq.discord.lavaplayer.jdaudp.NativeAudioSendFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 12 more
shikhir-arora commented 6 years ago

What version of Java are you using? Upgrade to v10 if you can, especially if you're on v8.

ThatNerdyPikachu commented 6 years ago

Fixed by upgrading Lavalink to dev branch