Skip to content

Early server logging happens relative to current directory #4451

Closed

Description

@venkataramanam

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

  1. self-assigned this
    on Jun 1, 2026
  2. added this to the 26.6.1 milestone on Jun 1, 2026
  3. added 6 commits that reference this issue on Jun 2, 2026
  4. venkataramanam commented on Jun 8, 2026

    @venkataramanam
    Author

    Tested with 26.6.1 and setting ARCADEDB_LOG_DIR env var for the server.sh to pick up and foward to arcadedb.server.logsDirectory setting. It works fine.

    Thank you

  5. added 2 commits that reference this issue on Jun 28, 2026
  6. added a commit that references this issue on Aug 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions