Skip to content
This repository has been archived by the owner on Jan 26, 2019. It is now read-only.

Exception on org.bukkit.event.inventory.InventoryClickEvent.getCurrentItem #316

Closed
LemADEC opened this issue Apr 20, 2016 · 15 comments
Closed

Comments

@LemADEC
Copy link

LemADEC commented Apr 20, 2016

Server Log:

[14:11:38] [Server thread/ERROR] [Minecraft/]: Could not pass event InventoryClickEvent to WorldGuard v6.1.1-SNAPSHOT.1616-c9eaec0
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) ~[JavaPluginLoader$1.class:1.7.10-1614.54]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[RegisteredListener.class:1.7.10-1614.54]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:1.7.10-1614.54]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:1.7.10-1614.54]
    at net.minecraft.network.NetHandlerPlayServer.func_147351_a(NetHandlerPlayServer.java:2028) [nh.class:?]
    at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:32) [ix.class:?]
    at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:10) [ix.class:?]
    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245) [ej.class:?]
    at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:1013) [MinecraftServer.class:?]
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:431) [lt.class:?]
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:831) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:683) [MinecraftServer.class:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_77]
Caused by: java.lang.NullPointerException
    at org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventoryView.getItem(CraftInventoryView.java:64) ~[CraftInventoryView.class:1.7.10-1614.54]
    at org.bukkit.event.inventory.InventoryClickEvent.getCurrentItem(InventoryClickEvent.java:102) ~[InventoryClickEvent.class:1.7.10-1614.54]
    at com.sk89q.worldguard.bukkit.listener.BlacklistListener.onInventoryClick(BlacklistListener.java:264) ~[?:?]
    at sun.reflect.GeneratedMethodAccessor60.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_77]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_77]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) ~[JavaPluginLoader$1.class:1.7.10-1614.54]
    ... 13 more

Explanation of issue:
Console get spammed with exception from all plugins trying to call getCurrentItem().

How to recreate this issue:
Not sure, it happens on our server, about once per hour.

Modpack Name: (Only if public)
WorldWarMinecraft (official)

Mods Installed:
see modpack page on Technic, version 8.1.0

Plugins Installed:
not relevant

Thermos/Forge Version:
Thermos-1.7.10-1614-54

@Time6628
Copy link
Member

Could you try build 55?

@LemADEC
Copy link
Author

LemADEC commented Apr 20, 2016

I would prefer not try a bleeding version on my public server :)

@Time6628
Copy link
Member

@LemADEC It works just fine, I use it on all 20 of my servers 😸

@sameer
Copy link
Member

sameer commented Apr 20, 2016

It was marked bleeding because I was unable to test it at the time, it is essentially a beta.

@djoveryde
Copy link

Build 55 is safe. I use it 👍

@LemADEC
Copy link
Author

LemADEC commented Apr 22, 2016

25 hours after installing Build 55, we've already experienced 3 worlds corruption: 1 chunk reset and 2 world rolling back.
Compared to previous version, over 4+ weeks, we had only 1 chunk reset.
As a preventive measure, I'm rolling back to build 54.

Regarding the tile entities not saved, it comes down to case 1:
1- player moves things from his ender chest to a block (ME drive)
2- player moves to another dimension => dimension unloads (no logs available to confirm)
3- about 5+ minutes later, player moves back to that dimension
At that point, player still has the modified inventory but blocks are 'older' than last change.

case 2:
1- player moves things from his inventory to a block (Thaumcraft arcane workshop for charging)
2- player moves to another dimension
3- server restarts
4- about 15+ minutes later, player moves back to that dimension
At that point, player still has the modified inventory but blocks are 'older' than last change.
There's no specific logs at step 2 nor during server shutdown nor step 4.

@sameer
Copy link
Member

sameer commented Apr 22, 2016

Tu peux nous expliquer un peut plus svp?
"3 worlds corruption:" c'est a dire que le monde avait ete perdu completement?

Je ne crois pas qu'il y a une grande difference entre 54 et 55, cependant, c'est possible.

Ceci montre le difference entre les deux: 54...55

@LemADEC
Copy link
Author

LemADEC commented Apr 22, 2016

case 1 and case 2 looks like a specific chunk (region?) wasn't saved and when requested again, server pulled from disk an 'old' version of it.

case 3 is:
1- player sets home at his base at 2016-04-22 10:39:58, ME system is present
2- player wanders around mining
3- player comes back to base at 2016-04-22 10:45:27 (~5m29s later)
=> chunk containing the ME system is reset
There was no server restart during that time.
No specific entries in logs, just a player connecting at 10:45:00 into the same dimension.

Entre 54 et 55, je vois des changements sur la gestion des chunks (hashs et checkChunksExist en particulier).
Je n'ai pas vu d'erreur type memory leak dans les logs, mais nous avons probablement une corruption mémoire qui traîne: la VM se bloque après ~2h30 d'uptime. Lorsqu'elle est bloquée, les debugger n'arrivent pas à se connecter à la VM, y compris par les commandes de bas niveau :(.

@Time6628
Copy link
Member

What is your autosave interval set to? This happens sometimes when the chunk doesn't save before it is unloaded.

@LemADEC
Copy link
Author

LemADEC commented Apr 22, 2016

It's up to the server to save chunks before releasing them from memory. Autosave is only there in case the server have an hard crash, which is not the case here.

@sameer
Copy link
Member

sameer commented Apr 22, 2016

@LemADEC Utilises-tu ovh? C'est possible qu'il y a un probleme avec ton serveur. Tu as deja vu les logs "S.M.A.R.T." pour tes disques durs?

@LemADEC
Copy link
Author

LemADEC commented Apr 22, 2016

oui, c'est du OVH. Par contre, c'est du SSD redundant, ce serait vraiment pas de bol que cela soit ça.
Reste à me souvenir comment lire le status des disques...

@sameer
Copy link
Member

sameer commented Apr 22, 2016

M'aussi avait SSD 2x480 RAID, mais ces disques ont un tendance de rater avant que des HDDs

@LemADEC
Copy link
Author

LemADEC commented Apr 22, 2016

le RAID est sain, les rapports SMART sont Passed.

@sameer
Copy link
Member

sameer commented Apr 22, 2016

Hmm, c'est tres etrange, je vais verifier le code entre 54 et 55 ce weekend, mais aussi j'ai besoin de publier build 56 😕

@sameer sameer closed this as completed in 69505fc Apr 27, 2016
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants