mirror of
https://github.com/PaperMC/Folia.git
synced 2024-11-21 11:55:11 +01:00
Fix infinite loop in ChunkBasedPriorityTask#queue
We must attempt to synchronise when the returned queue is null so that we can get a correct queue result or return false due to the reference counter being released, or even to throw an exception when the queue is null but the reference counter is not released.
This commit is contained in:
parent
1128810029
commit
ed61eb315e
@ -4367,10 +4367,10 @@ index 0000000000000000000000000000000000000000..6c1d55144f044f39926ddf998104950b
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..18cbf9f1bcf39d607809627cb47332c27dabfe59
|
||||
index 0000000000000000000000000000000000000000..4a095e69584d7dbbefafe6e0a4a1a1090172ac9e
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
|
||||
@@ -0,0 +1,745 @@
|
||||
@@ -0,0 +1,746 @@
|
||||
+package io.papermc.paper.threadedregions;
|
||||
+
|
||||
+import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue;
|
||||
@ -4920,6 +4920,7 @@ index 0000000000000000000000000000000000000000..18cbf9f1bcf39d607809627cb47332c2
|
||||
+ if (queue == null) {
|
||||
+ if (!synchronise) {
|
||||
+ // may be incorrectly null when unsynchronised
|
||||
+ synchronise = true;
|
||||
+ continue;
|
||||
+ }
|
||||
+ // may have been cancelled before we got to the queue
|
||||
|
@ -3355,7 +3355,7 @@ index 6c1d55144f044f39926ddf998104950b9efe3ee1..8e31c6ee9ee16aff699e124a9b0554ea
|
||||
|
||||
private void updateRaids(final ServerLevel world) {
|
||||
diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
|
||||
index 18cbf9f1bcf39d607809627cb47332c27dabfe59..282d8814a4610648e790c1142cdaf86d84468c03 100644
|
||||
index 4a095e69584d7dbbefafe6e0a4a1a1090172ac9e..2e4514e5a45db6e625ef7799b63a9285a3bc1030 100644
|
||||
--- a/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
|
||||
+++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
|
||||
@@ -69,7 +69,7 @@ public final class RegionizedTaskQueue {
|
||||
|
Loading…
Reference in New Issue
Block a user