diff --git a/src/main/java/dev/modzuozhi/core/compat/PayloadDiagnostics.java b/src/main/java/dev/modzuozhi/core/compat/PayloadDiagnostics.java index 6e84556..2539275 100644 --- a/src/main/java/dev/modzuozhi/core/compat/PayloadDiagnostics.java +++ b/src/main/java/dev/modzuozhi/core/compat/PayloadDiagnostics.java @@ -69,8 +69,24 @@ public final class PayloadDiagnostics { return "payloads: phase="+MainThreadPhaseCoordinator.phase(server)+" received="+received+" completed="+completed +" failed="+failed+" cancelled="+cancelled+" expired="+expired+" rejected="+rejected +" pending="+s.pending.size()+" oldestMs="+(System.nanoTime()-oldest)/1_000_000.0 - +" batches="+s.batches+" waitMs="+s.waitMs+" actionMs="+s.actionMs+" ids="+s.ids.size()+" other="+Arrays.toString(s.other)+" recent="+s.recent; + +" batches="+s.batches+" waitMs="+s.waitMs+" actionMs="+s.actionMs+" ids="+s.ids.size()+" other="+Arrays.toString(s.other)+" recent="+s.recent + +topIds(s); } } + /** Top payload ids by received count; bounded output for logs (who floods enqueueWork). */ + private static String topIds(Stats s) { + if(s.ids.isEmpty()) return " top=[]"; + var top=s.ids.entrySet().stream() + .sorted((a,b)->Long.compare(b.getValue()[0],a.getValue()[0])) + .limit(15).toList(); + StringBuilder sb=new StringBuilder(" top=["); + for(int i=0;i0)sb.append(' '); + sb.append(e.getKey()).append("(r").append(v[0]).append("/c").append(v[1]).append("/f").append(v[2]) + .append("/x").append(v[3]).append("/e").append(v[4]).append("/rej").append(v[5]).append(')'); + } + return sb.append(']').toString(); + } public static void clear(MinecraftServer server){STATS.remove(server);} }