diff options
author | Jake Potrebic <[email protected]> | 2023-12-16 18:09:28 -0800 |
---|---|---|
committer | GitHub <[email protected]> | 2023-12-16 18:09:28 -0800 |
commit | de04cbced5441dfa9847b02ab28fe7c4b54f054c (patch) | |
tree | 4052db5a18ee365b9c1b9ce948a7d8afe45f7e63 /patches/server/0606-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch | |
parent | f1820dc80a02009980e6466ea5847933861b911a (diff) | |
download | Paper-de04cbced5441dfa9847b02ab28fe7c4b54f054c.tar.gz Paper-de04cbced5441dfa9847b02ab28fe7c4b54f054c.zip |
Updated Upstream (Bukkit/CraftBukkit) (#10034)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
Bukkit Changes:
f29cb801 Separate checkstyle-suppressions file is not required
86f99bbe SPIGOT-7540, PR-946: Add ServerTickManager API
d4119585 SPIGOT-6903, PR-945: Add BlockData#getMapColor
b7a2ed41 SPIGOT-7530, PR-947: Add Player#removeResourcePack
9dd56255 SPIGOT-7527, PR-944: Add WindCharge#explode()
994a6163 Attempt upgrade of resolver libraries
CraftBukkit Changes:
b3b43a6ad Add Checkstyle check for unused imports
13fb3358e SPIGOT-7544: Scoreboard#getEntries() doesn't get entries but class names
3dda99c06 SPIGOT-7540, PR-1312: Add ServerTickManager API
2ab4508c0 SPIGOT-6903, PR-1311: Add BlockData#getMapColor
1dbdbbed4 PR-1238: Remove unnecessary sign ticking
659728d2a MC-264285, SPIGOT-7439, PR-1237: Fix unbreakable flint and steel is completely consumed while igniting creeper
e37e29ce0 Increase outdated build delay
c00438b39 SPIGOT-7530, PR-1313: Add Player#removeResourcePack
492dd80ce SPIGOT-7527, PR-1310: Add WindCharge#explode()
e11fbb9d7 Upgrade MySQL driver
9f3a0bd2a Attempt upgrade of resolver libraries
60d16d7ca PR-1306: Centralize Bukkit and Minecraft entity conversion
Spigot Changes:
06d602e7 Rebuild patches
Diffstat (limited to 'patches/server/0606-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch')
-rw-r--r-- | patches/server/0606-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/patches/server/0606-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch b/patches/server/0606-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch new file mode 100644 index 0000000000..e8ae16c851 --- /dev/null +++ b/patches/server/0606-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch @@ -0,0 +1,91 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar <[email protected]> +Date: Fri, 29 May 2020 20:29:02 -0400 +Subject: [PATCH] Synchronize PalettedContainer instead of + ThreadingDetector/Semaphore + +Mojang has flaws in their logic about chunks being concurrently +wrote to. So we constantly see crashes around multiple threads writing. + +Additionally, java has optimized synchronization so well that its +in many times faster than trying to manage read write locks for low +contention situations. + +And this is extremely a low contention situation. + +diff --git a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java +index 98e720a21432fff7fce8653095a56e2ef56f1d30..27122a06e172c8d54104c115dfda668a52ff1cde 100644 +--- a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java ++++ b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java +@@ -33,14 +33,14 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer + private final T @org.jetbrains.annotations.Nullable [] presetValues; // Paper - Anti-Xray - Add preset values + private volatile PalettedContainer.Data<T> data; + private final PalettedContainer.Strategy strategy; +- private final ThreadingDetector threadingDetector = new ThreadingDetector("PalettedContainer"); ++ // private final ThreadingDetector threadingDetector = new ThreadingDetector("PalettedContainer"); // Paper - unused + + public void acquire() { +- this.threadingDetector.checkAndLock(); ++ // this.threadingDetector.checkAndLock(); // Paper - disable this - use proper synchronization + } + + public void release() { +- this.threadingDetector.checkAndUnlock(); ++ // this.threadingDetector.checkAndUnlock(); // Paper - disable this + } + + // Paper start - Anti-Xray - Add preset values +@@ -130,7 +130,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer + } + + @Override +- public int onResize(int newBits, T object) { ++ public synchronized int onResize(int newBits, T object) { // Paper - synchronize + PalettedContainer.Data<T> data = this.data; + + // Paper start - Anti-Xray - Add preset values +@@ -177,7 +177,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer + return this.getAndSet(this.strategy.getIndex(x, y, z), value); + } + +- private T getAndSet(int index, T value) { ++ private synchronized T getAndSet(int index, T value) { // Paper - synchronize + int i = this.data.palette.idFor(value); + int j = this.data.storage.getAndSet(index, i); + return this.data.palette.valueFor(j); +@@ -194,7 +194,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer + + } + +- private void set(int index, T value) { ++ private synchronized void set(int index, T value) { // Paper - synchronize + int i = this.data.palette.idFor(value); + this.data.storage.set(index, i); + } +@@ -219,7 +219,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer + }); + } + +- public void read(FriendlyByteBuf buf) { ++ public synchronized void read(FriendlyByteBuf buf) { // Paper - synchronize + this.acquire(); + + try { +@@ -239,7 +239,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer + @Override + @Deprecated @io.papermc.paper.annotation.DoNotUse public void write(FriendlyByteBuf buf) { this.write(buf, null, 0); } + @Override +- public void write(FriendlyByteBuf buf, @Nullable com.destroystokyo.paper.antixray.ChunkPacketInfo<T> chunkPacketInfo, int chunkSectionIndex) { ++ public synchronized void write(FriendlyByteBuf buf, @Nullable com.destroystokyo.paper.antixray.ChunkPacketInfo<T> chunkPacketInfo, int chunkSectionIndex) { // Paper - synchronize + this.acquire(); + + try { +@@ -299,7 +299,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer + } + + @Override +- public PalettedContainerRO.PackedData<T> pack(IdMap<T> idList, PalettedContainer.Strategy paletteProvider) { ++ public synchronized PalettedContainerRO.PackedData<T> pack(IdMap<T> idList, PalettedContainer.Strategy paletteProvider) { // Paper - synchronize + this.acquire(); + + PalettedContainerRO.PackedData var12; |