Large crafts crashing craft thread
Description:
Moving obscenely large crafts (600k) quickly results in craft corruption, and that craft's thread crashing, ignoring any further inputs
To Reproduce:
- Make ship of appropriate size
- Move, turn or cruise around for short duration
- Thread crashes with following warnings
Versions (please complete the following information):
- Movecraft: 7.0.0 prerelease 6
- Java OpenJDK 1.8
- Minecraft 1.12.2
Additional context Testing a small craft (With a piece that broke off of the original ship incidentally) resulted in expected behavior and no warnings.
The issue persists through server restarts.
Upon restarting the server, there are now moved and copied fragments of the ship floating around in previously traveled locations
Craft also erroneously fails to repilot on a "craft too large error" despite being in the middle of the air. Abuse.craft.txt
600k is obscenely large for a craft...
Could it be that the craft is eating up so much processing power that it killed itself?
It sounds like something with minecraft it self. A craft of 600k blocks is bound to cause issues with not just the plugin but minecraft it self and basically break the game and cause strange behavior
Sent from my iPad
On Mar 27, 2019, at 7:57 PM, Tyler [email protected] wrote:
600k is obscenely large for a craft...
Could it be that the craft is eating up so much processing power that it killed itself?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.
Right up until it did crash the thread, it was operating well. It has free reign on an E3-1240 v3, and at least according to my CPU charts and server performance metrics it was doing fine.
Keough might have a point in that any 600k craft will undoubtedly span much more than minecraft is designed to load at once. Although movecraft in theory loads all of the chunks for a craft I have had many instances of a craft being shredded because it was moving in unloaded chunks.
I'd advise attempting to find the upper limit of what size craft will still function correctly and that may help us diagnose what issue is causing it.
I don’t really think we can trust performance metrics and monitoring from the system it self. Minecraft wasn’t meant to handle crafts of 600k it technically wasn’t meant to handle something like movecraft. Usually on enterprise systems if a process takes up such an enormous amount of resources that it would crash the system usually the system will forcefully kill that task to prevent a crash of the physical server it self. I would put it up to both minecraft and the system it self.
Sent from my iPad
On Mar 27, 2019, at 8:04 PM, botcrusher [email protected] wrote:
Right up until it did crash the thread, it was operating well. It has free reign on an E3-1240 v3, and at least according to my CPU charts and server performance metrics it was doing fine.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.
Usually on enterprise systems if a process takes up such an enormous amount of resources [...] usually the system will forcefully kill that task
I highly doubt it, on Airship Pirates we are constantly running out hardware to it's limits and have never had our "enterprise systems" kill it. IMO this likely was a case of movecraft/bukkit not loading a chunk in time and the craft not being moved correctly as a result.
It's a dedicated box I have full control over if that's what you're wondering. As part of more testing, I made a new craft and got about three blocks sideways before movecraft freaked out.
I'll play with dimensions and ramp up my server's chunkloading to see if that prevents it. At the time of the most recent ship crash, the server was only using about 50% of a thread.
Loading about 4GB worth of chunks (view distance 30) seems to have worked around the issue.
Perhaps Movecraft should check or forceload any chunks it's about to move into?
(Side note, long time no see Tyler.)
Perhaps Movecraft should check or forceload any chunks it's about to move into?
It is supposed to be doing this already. I haven't tested if it actually does or not, but I usually try to take bukkit's (and sometimes yarro's) code at face value for sanity sake. I do know for a fact that it does not always work correctly and has taken huge chunks out of ships that were cruising without a player nearby (and somehow movecraft detected this change and sunk the crafts). If it's an internal bukkit issue then we probably can't solve it without contacting the devs themselves, if it is movecraft's issue then we should attempt to debug it.
(Side note, long time no see Tyler.)
Good to see ya back around.
There's most likely an issue with an async call being made somewhere in the async task where its required by Bukkit to be synchronized with the main thread. It's probably crashing due to a race condition that is only being brought out due to the async section of craft translation taking so much longer than usual.
Has anyone tried this on one of the 8.0 alphas? I'd be interested to see what edge cases this exposes in the codebase.