Repository navigation
Closed
Milestone
Description
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.
Activity
fix(#4451): quote Windows -D log dir arg; document log-dir default in…
fix(#4451): make server.sh log dir arg space-safe via conditional quo…
docs(#4451): clarify log-dir fallback semantics and Properties round-…
test(#4451): drop reflection via package-private helper, add log-dir …
test(#4451): drop reflection via package-private helper, add log-dir …
fix(#4451): configurable server log directory for read-only root file…
venkataramanam commentedon Jun 8, 2026
Tested with 26.6.1 and setting ARCADEDB_LOG_DIR env var for the server.sh to pick up and foward to
arcadedb.server.logsDirectorysetting. It works fine.Thank you
chore(deps-dev): bump redis.clients:jedis from 7.2.1 to 7.4.0 [skip ci]
fix(ArcadeData#4451): configurable server log directory for read-only…
fix(#4451): configurable server log directory for read-only root file…