LuckPerms

LuckPerms

41.4k Downloads

Server thread dump with vault

Opened this issue · 6 comments

commented

With version 4.3.2 of LuckPerms, one of our plugins generates this error when starting the server. I made sure to do this vault-unsafe-lookups: true but nothing changes. This error was not present in previous versions. What to do about it?

Server thread dump: https://gist.github.com/Heliosard/9d8a6d87e3232a2e49e7172e79cec905

commented

Regarding the error with vault-unsafe-lookup:
That error means a plugin using the Vault API is trying to load player data on the main thread. Which is an absolute performance killer. Having had the error would have helped pinpointing the offending plugin.

Now you said you added it to the config? Can you post your config here? (Use https://gist.github.com and be sure to remove any IPs and passwords)

The threaddump doesn’t seem to have anything to do with LP.

commented

How do you explain that with version 4.2.58 I don't have this problem?
Config: https://gist.github.com/Heliosard/30fe30360427a2c629d72e8e5961833f

Thank you for your answer.

commented

That's indeed interesting. It might be because the exception you reported above is somehow corrupting the plugin doing the bad lookups.

Anyways I need the complete error that tells you to set vault-unsafe-lookups: true, even if it means that you have to set it back to false.

commented

With vault-unsafe-lookups: false:
On server start: https://gist.github.com/Heliosard/280840f7053d550c3d26974281c35fe9
Error: https://gist.github.com/Heliosard/61e88f67fe73db43e0c58b50b202da77

By the way. I don't understand why you integrated this system. Vault works in the main thread. Why add an option that is useless? It would have been better to contribute to the improvement of Vault than to add that. "If you are a plugin author, please consider making your request asynchronously." Vault is not asynchronously...

commented

Vault requires the permissions plugins that any call can be used synchronous (on the main thread) or asynchronous. Which means it also allows synchronous calls to methods that require loading of data. That is something that should be avoided at all cost. And it is bad design that the Vault API even allows this. So Luck opted to throwing an error indicating that it’s a bad idea to do that.

The VaultAPI has been pretty much unchanged for years. And that’s one of the reasons it’s so widely used. Changing it at that point would be a really bad idea. So we’re sadly stuck with years old bad design decisions.

And if I had to guess the issue arises because the offending plugin is loading a lot of players.

Now the offending plugin is eowar or the plugin that provides the HVoidChest (can’t really tell the plugin name from the stacktrace). You should forward this issue to the plugin author telling them that they need to load player data async to prevent lagging the server.

commented

Server thread dump: https://gist.github.com/Heliosard/9d8a6d87e3232a2e49e7172e79cec905

This error has nothing to do with LuckPerms. Seems to be something related to Vault / Essentials.

Error: https://gist.github.com/Heliosard/61e88f67fe73db43e0c58b50b202da77

Everything you need to know is explained in the error message itself. You can either report the issue to the author of fr.hyparia.eowar.hvoidchest.HVoidChest or enable the unsafe lookups.

By the way. I don't understand why you integrated this system. Vault works in the main thread. Why add an option that is useless?

It's not useless - it stops unsafe database lookups from occurring on the main server thread and lagging your server.

It would have been better to contribute to the improvement of Vault than to add that. "If you are a plugin author, please consider making your request asynchronously."

The Vault API has been locked in place for a number of years. It's very unlikely that it will receive any (breaking) updates in the future. It would make more sense for a new system to be created with goals that target the current day behaviours of economy/permission plugins.

Vault is not asynchronously...

Vault can be used async.