From df76c02e7ac3bfbde8ecb597653779e8e1516f58 Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 26 Jun 2020 12:41:39 +0200 Subject: [PATCH] Explicitly release server.lock file when shutdown the server. (#3619) Previously, this relied on PHP itself to release locks during the resource destructor phase during process exit, but sometimes it doesn't for god knows what reason. This change makes the lock file get explicitly released before the process dies. --- src/pocketmine/PocketMine.php | 8 ++++++++ tests/phpstan/configs/l7-baseline.neon | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index 312ec98692..cff3178f26 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -289,6 +289,14 @@ namespace pocketmine { echo Terminal::$FORMAT_RESET . PHP_EOL; + if(!flock(\pocketmine\LOCK_FILE, LOCK_UN)){ + critical_error("Failed to release the server.lock file."); + } + + if(!fclose(\pocketmine\LOCK_FILE)){ + critical_error("Could not close server.lock resource."); + } + exit($exitCode); } diff --git a/tests/phpstan/configs/l7-baseline.neon b/tests/phpstan/configs/l7-baseline.neon index 07779b609b..6aee260f67 100644 --- a/tests/phpstan/configs/l7-baseline.neon +++ b/tests/phpstan/configs/l7-baseline.neon @@ -82,7 +82,7 @@ parameters: - message: "#^Parameter \\#1 \\$fp of function flock expects resource, resource\\|false given\\.$#" - count: 3 + count: 4 path: ../../../src/pocketmine/PocketMine.php - @@ -105,6 +105,11 @@ parameters: count: 1 path: ../../../src/pocketmine/PocketMine.php + - + message: "#^Parameter \\#1 \\$fp of function fclose expects resource, resource\\|false given\\.$#" + count: 1 + path: ../../../src/pocketmine/PocketMine.php + - message: "#^Parameter \\#1 \\$buffer of method pocketmine\\\\nbt\\\\NBTStream\\:\\:readCompressed\\(\\) expects string, string\\|false given\\.$#" count: 1