Repository navigation
Closed
Closed
Copy link
Labels
bugdockerPull requests that update docker codePull requests that update docker codenative-imageGraalVM native imageGraalVM native imagepackagingDistribution assembly, modular builder, Docker imageDistribution assembly, modular builder, Docker imageserverCore server: HTTP API, users, security enforcementCore server: HTTP API, users, security enforcementseverity:minorCosmetic, documentation, edge case, or a workaround existsCosmetic, documentation, edge case, or a workaround exists
Milestone
Description
Reported by a contributor.
Symptoms
The native image contains /home/arcadedb/config/server-users.jsonl as a single JSON object pretty-printed over 8 lines:
{
"root": {
"access": [
"updateSecurity"
],
"databases": {
"*": [
"admin"
]
}
}
}Every boot on a fresh config volume logs a SEVERE error (logged against the wrong file, see the companion issue), then falls back to the default users and works. In a deployment that is a SEVERE on every boot. The JVM 26.10.1 image ships no server-users.jsonl and logs nothing with the same arguments.
Repro:
docker run arcadedata/arcadedb:latest-native \
-Darcadedb.server.rootPassword=PlayWithData123! \
'-Darcadedb.server.defaultDatabases=test[]'Cause
package/src/main/config/server-users.jsonlis a leftover from the 2021 security rewrite (9e708f116b). It is not JSONL, and its shape is not even a valid user record.- The JVM assemblies (
package/src/main/assembly/*.xml) copy only*.yaml,*.json,*.groovy,*.propertiesfrom that directory, so the file never reaches them. - The native build context copies the whole directory without that filter:
.github/workflows/native-image.yml(dockerjob, "Stage build context"):cp -r package/src/main/config/* ctx/config/native/scripts/build-native-docker.sh:cp -R "$REPO_ROOT/package/src/main/config/." "$CTX/config/"
SecurityUserFileRepository.load()parses one JSON object per line, so line 1 ({) throwsJSONException.
Proposed fix
- Delete
package/src/main/config/server-users.jsonl(a missing file already falls back toSecurityUserFileRepository.createDefault()). - Make both native staging steps copy the same include set as the JVM assemblies, so the native image config cannot drift from the JVM distribution again (this also stops
arcadedb-statefulset.yamlfrom landing in the image).
Metadata
Metadata
Assignees
Labels
bugdockerPull requests that update docker codePull requests that update docker codenative-imageGraalVM native imageGraalVM native imagepackagingDistribution assembly, modular builder, Docker imageDistribution assembly, modular builder, Docker imageserverCore server: HTTP API, users, security enforcementCore server: HTTP API, users, security enforcementseverity:minorCosmetic, documentation, edge case, or a workaround existsCosmetic, documentation, edge case, or a workaround exists
Activity
robfrank commentedon Oct 18, 2026
Companion issue (wrong file name in the SEVERE, corrupt users file not preserved): #10321. Fixing this one hides that symptom but not that bug.
fix(#10320): the native image no longer ships a stale multi-line serv…
Merge origin/main into fix/10319-native-image-non-root-uid-1000
robfrank commentedon Oct 19, 2026
Fixed in #10329. The native image shipped an old pretty-printed
server-users.jsonlthat the server could not read, so a fresh volume started with a SEVERE error. That leftover file is gone. The native image builds now copy only the config files the JVM distribution ships, and a test fails if the two lists ever drift apart.Still open: one correction to the issue:
arcadedb-statefulset.yamlstill ships in the native image, because the JVM distribution includes every*.yaml. Otherwise the fix is complete.❤️ Thanks for helping make ArcadeDB better! ArcadeDB is free and open source, sustained by its community. If it's useful to you or your company, please consider becoming a sponsor to keep development going.
fix(#10320): the native image no longer ships a stale multi-line serv…