Skip to content

Early server logging happens relative to current directory #4451

@venkataramanam

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions