File-Saving issues on Windows-Server
Lodur89 opened this issue ยท 11 comments
What i did / Steps to reproduce
Firstly: I'm absolutely in love with this worldmap! <3
For me and some friends, I've prerendered (only overworld, nether was only visited once in a radius of ~100 blocks around the nether portal, the end has never been visited yet) a kind of big world with a radius of 600 chunks. (Don't judge me ^^). At some point of the last probably 20% of rendering the map with bluemap, the settings.json file for neither of the dimensions could be saved anymore.
I've already changed from a used HDD to a used SSD and to a new SSD (different brand) and completely re-rendered the whole map (aka deleted the \bluemap\web directory) each time - with the same result: A settings.json that's not accessible anymore and a new settings.json.filepart that's accessible with the correct content. (And the worldmap ist still working correctly as far as I've seen)
I obviously checked the file system with no errors found (complete-package chosen, stopped the server beforehand: chkdsk /f /r /x /b ) and the SSD also isn't under heavy load. Currently the only application using the SSD is the forge server itself.
Funny enough: Right now it's a rare occurency I've not seen before: I AM able to access the settings.json files at the moment. Found that out as I was going to take a screenshot of the file properties / security properties.
So, at which times or which triggers is bluemap going to write a new settings.json file? It must be more often than only at a restart of the forge-server? Is there any negative impact except the errors in the logfiles?
Expected result
settings.json to be replaced with the settings.json.filepart
Actual result
settings.json unreadable / not accessable, even after a server restart. settings.json.filepart gets regenerated with each restart.
Context
BlueMap Version:
BlueMap-3.16-forge-1.20.jar
- Windows Server 2019
- Forge 47.1.44 (MC 1.20.1)
- Chunk+Pregenerator-1.20-4.2.3.jar used for pregenerating
- SSD now in use: 1 TB Samsung 870 Evo, partition style GPT, file system NTFS (160 GB used, rest ist free)
- bluemap\web\maps\overworld:
- 360.318 files, 36.116 folders, total size of 66,4 GB (71.379.340.598 Bytes)
- bluemap\web\maps\nether:
- 448 files, 52 folders, total size 50,8 MB (53.323.944 Bytes)
- bluemap\web\maps\end:
- 5 files, 1 folder, total size 1,89 MB (1.988.278 Bytes)
Console log, repeating over and over again for each dimension once that behavior begins
[17:27:13] [BlueMap-Plugin-DaemonTimer/ERROR] [BlueMap/]: Failed to save settings for map 'nether'!
java.nio.file.AccessDeniedException: bluemap\web\maps\nether\settings.json
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) ~[?:?] {}
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:273) ~[?:?] {}
at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:109) ~[?:?] {}
at java.nio.file.Files.deleteIfExists(Files.java:1190) ~[?:?] {}
at de.bluecolored.bluemap.core.util.FileHelper.lambda$createFilepartOutputStream$0(FileHelper.java:47) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.WrappedOutputStream.close(WrappedOutputStream.java:71) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.io.FilterOutputStream.close(FilterOutputStream.java:189) ~[?:?] {}
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:443) ~[?:?] {}
at sun.nio.cs.StreamEncoder.lockedClose(StreamEncoder.java:241) ~[?:?] {}
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:226) ~[?:?] {}
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:267) ~[?:?] {}
at de.bluecolored.bluemap.core.map.BmMap.saveMapSettings(BmMap.java:204) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.map.BmMap.save(BmMap.java:139) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin.save(Plugin.java:507) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin$1.run(Plugin.java:276) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.util.TimerThread.mainLoop(Timer.java:566) ~[?:?] {}
at java.util.TimerThread.run(Timer.java:516) ~[?:?] {}
[17:27:13] [BlueMap-Plugin-DaemonTimer/ERROR] [BlueMap/]: Failed to save settings for map 'end'!
java.nio.file.AccessDeniedException: bluemap\web\maps\end\settings.json
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) ~[?:?] {}
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:273) ~[?:?] {}
at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:109) ~[?:?] {}
at java.nio.file.Files.deleteIfExists(Files.java:1190) ~[?:?] {}
at de.bluecolored.bluemap.core.util.FileHelper.lambda$createFilepartOutputStream$0(FileHelper.java:47) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.WrappedOutputStream.close(WrappedOutputStream.java:71) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.io.FilterOutputStream.close(FilterOutputStream.java:189) ~[?:?] {}
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:443) ~[?:?] {}
at sun.nio.cs.StreamEncoder.lockedClose(StreamEncoder.java:241) ~[?:?] {}
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:226) ~[?:?] {}
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:267) ~[?:?] {}
at de.bluecolored.bluemap.core.map.BmMap.saveMapSettings(BmMap.java:204) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.map.BmMap.save(BmMap.java:139) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin.save(Plugin.java:507) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin$1.run(Plugin.java:276) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.util.TimerThread.mainLoop(Timer.java:566) ~[?:?] {}
at java.util.TimerThread.run(Timer.java:516) ~[?:?] {}
[17:27:13] [BlueMap-Plugin-DaemonTimer/ERROR] [BlueMap/]: Failed to save settings for map 'overworld'!
java.nio.file.AccessDeniedException: bluemap\web\maps\overworld\settings.json
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) ~[?:?] {}
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:273) ~[?:?] {}
at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:109) ~[?:?] {}
at java.nio.file.Files.deleteIfExists(Files.java:1190) ~[?:?] {}
at de.bluecolored.bluemap.core.util.FileHelper.lambda$createFilepartOutputStream$0(FileHelper.java:47) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.WrappedOutputStream.close(WrappedOutputStream.java:71) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.io.FilterOutputStream.close(FilterOutputStream.java:189) ~[?:?] {}
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:443) ~[?:?] {}
at sun.nio.cs.StreamEncoder.lockedClose(StreamEncoder.java:241) ~[?:?] {}
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:226) ~[?:?] {}
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:267) ~[?:?] {}
at de.bluecolored.bluemap.core.map.BmMap.saveMapSettings(BmMap.java:204) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.map.BmMap.save(BmMap.java:139) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin.save(Plugin.java:507) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin$1.run(Plugin.java:276) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.util.TimerThread.mainLoop(Timer.java:566) ~[?:?] {}
at java.util.TimerThread.run(Timer.java:516) ~[?:?] {}
Alright ... Thanks for the detailed information provided!
Let's use this as a common place for collecting information about this issue.
We have been getting reports of this exact problem for a while now, and the only common ground we found so far is that everyone with this problem was running their server on a Windows Server
OS ..
Unfortunately, that's all we have right now and i am very much in the dark myself why this occurs or how to fix it.
Any further hints that help us narrow down the issue are very welcome.
So, at which times or which triggers is bluemap going to write a new settings.json file? It must be more often than only at a restart of the forge-server?
At least every 10 minutes. Or at the start/end of an update/command.. and some other occurences.
Is there any negative impact except the errors in the logfiles?
As long as it "only" fails to save the settings.json
there should be no direct issue, since the settings.json
usually doesn't change. Only if you change some of the map's configs.
But iirc we have seen this also occur on other files, which then can cause e.g. some parts of the map to not update properly.
There is no danger to anything not bluemap related.
settings.json unreadable / not accessable
can you - if possible - provide more info on what you mean by that?
Like,.. you can also not open that file with an external program/tool?
Is the file somehow "locked" or is there any other windows-thing that could block it from being accessed?
Thanks for your reply :)
My server details:
OS: Windows Server 2019 Datacenter Edition with GUI - Version 1809 (Build 17763.4737)
CPU: AMD Ryzen 7 3700X -- 6 cores dedicated for bluemap
RAM: 2x16 GB DDR4 (2133 MHz) -- 6 GB dedicated to the Forge server.
I'm running Active Directory and Hyper-V with a nextcloud VM on that, too. RAM is generally plenty available.
Other Software that might interfere: Veeam Backup and Replication Community Edition
The next backup for Minecraft should be at 10pm today, I've not checked yet if the errors occure while the backup is being created. If so, that'd be every 4 hours - I'll have an eye on that one.
But iirc we have seen this also occur on other files, which then can cause e.g. some parts of the map to not update properly.
That's something I haven't noticed yet. I'll take a deeper look into that too as long as my time allows that.
Regarding the inaccessable file:
can you - if possible - provide more info on what you mean by that?
I can't open the file with any program. When in the properties of the file the size of the file is correct, but under the tabs for NTFS security it says basically: I can't show you anything here because the file doesn't seem to have an owner at all.
I'll attach a screenshot as soon as that'll happen again - with an english translation below since the text will be in german.
Is the file somehow "locked" or is there any other windows-thing that could block it from being accessed?
Good point. There was a program that'll allow to see by wich program the file is in use/locked. Guess I'll try to find that program and see what that will tell me.
In the windows event viewer (Windows protocols / Security) I've just seen multiple events, 3 seconds after the file lastly couldn't bet written, that an account has logged off. (Event ID 4634). Needs some investigation, too.
Until now I haven't checked if any other files might be affected.
But I could reproduce it now by opening the worldmap (and simultaniusly running bluemap update). The error appeared for all three dimensions.
In the meanwhile I've run a little Powershell script that should check the ownership of the file and which process maybe locks the file.
The output I got
23:11:05
Get-Acl : Zugriff verweigert
In P:\CheckFileOwner.ps1:44 Zeichen:15
+ $Owner = (Get-Acl $FilePath).Owner
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (S:\Minecraft\1....d\settings.json:String) [Get-Acl], UnauthorizedAccessException
+ FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetAclCommand
Get-Acl : Der Pfad "S:\Minecraft\1.20.1_Forge\bluemap\web\maps\overworld\settings.json" kann nicht gefunden werden, da er nicht vorhanden ist.
In P:\CheckFileOwner.ps1:44 Zeichen:15
+ $Owner = (Get-Acl $FilePath).Owner
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:) [Get-Acl], ItemNotFoundException
+ FullyQualifiedErrorId : GetAcl_PathNotFound_Exception,Microsoft.PowerShell.Commands.GetAclCommand
Based on the fact your german isn't the worst as I've seen in the meantime, I'll not translate that at this point. ;)
Also, here are the screenshots of the file properties and what happens when I try to, as an example, put the json and filepart files into a 7z-archive.
And now I'm sure, there are more files that can't be accessed at the moment. While loading the worldmap the large tiles have never been in such a mess before.
That's what happens when the update runs while the problems is "active" I guess ^^
Edit: When zooming in, the view with the higher resolution is correct for now. Although I hadn't checked each chunk, but took some random samples.
Alright .. thanks for the investigations so far .. ^^'
I'll probably have to spin up a windows-server instance myself at some point to reproduce it and play around with some code-changes
So, it just happened again - for the nether and end at least. Overworld was fine. Unfortunately for a too short period of time to check the .json file itself and the error got only logged once in the forge server console.
Things I've noticed:
- One player has been on the forge server in the overworld
- Logged on several minutes before the error appeared
- Veeam shouldn't be the problem
- Backup started manually an hour ago
- Used bluemap update at the same time multiple times
- Monitored the .json files
- No other backup started right now
- Nothing happened
- Logoff messages in the event viewer
- Happened now at the exact same time
- Were LDAP queries from Nextcloud
- LDAP for Nextcloud now deactivated / hasn't been actively in use
- Windows Update
- checked for Updates in that timeframe
- DNS
- I opened the worldmap (via FQDN) at 22:05:13
- DNS registered the query at the same time, logically
- The error for the inaccessable file popped up at 22:05:14
I've added only one marker for the spawn on the overworld. The worldmap can be reached via a public subdomain pointing to my private home-server (so i'd rather like to not post the URL here ;) ).
Other than that, I havn't registered anything special or slightly related, unfortunately.
Accept a little detail that's just coming in my mind: I'm using rubidium-mc1.20.1-0.7.0a.jar on the server. I've already removed that mod clientside, because that mod with REI crashed the client due to a render error, when at least one special item (the worldshaper of the create mod) has been in view of REIs item-list. That item has at least never been crafted or used on the server. So I'm not sure if this might be relatable at all.
One thing in addition, because I forgot to mention earlier. The Java version being used on the server:
java -version
java version "20.0.2" 2023-07-18
Java(TM) SE Runtime Environment (build 20.0.2+9-78)
Java HotSpot(TM) 64-Bit Server VM (build 20.0.2+9-78, mixed mode, sharing)
Logfile:
[21:38:40] [Server thread/INFO] [minecraft/MinecraftServer]: <PLAYERNAME> joined the game
[21:38:40] [Server thread/INFO] [structurize/]: New Server UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
[22:05:14] [BlueMap-Plugin-DaemonTimer/ERROR] [BlueMap/]: Failed to save settings for map 'nether'!
java.nio.file.FileAlreadyExistsException: bluemap\web\maps\nether\settings.json.filepart -> bluemap\web\maps\nether\settings.json
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:87) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) ~[?:?] {}
at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:414) ~[?:?] {}
at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:291) ~[?:?] {}
at java.nio.file.Files.move(Files.java:1429) ~[?:?] {}
at de.bluecolored.bluemap.core.util.FileHelper.move(FileHelper.java:63) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.FileHelper.lambda$createFilepartOutputStream$0(FileHelper.java:50) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.WrappedOutputStream.close(WrappedOutputStream.java:71) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.io.FilterOutputStream.close(FilterOutputStream.java:189) ~[?:?] {}
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:443) ~[?:?] {}
at sun.nio.cs.StreamEncoder.lockedClose(StreamEncoder.java:241) ~[?:?] {}
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:226) ~[?:?] {}
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:267) ~[?:?] {}
at de.bluecolored.bluemap.core.map.BmMap.saveMapSettings(BmMap.java:204) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.map.BmMap.save(BmMap.java:139) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin.save(Plugin.java:507) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin$1.run(Plugin.java:276) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.util.TimerThread.mainLoop(Timer.java:566) ~[?:?] {}
at java.util.TimerThread.run(Timer.java:516) ~[?:?] {}
Suppressed: java.nio.file.AccessDeniedException: bluemap\web\maps\nether\settings.json.filepart -> bluemap\web\maps\nether\settings.json
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) ~[?:?] {}
at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:328) ~[?:?] {}
at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:291) ~[?:?] {}
at java.nio.file.Files.move(Files.java:1429) ~[?:?] {}
at de.bluecolored.bluemap.core.util.FileHelper.move(FileHelper.java:59) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.FileHelper.lambda$createFilepartOutputStream$0(FileHelper.java:50) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.WrappedOutputStream.close(WrappedOutputStream.java:71) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.io.FilterOutputStream.close(FilterOutputStream.java:189) ~[?:?] {}
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:443) ~[?:?] {}
at sun.nio.cs.StreamEncoder.lockedClose(StreamEncoder.java:241) ~[?:?] {}
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:226) ~[?:?] {}
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:267) ~[?:?] {}
at de.bluecolored.bluemap.core.map.BmMap.saveMapSettings(BmMap.java:204) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.map.BmMap.save(BmMap.java:139) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin.save(Plugin.java:507) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin$1.run(Plugin.java:276) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.util.TimerThread.mainLoop(Timer.java:566) ~[?:?] {}
at java.util.TimerThread.run(Timer.java:516) ~[?:?] {}
[22:05:14] [BlueMap-Plugin-DaemonTimer/ERROR] [BlueMap/]: Failed to save settings for map 'end'!
java.nio.file.FileAlreadyExistsException: bluemap\web\maps\end\settings.json.filepart -> bluemap\web\maps\end\settings.json
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:87) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) ~[?:?] {}
at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:414) ~[?:?] {}
at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:291) ~[?:?] {}
at java.nio.file.Files.move(Files.java:1429) ~[?:?] {}
at de.bluecolored.bluemap.core.util.FileHelper.move(FileHelper.java:63) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.FileHelper.lambda$createFilepartOutputStream$0(FileHelper.java:50) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.WrappedOutputStream.close(WrappedOutputStream.java:71) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.io.FilterOutputStream.close(FilterOutputStream.java:189) ~[?:?] {}
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:443) ~[?:?] {}
at sun.nio.cs.StreamEncoder.lockedClose(StreamEncoder.java:241) ~[?:?] {}
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:226) ~[?:?] {}
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:267) ~[?:?] {}
at de.bluecolored.bluemap.core.map.BmMap.saveMapSettings(BmMap.java:204) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.map.BmMap.save(BmMap.java:139) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin.save(Plugin.java:507) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin$1.run(Plugin.java:276) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.util.TimerThread.mainLoop(Timer.java:566) ~[?:?] {}
at java.util.TimerThread.run(Timer.java:516) ~[?:?] {}
Suppressed: java.nio.file.AccessDeniedException: bluemap\web\maps\end\settings.json.filepart -> bluemap\web\maps\end\settings.json
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89) ~[?:?] {}
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) ~[?:?] {}
at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:328) ~[?:?] {}
at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:291) ~[?:?] {}
at java.nio.file.Files.move(Files.java:1429) ~[?:?] {}
at de.bluecolored.bluemap.core.util.FileHelper.move(FileHelper.java:59) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.FileHelper.lambda$createFilepartOutputStream$0(FileHelper.java:50) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.util.WrappedOutputStream.close(WrappedOutputStream.java:71) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.io.FilterOutputStream.close(FilterOutputStream.java:189) ~[?:?] {}
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:443) ~[?:?] {}
at sun.nio.cs.StreamEncoder.lockedClose(StreamEncoder.java:241) ~[?:?] {}
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:226) ~[?:?] {}
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:267) ~[?:?] {}
at de.bluecolored.bluemap.core.map.BmMap.saveMapSettings(BmMap.java:204) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.core.map.BmMap.save(BmMap.java:139) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin.save(Plugin.java:507) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at de.bluecolored.bluemap.common.plugin.Plugin$1.run(Plugin.java:276) ~[BlueMap-3.16-forge-1.20.jar%23144!/:3.16] {re:classloading,pl:rei_plugin_compatibilities:B}
at java.util.TimerThread.mainLoop(Timer.java:566) ~[?:?] {}
at java.util.TimerThread.run(Timer.java:516) ~[?:?] {}
[22:12:39] [Server thread/INFO] [minecraft/ServerGamePacketListenerImpl]: <PLAYERNAME> lost connection: Disconnected
[22:12:39] [Server thread/INFO] [minecraft/MinecraftServer]: <PLAYERNAME> left the game
I opened the worldmap (via FQDN)
The error for the inaccessable file popped up at 22:05:14
This is interesting to me..
Thesis:
The webserver is reading the settings.json
file to send it at the same time that bluemap tries to write to it, which creates this issue..
What speaks against this however is that it happens (to you) only with the settings.json
file while there can be a lot of different files that are being written to and read by the webserver as well..
Also - ofc - the webserver opens the files in a way that is supposed to not lock the file. ๐ค
You're welcome :)
I don't know if this helps any further. I've created two logfiles (CSV, comma delimited) of filechanges: The first one with running bluemap update directly after the server started, the second one after I opened the worldmap and the error occured again while running bluemap update.
I also tried to get some filechanges while the worldmap were loaded, but there were none to be logged.
The programm I used for that is FolderChangesView by Nirsoft.
Best of luck, get some sleep before doing anything and if I can do/test something else, just let me know!
Files:
Bluemap_FileChanges_UpdateAfterFreshStart.csv
Bluemap_FileChanges_UpdateAfterOpeningTheWorldMap.csv