BetterPortals
BetterPortals copied to clipboard
Random Crash with Cross Server Portals
Describe the bug The plugin crashes upon attempting to render certain cross server portals. It is believed to be due to a failure of the proxy to send the blocks around the destination portal. Lines 61-68 of ExternalBlockDataFetcher.java are believed to be involved.
To Reproduce
- Create a cross-server portal
- ?????
- Approach portal
Server Logs
logs of crash in origin world:
[00:13:11 INFO]: Avad__ left the game
[00:13:11 INFO]: [BetterPortals] [FNR] Portal was deactivated
[00:13:11 INFO]: [BetterPortals] [FNR] Clearing block array to save memory
[00:13:11 INFO]: [BetterPortals] [FNR] Processing request of type: com.lauriethefish.betterportals.shared.net.requests.RelayRequest
[00:13:11 INFO]: [BetterPortals] [FNR] Processing request of type: com.lauriethefish.betterportals.bukkit.net.requests.GetSelectionRequest
[00:13:11 INFO]: [BetterPortals] [FNE] Returning selection null
[00:13:36 INFO]: UUID of player Avad__ is 85ab2af8-e6cc-478b-ab7f-283368bde8fd
[00:13:36 INFO]: [BetterPortals] [FNR] Processing request of type: com.lauriethefish.betterportals.shared.net.requests.PreviousServerPutRequest
[00:13:36 INFO]: [BetterPortals] [FNE] Previous server: backrooms
[00:13:36 INFO]: [BetterPortals] [FNE] Registering player data on join for player: 85ab2af8-e6cc-478b-ab7f-283368bde8fd
[00:13:36 INFO]: [BetterPortals] [FNE] Restoring selection on join
[00:13:36 INFO]: Avad__ joined the game
[00:13:36 INFO]: Avad__[/141.156.242.119:3202] logged in with entity id 515 at ([world]-1130.5353410715077, 65.6414734540739, 1398.8968834473678)
[00:13:36 INFO]: [BetterPortals] [FNR] Portal was activated
[00:13:36 INFO]: [BetterPortals] [FNR] Portal now being viewed by player 85ab2af8-e6cc-478b-ab7f-283368bde8fd
[00:13:36 INFO]: [BetterPortals] [FNE] Not updating portal, data was not yet been fetched
[00:13:36 INFO]: [BetterPortals] [FNE] Init not finished
[00:13:37 INFO]: [BetterPortals] [FNE] Still awaiting block data response
[00:13:37 INFO]: [BetterPortals] [FNE] Not updating portal, data was not yet been fetched
[00:13:37 INFO]: [BetterPortals] [FNR] Received response to get block data request
[00:13:37 INFO]: [BetterPortals] [FNE] Selection info: com.lauriethefish.betterportals.bukkit.net.requests.GetSelectionRequest$ExternalSelectionInfo@7110835e
[00:13:37 INFO]: [BetterPortals] [FNE] Directly setting external selection for player with ID 85ab2af8-e6cc-478b-ab7f-283368bde8fd
[00:13:38 ERROR]: [BetterPortals] A critical error occurred during plugin execution.
[00:13:38 ERROR]: [BetterPortals] Please create an issue at https://github.com/Lauriethefish/BetterPortals/issues to get this fixed.
[00:13:38 WARN]: java.lang.NullPointerException: Cannot invoke "org.bukkit.block.data.BlockData.getMaterial()" because "destData" is null
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.block.bukkit.BukkitBlockMap.searchFromBlock(BukkitBlockMap.java:106)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.block.FloodFillBlockMap.updateInternal(FloodFillBlockMap.java:113)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.block.bukkit.BukkitBlockMap.updateInternal(BukkitBlockMap.java:314)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.block.FloodFillBlockMap.update(FloodFillBlockMap.java:102)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.portal.Portal.onViewUpdate(Portal.java:88)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.portal.PortalActivityManager.onPortalViewedThisTick(PortalActivityManager.java:51)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.player.PlayerData.updatePortalViews(PlayerData.java:77)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.player.PlayerData.onUpdate(PlayerData.java:111)
[00:13:38 WARN]: at java.base/java.util.HashMap$Values.forEach(HashMap.java:1065)
[00:13:38 WARN]: at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.tasks.MainUpdate.run(MainUpdate.java:47)
[00:13:38 WARN]: at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101)
[00:13:38 WARN]: at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483)
[00:13:38 WARN]: at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1532)
[00:13:38 WARN]: at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:483)
[00:13:38 WARN]: at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1456)
[00:13:38 WARN]: at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1226)
[00:13:38 WARN]: at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316)
[00:13:38 WARN]: at java.base/java.lang.Thread.run(Thread.java:833)
[00:13:38 INFO]: [BetterPortals] Attempting to shut down the plugin . . .
[00:13:38 INFO]: [BetterPortals] Disabling BetterPortals v0.11.1
[00:13:38 INFO]: [BetterPortals] [FNR] Checking deactivation type of portal view, previous pos: (-1130.54, 65.64, 1398.90, world), current pos: (-1130.54, 65.64, 1398.90, world)
[00:13:38 INFO]: [BetterPortals] [FNR] Player block view deactivating. Should reset states: true
[00:13:38 INFO]: [BetterPortals] [FNR] No states to reset!
[00:13:38 INFO]: [BetterPortals] [FNE] Goodbye from block view update thread!
[00:13:38 INFO]: [BetterPortals] [FNE] Saving all portals . . .
[00:13:38 INFO]: [BetterPortals] [FNE] Saved 19 portals
[00:13:38 INFO]: [BetterPortals] [FNE] Saving to plugins/BetterPortals/data/portals.yml
[00:13:38 INFO]: [BetterPortals] Disconnecting from the proxy
[00:13:38 INFO]: [BetterPortals] [FNR] Received response to get block data request
[00:13:38 WARN]: [BetterPortals] Failed to fetch block changes for external portal:
[00:13:38 WARN]: com.lauriethefish.betterportals.shared.net.RequestException: Disconnected from proxy while sending the request
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.net.PortalClient.disconnect(PortalClient.java:257)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.net.PortalClient.shutDown(PortalClient.java:211)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.BetterPortals.onDisable(BetterPortals.java:167)
[00:13:38 WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:266)
[00:13:38 WARN]: at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:399)
[00:13:38 WARN]: at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:578)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.CrashHandler.shutdownPlugin(CrashHandler.java:28)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.CrashHandler.processCriticalError(CrashHandler.java:23)
[00:13:38 WARN]: at BetterPortals-0.11.1.jar//com.lauriethefish.betterportals.bukkit.tasks.MainUpdate.run(MainUpdate.java:62)
[00:13:38 WARN]: at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101)
[00:13:38 WARN]: at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483)
[00:13:38 WARN]: at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1532)
[00:13:38 WARN]: at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:483)
[00:13:38 WARN]: at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1456)
[00:13:38 WARN]: at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1226)
[00:13:38 WARN]: at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316)
[00:13:38 WARN]: at java.base/java.lang.Thread.run(Thread.java:833)
[00:13:38 INFO]: [BetterPortals] [FNE] Goodbye!
error in bungeecord proxy as a consequence of crash:
[00:13:38 WARN] [BetterPortals]: IO Error occurred while sending a response to a request
[00:13:38 ERROR]: java.net.SocketException: Socket closed
[00:13:38 ERROR]: at java.base/sun.nio.ch.NioSocketImpl.ensureOpenAndConnected(NioSocketImpl.java:165)
[00:13:38 ERROR]: at java.base/sun.nio.ch.NioSocketImpl.beginWrite(NioSocketImpl.java:366)
[00:13:38 ERROR]: at java.base/sun.nio.ch.NioSocketImpl.implWrite(NioSocketImpl.java:411)
[00:13:38 ERROR]: at java.base/sun.nio.ch.NioSocketImpl.write(NioSocketImpl.java:440)
[00:13:38 ERROR]: at java.base/sun.nio.ch.NioSocketImpl$2.write(NioSocketImpl.java:826)
[00:13:38 ERROR]: at java.base/java.net.Socket$SocketOutputStream.write(Socket.java:1035)
[00:13:38 ERROR]: at java.base/java.io.DataOutputStream.writeInt(DataOutputStream.java:208)
[00:13:38 ERROR]: at com.lauriethefish.betterportals.shared.net.encryption.EncryptedObjectStream.writeObject(EncryptedObjectStream.java:63)
[00:13:38 ERROR]: at com.lauriethefish.betterportals.proxy.net.ClientHandler.send(ClientHandler.java:226)
[00:13:38 ERROR]: at com.lauriethefish.betterportals.proxy.net.ClientHandler.lambda$processRequest$1(ClientHandler.java:167)
[00:13:38 ERROR]: at com.lauriethefish.betterportals.proxy.net.ClientHandler.processResponse(ClientHandler.java:186)
[00:13:38 ERROR]: at com.lauriethefish.betterportals.proxy.net.ClientHandler.run(ClientHandler.java:150)
[00:13:38 ERROR]: at com.lauriethefish.betterportals.proxy.net.ClientHandler.lambda$new$0(ClientHandler.java:54)
[00:13:38 ERROR]: at java.base/java.lang.Thread.run(Thread.java:833)
Additional context Plugin Version: 0.11.1 Game Version: 1.18.2 paper build 386
any fixes yet