mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 09:27:43 +01:00
Remove leaf's better server sleaping/waiting patch
This commit is contained in:
@@ -1,90 +0,0 @@
|
|||||||
From 0a317004119ae5fc7986815d13d9220aed35c20f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
||||||
Date: Sat, 20 Jul 2019 15:20:04 -0700
|
|
||||||
Subject: [PATCH] Better server sleeping/waiting
|
|
||||||
|
|
||||||
---
|
|
||||||
.../minecraft/server/IAsyncTaskHandler.java | 47 +++++++++++++++++++
|
|
||||||
.../net/minecraft/server/MinecraftServer.java | 8 ++--
|
|
||||||
2 files changed, 52 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/IAsyncTaskHandler.java b/src/main/java/net/minecraft/server/IAsyncTaskHandler.java
|
|
||||||
index 84024e6ba..78ea0a251 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/IAsyncTaskHandler.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/IAsyncTaskHandler.java
|
|
||||||
@@ -91,6 +91,53 @@ public abstract class IAsyncTaskHandler<R extends Runnable> implements Mailbox<R
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Paper start - better waiting (MC-149018)
|
|
||||||
+ public void waitFor(final long time) { // time in ns
|
|
||||||
+ final long start = System.nanoTime();
|
|
||||||
+
|
|
||||||
+ ++this.e;
|
|
||||||
+
|
|
||||||
+ try {
|
|
||||||
+ while ((System.nanoTime() - start) < time) {
|
|
||||||
+ if (this.executeNext()) {
|
|
||||||
+ // re-check condition
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // no tasks to execute
|
|
||||||
+ final long timeUsed = System.nanoTime() - start;
|
|
||||||
+ final long budget = time - timeUsed;
|
|
||||||
+
|
|
||||||
+ if (budget <= 50_000L) { // 50us, this can be tuned, even to 0
|
|
||||||
+ // this is a presumption that park does not have the precision to sleep
|
|
||||||
+ // for under 50us and we would oversleep, although this branch is not very
|
|
||||||
+ // neccessary for this to work
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // In order to avoid thread scheduling potentially waking up us
|
|
||||||
+ // late we aim to wake up a millisecond early
|
|
||||||
+ final long budgetWithPreempt = budget - (int)(1.0e6);
|
|
||||||
+
|
|
||||||
+ if (budgetWithPreempt <= 0) {
|
|
||||||
+ // we don't have a millisecond to spare
|
|
||||||
+ LockSupport.parkNanos("short park for timed wait", 50_000L);
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Optionally before entering the long park we could spinwait a bit here,
|
|
||||||
+ // alternatively, we could spinwait for longer periods instead of one park
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ LockSupport.parkNanos("long park for timed wait", budgetWithPreempt);
|
|
||||||
+ // additions to the queue will unpark us
|
|
||||||
+ }
|
|
||||||
+ } finally {
|
|
||||||
+ --this.e;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
+
|
|
||||||
public void executeAll() { // Paper - protected -> public
|
|
||||||
while (this.executeNext()) {
|
|
||||||
;
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
index 63e12399e..80c22f3b8 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
@@ -994,9 +994,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
||||||
|
|
||||||
protected void sleepForTick() {
|
|
||||||
//this.executeAll(); // Paper - move this into the tick method for timings
|
|
||||||
- this.awaitTasks(() -> {
|
|
||||||
- return !this.canSleepForTick();
|
|
||||||
- });
|
|
||||||
+ // Paper start - improve wait (MC-149018)
|
|
||||||
+ // ac will be false here given that flag is set depending on the last value of executeNext, which will be false
|
|
||||||
+ // after executing all tasks
|
|
||||||
+ this.waitFor((this.nextTick * 1000 * 1000) - System.nanoTime());
|
|
||||||
+ // Paper end
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
From cd13a0bffffb95ec23844ee7c7253574760668cb Mon Sep 17 00:00:00 2001
|
From d43e7fe139fadc1dc7f30a87ca3ad9e3cc654351 Mon Sep 17 00:00:00 2001
|
||||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||||
Date: Mon, 11 Mar 2019 12:18:29 -0700
|
Date: Mon, 11 Mar 2019 12:18:29 -0700
|
||||||
Subject: [PATCH] Rate limit packets incoming from players
|
Subject: [PATCH] Rate limit packets incoming from players
|
||||||
@@ -12,7 +12,7 @@ Subject: [PATCH] Rate limit packets incoming from players
|
|||||||
create mode 100644 src/main/java/com/destroystokyo/paper/network/PacketLimiter.java
|
create mode 100644 src/main/java/com/destroystokyo/paper/network/PacketLimiter.java
|
||||||
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
||||||
index 58e2a0707..4fcecf409 100644
|
index 58e2a070..4fcecf40 100644
|
||||||
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
||||||
@@ -392,6 +392,18 @@ public class PaperConfig {
|
@@ -392,6 +392,18 @@ public class PaperConfig {
|
||||||
@@ -36,7 +36,7 @@ index 58e2a0707..4fcecf409 100644
|
|||||||
//public static boolean asyncChunkGenThreadPerWorld = true; // Leave out for now until we can control this
|
//public static boolean asyncChunkGenThreadPerWorld = true; // Leave out for now until we can control this
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/network/PacketLimiter.java b/src/main/java/com/destroystokyo/paper/network/PacketLimiter.java
|
diff --git a/src/main/java/com/destroystokyo/paper/network/PacketLimiter.java b/src/main/java/com/destroystokyo/paper/network/PacketLimiter.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000..91c8c5f53
|
index 00000000..91c8c5f5
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/network/PacketLimiter.java
|
+++ b/src/main/java/com/destroystokyo/paper/network/PacketLimiter.java
|
||||||
@@ -0,0 +1,135 @@
|
@@ -0,0 +1,135 @@
|
||||||
@@ -176,7 +176,7 @@ index 000000000..91c8c5f53
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
|
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
index 96a785af2..ff8b5e76f 100644
|
index 96a785af..ff8b5e76 100644
|
||||||
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
@@ -150,6 +150,13 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet<?>> {
|
@@ -150,6 +150,13 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet<?>> {
|
||||||
@@ -194,7 +194,7 @@ index 96a785af2..ff8b5e76f 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
index 520490d59..8aa8a672d 100644
|
index 520490d5..8aa8a672 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
@@ -140,6 +140,60 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
@@ -140,6 +140,60 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
From 9609651ff68ef811e639625012a9fd82c202392a Mon Sep 17 00:00:00 2001
|
From 32ed3a44dec5815c01f60515a150b4a2fe9250c2 Mon Sep 17 00:00:00 2001
|
||||||
From: kickash32 <kickash32@gmail.com>
|
From: kickash32 <kickash32@gmail.com>
|
||||||
Date: Tue, 11 Jun 2019 22:22:16 -0400
|
Date: Tue, 11 Jun 2019 22:22:16 -0400
|
||||||
Subject: [PATCH] implement optional per player mob spawns
|
Subject: [PATCH] implement optional per player mob spawns
|
||||||
@@ -13,7 +13,7 @@ Subject: [PATCH] implement optional per player mob spawns
|
|||||||
6 files changed, 71 insertions(+), 17 deletions(-)
|
6 files changed, 71 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||||
index 318a470ee..72b77e27e 100644
|
index 318a470e..72b77e27 100644
|
||||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||||
@@ -509,6 +509,11 @@ public class PaperWorldConfig {
|
@@ -509,6 +509,11 @@ public class PaperWorldConfig {
|
||||||
@@ -29,7 +29,7 @@ index 318a470ee..72b77e27e 100644
|
|||||||
private void countAllMobsForSpawning() {
|
private void countAllMobsForSpawning() {
|
||||||
countAllMobsForSpawning = getBoolean("count-all-mobs-for-spawning", false);
|
countAllMobsForSpawning = getBoolean("count-all-mobs-for-spawning", false);
|
||||||
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
||||||
index b1bea8f90..d92446d79 100644
|
index b1bea8f9..d92446d7 100644
|
||||||
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
||||||
@@ -601,9 +601,21 @@ public class ChunkProviderServer extends IChunkProvider {
|
@@ -601,9 +601,21 @@ public class ChunkProviderServer extends IChunkProvider {
|
||||||
@@ -57,7 +57,7 @@ index b1bea8f90..d92446d79 100644
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java
|
diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java
|
||||||
index 84aa1db72..7405d78c2 100644
|
index 84aa1db7..7405d78c 100644
|
||||||
--- a/src/main/java/net/minecraft/server/EntityTypes.java
|
--- a/src/main/java/net/minecraft/server/EntityTypes.java
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityTypes.java
|
+++ b/src/main/java/net/minecraft/server/EntityTypes.java
|
||||||
@@ -260,6 +260,7 @@ public class EntityTypes<T extends Entity> {
|
@@ -260,6 +260,7 @@ public class EntityTypes<T extends Entity> {
|
||||||
@@ -69,7 +69,7 @@ index 84aa1db72..7405d78c2 100644
|
|||||||
return this.ba;
|
return this.ba;
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
index 4c774e31d..ebf029863 100644
|
index 4c774e31..ebf02986 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
@@ -137,6 +137,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -137,6 +137,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
@@ -92,7 +92,7 @@ index 4c774e31d..ebf029863 100644
|
|||||||
int i = b(chunkcoordintpair, entityplayer, true);
|
int i = b(chunkcoordintpair, entityplayer, true);
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
||||||
index 62fc61df2..48375e465 100644
|
index 62fc61df..48375e46 100644
|
||||||
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
|
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
|
||||||
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
||||||
@@ -20,16 +20,15 @@ public final class SpawnerCreature {
|
@@ -20,16 +20,15 @@ public final class SpawnerCreature {
|
||||||
@@ -177,7 +177,7 @@ index 62fc61df2..48375e465 100644
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||||
index 787dc3e88..99b226505 100644
|
index 787dc3e8..99b22650 100644
|
||||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||||
@@ -70,6 +70,7 @@ public class WorldServer extends World {
|
@@ -70,6 +70,7 @@ public class WorldServer extends World {
|
||||||
Reference in New Issue
Block a user