New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MySQL Connection Cut Off #13
Comments
What version of Fe is this? |
0.6, as is available on DevBukkit. On 2/15/2013 1:37 PM, Nicholas wrote:
|
Hmm. Fe 0.6 should automatically reopen any closed SQL connection. Can you please test the latest development build to see if this problem still occurs? |
Sure thing, link? On 2/15/2013 1:42 PM, Nicholas wrote:
|
Which version of Bukkit is this build dependent on? I'm using the latest 2013-02-15 22:29:20 [SEVERE] Could not pass event PluginEnableEvent to On 2/15/2013 1:43 PM, Nicholas wrote:
|
Sorry, there was an issue in the code. Can you download the latest dev build and test it now? The issue should be fixed. |
2013-02-16 00:14:27 [SEVERE] The last packet successfully received from the server was 542,645 2013-02-16 00:14:27 [SEVERE] null On 2/15/2013 2:45 PM, Nicholas wrote:
|
2013-02-18 23:24:46 [SEVERE] Caused by: java.io.EOFException: Can not Tons of stuff like this, lag on join. On 2/15/2013 2:45 PM, Nicholas wrote:
|
Hmm. I'll be looking into this soon. It should of been fixed but I'll check it out again. |
It's interrupting MobArena since it's dependent on fees and prizes - fix would be awesome <3 I'm on IRC if you want to test with me, and my server's IP is mc.summaxr.com. |
Any progress? Let me know if I can help. Need this fixed. :( |
Still waiting on this, need proper economy stuff not interrupting other plugins :( |
Sorry, I've been pretty busy. I'll try to look into it soon. |
Good progress yesterday, hop on mumble or highlight me on IRC when you'd like to test more. :) |
You around tonight? Would love to get this fixed :) |
Any chance we can fix this today? Would be awesome to have it working for the week. |
Still hoping for a fix :( |
Bump :( |
Sorry, I've been busy. I'm still looking into it but it's a hard issue to fix. |
I'm guessing a couple hours at most on IRC talking with other devs will get it sorted :) |
Is there anything I can do as far as providing connections goes to help get this sorted faster? It's limiting my ability to implement a lot of new features. |
Any progress? |
I'm going to start writing for Fe again. I've really been trying to fix this but it's pretty hard to find the issue. I've been looking for a few weeks now. |
Like I've said before, you should pop on IRC and use it frequently - people are often very willing to help and while I don't know java myself there are plenty who do and can give advice if you're stuck on certain aspects. :) |
I got on IRC yesterday, didn't get much help. I'll be checking again tomorrow. |
Poke me next time, I was in the Bahamas. I'll help you ask the right questions. :) |
Have you got Skype? We could chat through there. |
Are you planning on fixing this ever? |
You may find this of use: Krinsdeath is usually on esper and probably willing to answer any questions you have. |
This really needs to be fixed, like ASAP. |
I could not agree more. |
What's the worst that this error causes? I've seen it a few times in console, but the plugin still appears to work fine afterwards. Just checking before moving to another economy plugin. |
If the connection has been dropped, the next attempt to use anything with MySQL fails. Allow me to present a few cases: MobArena users are fighting a boss. It takes a while and is quite difficult, so there's a great reward of 200 gold! Oh no, the MySQL connection has dropped and that gold is never assigned. Not only that, but the arena won't proceed because it can't pay out. Stuff like that. You can sort of account for this by spamming /money whenever you know you're gonna get paid soon or before you turn in a quest but that's ridiculous. At the very least you could just store pending transactions to .sql or something... |
Gotcha. To be honest, not sure why it's taken over 3 months to fix something like this. It's seems pretty trivial, although i personally have never dabbled in MySQL. I mean, isn't it as simple as doing some sort of keep alive ping to ensure the DB stays connected? Cant you just look at another plugins source to see how they do MySQL? I'm sure there are plenty of good examples that could be used - considering Fe is the only plugin I've ever had an issue with relating to this error. As much as I hate this error, Fe Economy is still the only simplistic and decent economy plugin there is. Would be a shame to have to change. |
Yes. What he said. |
If you can't find a legitimate fix, couldn't you just call "checkConnection()" every say, 30-60 seconds and verify the connection is always up? It appears the method works, but the problem is that after it times out for so long someone needs to issue the command just to have it fail then work again until it times out. |
checkConnection() is called when a query needs to be executed. It will open the database if closed. The issue only happens once and then the database opens up - keeping the database alive wouldn't help as the host Wahrheit is using closes the database after a minute. |
As do most hosts. |
Sorry, most shared hosts - which is sufficient for most webhosting and thus becomes most hosts. |
Well I'm not even using a "host" - I am running a clean install of MySQL on a Dedicated Server running CentOS. None of my other plugins have this disconnection issue, so its possible the defaults kill the connection after 60 seconds but why would this plugin be the only one effected by it? It seems like the other plugins handle it gracefully as I've never seen any MySQL errors before this. |
Any updates on this problem? |
lol |
^ I think that's the best explanation. Really though, I don't get it as much anymore since my server is quite popular and it never usually gets a chance to die, but over night, like normal, connection dies and first transaction in the morning fails. |
If only I were so lucky. We get activity in spurts and users freak out when they see the internal server error. |
This hopefully has been fixed by this commit: |
2013-02-15 20:53:22 [SEVERE] com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 215,163 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.
2013-02-15 20:53:22 [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
2013-02-15 20:53:22 [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
2013-02-15 20:53:22 [SEVERE] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
2013-02-15 20:53:22 [SEVERE] at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3082)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2968)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3516)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2273)
2013-02-15 20:53:22 [SEVERE] at org.melonbrew.fe.database.databases.SQLDB.loadAccountMoney(SQLDB.java:129)
2013-02-15 20:53:22 [SEVERE] at org.melonbrew.fe.database.Database.getAccount(Database.java:44)
2013-02-15 20:53:22 [SEVERE] at org.melonbrew.fe.API.getAccount(API.java:71)
2013-02-15 20:53:22 [SEVERE] at org.melonbrew.fe.command.commands.BalanceCommand.onCommand(BalanceCommand.java:34)
2013-02-15 20:53:22 [SEVERE] at org.melonbrew.fe.FeCommand.onCommand(FeCommand.java:125)
2013-02-15 20:53:22 [SEVERE] at org.melonbrew.fe.FeCommand.sendDefaultCommand(FeCommand.java:81)
2013-02-15 20:53:22 [SEVERE] at org.melonbrew.fe.FeCommand.onCommand(FeCommand.java:86)
2013-02-15 20:53:22 [SEVERE] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
2013-02-15 20:53:22 [SEVERE] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:186)
2013-02-15 20:53:22 [SEVERE] at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchCommand(CraftServer.java:514)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.PlayerConnection.handleCommand(PlayerConnection.java:980)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.PlayerConnection.chat(PlayerConnection.java:898)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.PlayerConnection.a(PlayerConnection.java:853)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.Packet3Chat.handle(Packet3Chat.java:44)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.NetworkManager.b(NetworkManager.java:290)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.PlayerConnection.d(PlayerConnection.java:113)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.ServerConnection.b(SourceFile:39)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.DedicatedServerConnection.b(SourceFile:30)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:598)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:224)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427)
2013-02-15 20:53:22 [SEVERE] at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
2013-02-15 20:53:22 [SEVERE] Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2529)
2013-02-15 20:53:22 [SEVERE] at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2979)
2013-02-15 20:53:22 [SEVERE] ... 30 more
I'm thinking that the plugin is trying to keep a connection open, and most hosts kill them after 60 seconds which is causing errors like players not receiving money for completed quests etc. It says that I don't have an account if that error is generated, but doing the command again shows that I do.
The text was updated successfully, but these errors were encountered: