Exultant / Citadel

18 stars 104 forks source link

Tekkit stack trace, too many open connections. #74

Open ttk2 opened 12 years ago

ttk2 commented 12 years ago

2012-10-19 05:43:58 [SEVERE] Could not pass event BlockBreakEvent to Citadel org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:482) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:467) at eloraam.machine.TileBreaker.onBlockNeighborChange(TileBreaker.java:151) at eloraam.core.BlockExtended.doPhysics(BlockExtended.java:63) at eloraam.core.RedPowerLib.notifyBlock(RedPowerLib.java:25) at eloraam.core.RedPowerLib.updateCurrent(RedPowerLib.java:1220) at eloraam.machine.TileRedstoneTube.onBlockNeighborChange(TileRedstoneTube.java:124) at eloraam.core.BlockMultipart.doPhysics(BlockMultipart.java:29) at net.minecraft.server.World.k(World.java:528) at net.minecraft.server.World.applyPhysics(World.java:508) at net.minecraft.server.BlockRedstoneWire.g(BlockRedstoneWire.java:55) at net.minecraft.server.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:297) at eloraam.core.RedPowerLib.notifyBlock(RedPowerLib.java:25) at eloraam.core.RedPowerLib.updateIndirectNeighbors(RedPowerLib.java:48) at eloraam.core.TileExtended.updateBlockChange(TileExtended.java:98) at eloraam.logic.TileLogicPointer.timerUpdate(TileLogicPointer.java:219) at eloraam.logic.TileLogicPointer.q_(TileLogicPointer.java:413) at net.minecraft.server.World.tickEntities(World.java:1190) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:569) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:467) at net.minecraft.server.ThreadServerApplication.run(SourceFile:492) Caused by: javax.persistence.PersistenceException: java.sql.SQLException: Unsuccessfully waited [1000] millis for a connection to be returned. No connections are free. You need to Increase the max connections of [20] or look for a connection pool leak using datasource.xxx.capturestacktrace=true at com.avaje.ebeaninternal.server.transaction.TransactionManager.createQueryTransaction(TransactionManager.java:356) at com.avaje.ebeaninternal.server.core.DefaultServer.createQueryTransaction(DefaultServer.java:2021) at com.avaje.ebeaninternal.server.core.OrmQueryRequest.initTransIfRequired(OrmQueryRequest.java:241) at com.avaje.ebeaninternal.server.core.DefaultServer.findSet(DefaultServer.java:1259) at com.avaje.ebeaninternal.server.querydefn.DefaultOrmQuery.findSet(DefaultOrmQuery.java:910) at com.untamedears.citadel.dao.CitadelDao.findReinforcementsInChunk(CitadelDao.java:169) at com.untamedears.citadel.dao.CitadelCachingDao$ChunkCache.(CitadelCachingDao.java:127) at com.untamedears.citadel.dao.CitadelCachingDao.getCacheOfBlock(CitadelCachingDao.java:46) at com.untamedears.citadel.dao.CitadelCachingDao.findReinforcement(CitadelCachingDao.java:71) at com.untamedears.citadel.ReinforcementStorage.findReinforcement(ReinforcementStorage.java:33) at com.untamedears.citadel.ReinforcementManager.getReinforcement(ReinforcementManager.java:30) at com.untamedears.citadel.access.AccessDelegate.getReinforcement(AccessDelegate.java:64) at com.untamedears.citadel.listener.BlockListener.blockBreak(BlockListener.java:89) at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ... 22 more
Caused by: java.sql.SQLException: Unsuccessfully waited [1000] millis for a connection to be returned. No connections are free. You need to Increase the max connections of [20] or look for a connection pool leak using datasource.xxx.capturestacktrace=true at com.avaje.ebeaninternal.server.lib.sql.PooledConnectionQueue._getPooledConnectionWaitLoop(PooledConnectionQueue.java:329) at com.avaje.ebeaninternal.server.lib.sql.PooledConnectionQueue._getPooledConnection(PooledConnectionQueue.java:307) at com.avaje.ebeaninternal.server.lib.sql.PooledConnectionQueue.getPooledConnection(PooledConnectionQueue.java:247) at com.avaje.ebeaninternal.server.lib.sql.DataSourcePool.getPooledConnection(DataSourcePool.java:658) at com.avaje.ebeaninternal.server.lib.sql.DataSourcePool.getConnection(DataSourcePool.java:646) at com.avaje.ebeaninternal.server.transaction.TransactionManager.createQueryTransaction(TransactionManager.java:339) ... 38 more

ttk2 commented 12 years ago

This stack trace is from Civtest while testing the latest build provided here from what I can tell the source of the error is not tekkit but the number of requests to the DB being too high. In our other testing environments such as the test server we have had a minimal number of users while on the tekkit server we have machines creating literally hundreds of requests as soon as the server starts.

erocs commented 11 years ago

Pull #77 made some changes with the DAO cache to try and help with this. I won't call it a fix until I can figure out how to get the same generators working in Tekkit to see exactly how the machine (which calls eloraam.machine.TileBreaker) sends events to Citadel.

ttk2 commented 11 years ago

I can get you a copy of our tekkit config on the testing server, or email you a link to download it if you wish.