1.10 servers freezing on startup with LP
Sir-Will opened this issue ยท 4 comments
Description
Since an LP update, our 1.10 servers sometimes hang on startup, after force restarting the server it will start up correctly but at some point it will hang again. See thread dump.
1.12 doesn't seem to have the issue.
2022-02-01 16:01:43
### Reproduction Steps
Happens randomly, therefore not 100% reproducible.
### Expected Behaviour
Load dependencies without getting stuck.
### Server Details
spongeforge-1.10.2-2477-5.2.0-BETA-2793
### LuckPerms Version
LuckPerms-Sponge-5.3.98
### Logs and Configs
"Server thread" - Thread t@28
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <7ecf0fd4> (a java.util.concurrent.CountDownLatch$Sync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
at me.lucko.luckperms.common.dependencies.DependencyManager.loadDependencies(DependencyManager.java:137)
at me.lucko.luckperms.common.plugin.AbstractLuckPermsPlugin.load(AbstractLuckPermsPlugin.java:111)
at me.lucko.luckperms.sponge.LPSpongeBootstrap.onEnable(LPSpongeBootstrap.java:171)
at org.spongepowered.common.event.listener.GamePreInitializationEventListener_LPSpongeBootstrap_onEnable35.handle(Unknown Source)
at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95)
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:313)
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:342)
at org.spongepowered.mod.SpongeMod.onStateEvent(SpongeMod.java:234)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
- locked <1d930356> (a com.google.common.eventbus.SynchronizedEventSubscriber)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:243)
at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:221)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
- locked <66da961f> (a com.google.common.eventbus.SynchronizedEventSubscriber)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at net.minecraftforge.fml.common.LoadController.redirect$onPost$zzb000(LoadController.java:561)
at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:145)
at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:624)
at net.minecraftforge.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:99)
at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:328)
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:121)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:431)
at java.lang.Thread.run(Thread.java:748)
Locked ownable synchronizers:
- None
Extra Details
No response
Code in question:
Only reason that would break is if the scheduler decides to stop executing tasks or if once of the dependency downloads fails. Would need to see the whole thread dump. This code is common across all platforms and I've never seen an issue with it before, so I lean towards it being a network connectivity issue with the repository that hosts the dependency artifacts.
Does it load the dependency from the repo on every startup? I assumed it loads it from the file, if it exists.
It will skip downloading if the file already exists locally
Then it shouldn't be downloading anything, as the files were not deleted.
Here is the full thread dump: https://gist.github.com/Sir-Will/8ae76a5b258018ef4d2c813594c13904