Following up on an earlier issue trying to support readOnlyRootFilesystem in Kube deployments, came across another potential issue (has a workaround). At the beginning of the server startup, the log folder is picked up relative to current directory . ... but later on server logs are written relative to server root path $arcadedb.server.rootPath/log.
Here is the error I see...
removing old pid file /var/lib/arcadedb/arcadedb.pid
WARNING: Using incubator modules: jdk.incubator.vector
Can't load log handler "java.util.logging.FileHandler"
java.nio.file.FileSystemException: ./log/arcadedb.log.0.lck: Read-only file system
java.nio.file.FileSystemException: ./log/arcadedb.log.0.lck: Read-only file system
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixFileSystemProvider.newFileChannel(UnixFileSystemProvider.java:224)
at java.base/java.nio.channels.FileChannel.open(FileChannel.java:309)
at java.base/java.nio.channels.FileChannel.open(FileChannel.java:369)
at java.logging/java.util.logging.FileHandler.openFiles(FileHandler.java:512)
at java.logging/java.util.logging.FileHandler.<init>(FileHandler.java:279)
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:304)
at java.base/java.lang.Class.newInstance(Class.java:727)
at java.logging/java.util.logging.LogManager.createLoggerHandlers(LogManager.java:1005)
at java.logging/java.util.logging.LogManager$4.run(LogManager.java:975)
at java.logging/java.util.logging.LogManager$4.run(LogManager.java:971)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
at java.logging/java.util.logging.LogManager.loadLoggerHandlers(LogManager.java:971)
at java.logging/java.util.logging.LogManager.initializeGlobalHandlers(LogManager.java:2422)
at java.logging/java.util.logging.LogManager$RootLogger.accessCheckedHandlers(LogManager.java:2524)
at java.logging/java.util.logging.Logger.getHandlers(Logger.java:2093)
at com.arcadedb.log.DefaultLogger.installCustomFormatter(DefaultLogger.java:243)
at com.arcadedb.log.DefaultLogger.init(DefaultLogger.java:107)
at com.arcadedb.log.DefaultLogger.log(DefaultLogger.java:387)
at com.arcadedb.log.LogManager.log(LogManager.java:58)
at com.arcadedb.GlobalConfiguration.lambda$static$0(GlobalConfiguration.java:51)
at com.arcadedb.GlobalConfiguration.setValue(GlobalConfiguration.java:1161)
at com.arcadedb.GlobalConfiguration.readConfiguration(GlobalConfiguration.java:1077)
at com.arcadedb.GlobalConfiguration.<clinit>(GlobalConfiguration.java:922)
at com.arcadedb.utility.ServerPathUtils.setRootPath(ServerPathUtils.java:47)
at com.arcadedb.server.ArcadeDBServer.<init>(ArcadeDBServer.java:112)
at com.arcadedb.server.ArcadeDBServer.main(ArcadeDBServer.java:128)
2026-06-01 15:08:22.235 WARNI [ByteArrayOutputStream] ARCADEDB 26.5.1 configuration:
- ARCADEDB
+ arcadedb.asyncBackPressure = 0
+ arcadedb.asyncOperationsQueueImpl = standard
+ arcadedb.asyncOperationsQueueSize = 1024
+ arcadedb.asyncTxBatchSize = 10240
+ arcadedb.asyncWorkerThreads = 1
I was able to overcome by explicitly mounting an emptyDir volume at /home/arcadedb/log, but It would be great this can be solved.
May be allowing the log folder path to be configurable could solve this.
Following up on an earlier issue trying to support
readOnlyRootFilesystemin Kube deployments, came across another potential issue (has a workaround). At the beginning of the server startup, thelogfolder is picked up relative to current directory.... but later on server logs are written relative to server root path$arcadedb.server.rootPath/log.Here is the error I see...
I was able to overcome by explicitly mounting an emptyDir volume at
/home/arcadedb/log, but It would be great this can be solved.May be allowing the log folder path to be configurable could solve this.