Recording fails to start when `replay_recordings` is a symlink to a directory
tsufeki opened this issue ยท 1 comments
Recording fails to start when replay_recordings
is a symlink to a directory, not an actual directory.
I use separate configuration&mods for recording and rendering, so I wanted to share the directory between MultiMC instances.
Stacktrace:
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: java.nio.file.FileAlreadyExistsException: /home/bb/.local/share/multimc/instances/1.18.1/.minecraft/./replay_recordings
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:94)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:398)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at java.base/java.nio.file.Files.createDirectory(Files.java:700)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:807)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at java.base/java.nio.file.Files.createDirectories(Files.java:753)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at com.replaymod.core.files.ReplayFoldersService.getReplayFolder(ReplayFoldersService.java:22)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at com.replaymod.core.files.ReplayFoldersService.getRecordingFolder(ReplayFoldersService.java:37)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at com.replaymod.recording.handler.ConnectionEventHandler.onConnectedToServerEvent(ConnectionEventHandler.java:130)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at com.replaymod.recording.ReplayModRecording.initiateRecording(ReplayModRecording.java:93)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at net.minecraft.class_635.initiateRecording(class_635.java:1039)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at net.minecraft.class_635.handler$cab000$earlyInitiateRecording(class_635.java:1026)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at net.minecraft.class_635.method_12586(class_635.java)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at net.minecraft.class_2899.method_12591(class_2899.java:39)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at net.minecraft.class_2899.method_11054(class_2899.java:7)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at net.minecraft.class_2535.method_10759(class_2535.java:163)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at net.minecraft.class_2535.method_10770(class_2535.java:150)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at net.minecraft.class_2535.channelRead0(class_2535.java:53)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [STDERR]: at java.base/java.lang.Thread.run(Thread.java:833)
[13:26:33] [Netty Epoll Client IO #2/INFO]: [CHAT] [13:26:33] [Replay Mod] Failed to start recording
- ReplayMod 2.6.3
- Minecraft 1.18.1
- OS: Linux (Debian testing)
- Mods:
- continuity-1.0.3+1.18.jar
- fabric-api-0.46.0+1.18.jar
- fabric-carpet-1.18-1.4.56+v211130.jar
- indium-1.0.2-alpha2+mc1.18.1.jar
- lazydfu-0.1.2.jar
- litematica-fabric-1.18.0-0.9.0.jar
- lithium-fabric-mc1.18.1-0.7.7.jar
- malilib-fabric-1.18.0-0.10.0-dev.26.jar
- minihud-fabric-1.18.0-0.19.0-dev.20211204.230657.jar
- okzoomer-5.0.0-beta.3+1.17.1.jar
- replaymod-1.18.1-2.6.3.jar
- sodium-fabric-mc1.18.1-0.4.0-alpha6+build.14.jar
- starlight-1.0.0+fabric.d0a3220.jar
- tweakeroo-fabric-1.18.0-0.11.0.jar
FYI as a workaround in case you don't know: When applications do not support symlinks, you can almost always bind mount the directory instead (though that generally requires root and needs extra setup to persist across reboots). See the "Linux bind mount" section of https://unix.stackexchange.com/a/198591.