mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-09 13:28:36 +02:00
if a chunk load was cancelled after generating stage started it would short circuit return with a null. however this skipped the creation of the loadTask, which some code would then invoke in requestChunk and trigger an NPE. This then likely left an incomplete corrupt request in the chunk map which then crashes servers. It should fix these isseues Fixes #1775 Fixes #1743
37 lines
1.7 KiB
Diff
37 lines
1.7 KiB
Diff
From af705fcd4e7c9f933bc7f24c3ea4b1a11b6eb9f3 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Tue, 23 Oct 2018 20:25:05 -0400
|
|
Subject: [PATCH] Don't sleep after profile lookups if not needed
|
|
|
|
Mojang was sleeping even if we had no more requests to go after
|
|
the current one finished, resulting in 100ms lost per profile lookup
|
|
|
|
diff --git a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java
|
|
index 71e48e87b..23f1447cf 100644
|
|
--- a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java
|
|
+++ b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java
|
|
@@ -42,6 +42,7 @@ public class YggdrasilGameProfileRepository implements GameProfileRepository {
|
|
}
|
|
|
|
final int page = 0;
|
|
+ boolean hasRequested = false; // Paper
|
|
|
|
for (final List<String> request : Iterables.partition(criteria, ENTRIES_PER_PAGE)) {
|
|
int failCount = 0;
|
|
@@ -67,6 +68,12 @@ public class YggdrasilGameProfileRepository implements GameProfileRepository {
|
|
LOGGER.debug("Couldn't find profile {}", name);
|
|
callback.onProfileLookupFailed(new GameProfile(null, name), new ProfileNotFoundException("Server did not find the requested profile"));
|
|
}
|
|
+ // Paper start
|
|
+ if (!hasRequested) {
|
|
+ hasRequested = true;
|
|
+ continue;
|
|
+ }
|
|
+ // Paper end
|
|
|
|
try {
|
|
Thread.sleep(DELAY_BETWEEN_PAGES);
|
|
--
|
|
2.20.1
|
|
|