From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Cryptite Date: Sat, 2 Apr 2022 17:38:32 -0500 Subject: [PATCH] Debug sync chunk loads diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java index d0c55497040158d959693ef2ddf3ff03bd6df05f..5925feafad214333529bace2178f233f589e1a6e 100644 --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java @@ -70,7 +70,7 @@ import java.util.stream.Collectors; public class PaperCommand extends Command { private static final String BASE_PERM = "bukkit.command.paper."; - private static final ImmutableSet SUBCOMMANDS = ImmutableSet.builder().add("heap", "entity", "reload", "version", "debug", "chunkinfo", "fixlight", "syncloadinfo", "dumpitem", "mobcaps", "playermobcaps").build(); + private static final ImmutableSet SUBCOMMANDS = ImmutableSet.builder().add("heap", "entity", "reload", "version", "debug", "chunkinfo", "fixlight", "syncloadinfo", "dumpitem", "mobcaps", "playermobcaps", "debugsyncload").build(); // Slice public PaperCommand(String name) { super(name); @@ -203,6 +203,12 @@ public class PaperCommand extends Command { case "syncloadinfo": this.doSyncLoadInfo(sender, args); break; + // Slice start + case "debugsyncload": + SyncLoadFinder.DEBUG = !SyncLoadFinder.DEBUG; + MinecraftServer.LOGGER.info("Debugging sync chunk loads now " + (SyncLoadFinder.DEBUG ? "ON" : "OFF")); + break; + // Slice end case "mobcaps": this.printMobcaps(sender, args); break; diff --git a/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java index d3e619655382e50e9ac9323ed942502d85c9599c..ff222a54a320eee467383a612f2ce17614b0fe2a 100644 --- a/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java +++ b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java @@ -17,6 +17,8 @@ public class SyncLoadFinder { public static final boolean ENABLED = Boolean.getBoolean("paper.debug-sync-loads"); + public static boolean DEBUG; // Slice + private static final WeakHashMap> SYNC_LOADS = new WeakHashMap<>(); private static final class SyncLoadInformation { @@ -37,6 +39,13 @@ public class SyncLoadFinder { final ThrowableWithEquals stacktrace = new ThrowableWithEquals(Thread.currentThread().getStackTrace()); + // Slice start + if (DEBUG) { + org.bukkit.Bukkit.getServer().getLogger().log(java.util.logging.Level.WARNING, "Sync chunk load at " + world.getWorld().getName() + " (" + chunkX + "," + chunkZ + ")"); + Thread.dumpStack(); + } + // Slice end + SYNC_LOADS.compute(world, (final Level keyInMap, Object2ObjectOpenHashMap map) -> { if (map == null) { map = new Object2ObjectOpenHashMap<>();