Multiverse / Multiverse-Inventories

BSD 3-Clause "New" or "Revised" License
93 stars 81 forks source link

Server crashes with [SEVERE] Exception in thread "MV-Inv Profile Write Thread" - due to LARGE json-s #128

Closed Citaborg closed 10 years ago

Citaborg commented 11 years ago

2013-01-15 14:50:32 [SEVERE] Exception in thread "MV-Inv Profile Write Thread" 2013-01-15 14:50:32 [SEVERE] java.lang.OutOfMemoryError: Java heap space 2013-01-15 14:50:32 [SEVERE] at java.util.Arrays.copyOf(Arrays.java:2367) 2013-01-15 14:50:32 [SEVERE] at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130) 2013-01-15 14:50:32 [SEVERE] at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114) 2013-01-15 14:50:32 [SEVERE] at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:587) 2013-01-15 14:50:32 [SEVERE] at java.lang.StringBuilder.append(StringBuilder.java:214) 2013-01-15 14:50:32 [SEVERE] at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:132) 2013-01-15 14:50:32 [SEVERE] at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:105) 2013-01-15 14:50:32 [SEVERE] at com.onarandombox.multiverseinventories.util.JsonConfiguration.(JsonConfiguration.java:184) 2013-01-15 14:50:32 [SEVERE] at com.onarandombox.multiverseinventories.util.EncodedJsonConfiguration.(EncodedJsonConfiguration.java:20) 2013-01-15 14:50:32 [SEVERE] at com.onarandombox.multiverseinventories.util.data.FlatFilePlayerData.getConfigHandle(FlatFilePlayerData.java:77) 2013-01-15 14:50:32 [SEVERE] at com.onarandombox.multiverseinventories.util.data.FlatFilePlayerData.processProfileWrite(FlatFilePlayerData.java:240) 2013-01-15 14:50:32 [SEVERE] at com.onarandombox.multiverseinventories.util.data.FlatFilePlayerData.access$000(FlatFilePlayerData.java:30) 2013-01-15 14:50:32 [SEVERE] at com.onarandombox.multiverseinventories.util.data.FlatFilePlayerData$FileWriteThread.run(FlatFilePlayerData.java:209)

Followed by the usual endless stream of "[INFO] Read timed out"

I am running spigot 389 and latest dev build (335) of multiverse inventories, and these other plugins: CoreProtect 1.74, CreativeGates 1.3.5, Essentials Dev2.9.703, EssentialsAntiBuild Dev2.9.703, EssentialsChat Dev2.9.703, EssentialsSpawn Dev2.9.703, Factions 1.8.0, GroupManager 2.0 (Dev2.9.703) (Phoenix), InventoryCleaner 1.0, LWC 4.3.1 (b811-git-MANUAL) (January 13, 2013), MultiWorld 4.4.1, Multiverse-Core 2.5-b648, Multiverse-Downloader 1.0-SNAPSHOT-b1, Multiverse-Inventories 2.5-b335, NoCheatPlus 3.8.7-beta-b294, Orebfuscator 1.8.3, Permissions 3.1.6, PlotMe 0.10b, PluginManager 1.0.2, PotionCraft 1.1.1, ProtocolLib 1.8.4-SNAPSHOT, SurvivalGames B 0.4.11, Vault 1.2.22-b277, WorldEdit 1-c7cc1de, WorldGuard 747-e3dfc6a

