Replay Mod (Fabric & Forge)

Replay Mod (Fabric & Forge)

1M Downloads

Recording fails to start when `replay_recordings` is a symlink to a directory

tsufeki opened this issue ยท 1 comments

commented

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
commented

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.