PaperMC / PaperMC/Folia

Villager Force load POI Lag

Open
#292 7 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

status: needs triage type: performance
Dominant language
Shell
Stars
4.4k
Forks
623
PR merge metrics
No merged PRs in 30d

Description

Profile link
Description of issue

Ok, I am getting this weird stacktrace here
PID: 194 | Suspended: false | Native: false | State: WAITING
Stack:
java.base@21.0.3/jdk.internal.misc.Unsafe.park(Native Method)
java.base@21.0.3/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371)
ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.loadPoiChunk(ChunkHolderManager.java:1170)
net.minecraft.world.entity.ai.village.poi.PoiManager.getOrLoad(PoiManager.java:99)
net.minecraft.world.entity.ai.village.poi.PoiManager.getType(PoiManager.java:354)
net.minecraft.world.entity.ai.behavior.PoiCompetitorScan.lambda$create$4(PoiCompetitorScan.java:28)
net.minecraft.world.entity.ai.behavior.PoiCompetitorScan$$Lambda/0x000072072e095888.trigger(Unknown Source)
net.minecraft.world.entity.ai.behavior.declarative.BehaviorBuilder$1.trigger(BehaviorBuilder.java:42)
net.minecraft.world.entity.ai.behavior.OneShot.tryStart(OneShot.java:17)
net.minecraft.world.entity.ai.Brain.startEachNonRunningBehavior(Brain.java:451)
net.minecraft.world.entity.ai.Brain.tick(Brain.java:403)
net.minecraft.world.entity.npc.Villager.customServerAiStep(Villager.java:268)
net.minecraft.world.entity.npc.Villager.customServerAiStep(Villager.java:262)
net.minecraft.world.entity.Mob.serverAiStep(Mob.java:982)
net.minecraft.world.entity.LivingEntity.aiStep(LivingEntity.java:3507)
net.minecraft.world.entity.Mob.aiStep(Mob.java:705)
net.minecraft.world.entity.AgeableMob.aiStep(AgeableMob.java:155)
net.minecraft.world.entity.LivingEntity.tick(LivingEntity.java:3206)
net.minecraft.world.entity.Mob.tick(Mob.java:472)
net.minecraft.world.entity.npc.Villager.tick(Villager.java:310)
net.minecraft.world.entity.Entity.rideTick(Entity.java:3003)
net.minecraft.world.entity.LivingEntity.rideTick(LivingEntity.java:3758)
net.minecraft.server.level.ServerLevel.tickPassenger(ServerLevel.java:1475)
net.minecraft.server.level.ServerLevel.tickNonPassenger(ServerLevel.java:1437)
net.minecraft.server.level.ServerLevel$$Lambda/0x000072072dccf320.accept(Unknown Source)
net.minecraft.world.level.Level.guardEntityTick(Level.java:1469)
net.minecraft.server.level.ServerLevel.lambda$tick$4(ServerLevel.java:846)
net.minecraft.server.level.ServerLevel$$Lambda/0x000072072d89a500.accept(Unknown Source)
io.papermc.paper.threadedregions.RegionizedWorldData.forEachTickingEntity(RegionizedWorldData.java:582)
net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:827)
net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1933)
net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:473)
net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1756)
io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:492)
io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:440)
ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:540)
java.base@21.0.3/java.lang.Thread.runWith(Thread.java:1596)
java.base@21.0.3/java.lang.Thread.run(Thread.java:1583)

Plugin and Datapack List

Server Plugins (1): Goliath

Server config files
Paste configs or paste.gg link here!
Folia version

dev 1.21.1

Other

The villager was a passenger, i located the chunk and it was riding a minecart, there was a player in front of the villager, and a zombie as well, i dont know if this is reproducable.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the stack trace at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.loadPoiChunk and net.minecraft.world.entity.ai.village.poi.PoiManager.getOrLoad, then follow the villager AI path through PoiCompetitorScan. Try to reproduce the lag with a villager riding a minecart near a player and zombie on Folia dev 1.21.1. Done should identify a reproducible cause and a verified resolution for the POI load stall.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, distributed-systems, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.