Running without multiverse-inventories works (for days). Running With crashes as often as 4-7 times a day. :-(

ammaraskar commented 11 years ago

Your server ran out of memory, as you may expect Multiverse-Inventories needs quite a bit of RAM to operate, that being said it could also be a leak on our part. Give me some time, I'll look into it.

Citaborg commented 11 years ago

Im getting this error when People have stuff like herobrine's Axe in the Inventory. The "lore" string seems to "multiply" and the json's ends up being as big as 1.2 gigabyte!! - this seems to take too long to flush to disk, so either mvinv runs out of memory or the server "crashes"... Plenty of RAM free on the system, but if it suddenly needs a couple of gigs to Write the Inventory files heap might struggel :-/

Example json: {"SURVIVAL":{"inventoryContents":{},"potions":"[]","armorContents":{},"enderChestContents":{"19":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","damage":97,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","display-name":"king pvp killer","enchants":{"DAMAGE_ARTHROPODS":4,"LOOT_BONUS_MOBS":2,"FIRE_ASPECT":2},"repair-cost":2}},"17":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_AXE","damage":4,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"SILK_TOUCH":1}}},"18":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_AXE","damage":2,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","display-name":"basketape`s Axs","lore":["ÃÆ\u2019Ã\u2020\u2019Ã\u2020\u2019ÃÆ\u2019\u2020\u2019ÃÆ\u2019Ã\u2020\u2019\u2020\u2019ÃÆ\u2019Ã\u2020\u2019Ã\u2020\u2019\u2020\u2019ÃÆ\u2019Ã\u2020\u2019Ã\u2020\u2019ÃÆ\u2019\u2020\u2019\u2020\u2019ÃÆ\u2019Ã\u2020\u2019Ã\u2020\u2019ÃÆ\u2019\u2020\u2019ÃÆ\u2019Ã\u2020\u2019Ã\u2020\u2019ÃÆ\u2019\u202 [ ---- goes on / repeats for ages (or at least 700+ megs for this instance) ---] 2019\u201AÃÆ\u2019Ã\u2020\u2019\u201AÃÆ\u2019\u201AÃ\u201AÃ\u201A§6Herobrine's weapon"],"enchants":{"DURABILITY":1000,"LOOT_BONUS_BLOCKS":3,"DIG_SPEED":5,"PROTECTION_FALL":4,"PROTECTION_EXPLOSIONS":4,"OXYGEN":3,"WATER_WORKER":1,"THORNS":3,"ARROW_INFINITE":1,"ARROW_FIRE":1,"DAMAGE_ALL":10,"ARROW_KNOCKBACK":2,"KNOCKBACK":2,"FIRE_ASPECT":10},"repair-cost":3}},"15":{"==":"org.bukkit.inventory.ItemStack","type":"CARROT_ITEM","amount":3},"16":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"KNOCKBACK":2,"DAMAGE_ARTHROPODS":5,"LOOT_BONUS_MOBS":3}}},"13":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","damage":27,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"DAMAGE_UNDEAD":4,"KNOCKBACK":2}}},"14":{"==":"org.bukkit.inventory.ItemStack","type":"ARROW","amount":64},"11":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","damage":181,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"DAMAGE_UNDEAD":4,"LOOT_BONUS_MOBS":3,"FIRE_ASPECT":2}}},"12":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","damage":25,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"DAMAGE_ARTHROPODS":4}}},"21":{"==":"org.bukkit.inventory.ItemStack","type":"ENCHANTMENT_TABLE","amount":3},"20":{"==":"org.bukkit.inventory.ItemStack","type":"COOKED_BEEF","amount":4},"22":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_LEGGINGS","damage":49,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","display-name":"Diamantbenplater","enchants":{"DURABILITY":3,"LOOT_BONUS_BLOCKS":3,"PROTECTION_FIRE":4,"DIG_SPEED":5,"PROTECTION_FALL":4,"OXYGEN":3,"WATER_WORKER":1,"THORNS":3,"ARROW_INFINITE":1,"DAMAGE_ALL":5,"ARROW_FIRE":1,"ARROW_KNOCKBACK":2,"KNOCKBACK":2,"ARROW_DAMAGE":5,"LOOT_BONUS_MOBS":3,"FIRE_ASPECT":2},"repair-cost":2}},"23":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_CHESTPLATE","meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"PROTECTION_FALL":4,"PROTECTION_EXPLOSIONS":4,"OXYGEN":3,"WATER_WORKER":1,"THORNS":3,"ARROW_INFINITE":1,"DAMAGE_UNDEAD":5,"ARROW_FIRE":1,"KNOCKBACK":2,"ARROW_KNOCKBACK":2,"ARROW_DAMAGE":5,"LOOT_BONUS_MOBS":3,"FIRE_ASPECT":2}}},"24":{"==":"org.bukkit.inventory.ItemStack","type":"ARROW","amount":64},"25":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","damage":519,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"DAMAGE_UNDEAD":4,"KNOCKBACK":2,"LOOT_BONUS_MOBS":3,"FIRE_ASPECT":2}}},"26":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_CHESTPLATE","damage":196},"3":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_LEGGINGS","damage":368},"2":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","damage":76,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"DAMAGE_UNDEAD":4,"KNOCKBACK":2,"FIRE_ASPECT":2}}},"10":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_LEGGINGS","damage":184},"1":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_HELMET","damage":83,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"PROTECTION_ENVIRONMENTAL":4,"WATER_WORKER":1}}},"0":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","damage":59,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"DAMAGE_UNDEAD":4,"LOOT_BONUS_MOBS":3,"FIRE_ASPECT":2}}},"7":{"==":"org.bukkit.inventory.ItemStack","type":"GOLDEN_APPLE","damage":1,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"DURABILITY":3,"PROTECTION_ENVIRONMENTAL":4,"LOOT_BONUS_BLOCKS":3,"DIG_SPEED":5,"OXYGEN":3,"WATER_WORKER":1,"THORNS":3,"ARROW_INFINITE":1,"ARROW_FIRE":1,"DAMAGE_ALL":5,"ARROW_KNOCKBACK":2,"KNOCKBACK":2,"ARROW_DAMAGE":5,"LOOT_BONUS_MOBS":3,"FIRE_ASPECT":2}}},"6":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"KNOCKBACK":2,"DAMAGE_ARTHROPODS":5,"LOOT_BONUS_MOBS":3}}},"5":{"==":"org.bukkit.inventory.ItemStack","type":"ARROW","amount":62},"4":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","damage":40,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","display-name":"The diamond sword","enchants":{"DAMAGE_ALL":5,"KNOCKBACK":2,"LOOT_BONUS_MOBS":3,"FIRE_ASPECT":2},"repair-cost":2}},"9":{"==":"org.bukkit.inventory.ItemStack","type":"SKULL_ITEM","meta":{"==":"ItemMeta","meta-type":"SKULL","enchants":{"PROTECTION_ENVIRONMENTAL":4,"DAMAGE_UNDEAD":5,"ARROW_FIRE":1,"KNOCKBACK":2,"PROTECTION_FALL":4,"ARROW_KNOCKBACK":2,"ARROW_DAMAGE":5,"LOOT_BONUS_MOBS":3,"OXYGEN":3,"FIRE_ASPECT":2,"WATER_WORKER":1,"THORNS":3},"repair-cost":32}},"8":{"==":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","damage":118,"meta":{"==":"ItemMeta","meta-type":"UNSPECIFIC","display-name":"beste sverd i verden","enchants":{"DAMAGE_ALL":3,"KNOCKBACK":2,"LOOT_BONUS_MOBS":2,"FIRE_ASPECT":2},"repair-cost":2}}},"stats":{"ex":"1.1492997","ra":"300","hp":"20","fl":"20","txp":"0","el":"0","sa":"5.0","ma":"300","xp":"0.0","ft":"-20","fd":"0.0"}}}

rlgura commented 11 years ago

Experienced the same issue this weekend - server started crashing 4+ times a day. Always shortly after a player died. Examined my MultiverseInventory json files and found 2 that were over 90MB. In my case the display-name had the repetitive "\u2019\u2020\u2019ÃÆ\u2019Ã\u2020\" text in it. I believe that's coming from CrackShot - a guns mod that I have installed on my server. Cleaned out all the extra junk in those 2 files (thank you UltraEdit for handling large files) and updated MV plugins and Crackshot. Will keep an eye on those files to see if any start growing out of control.

rlgura commented 11 years ago

Happened again this weekend. Several json files had repetitive text. I see multiple tickets on this issue (colored lore corrupting). I'm updating to the latest snapshot again, but don't see any fix listed in these tickets

Citaborg commented 10 years ago

Sorry for late update... After the "latest" move to json only and other updates I haven't seen the issue