Visitar URL original
Native image ships a stale multi-line server-users.jsonl: SEVERE on every boot · Issue #10320 · ArcadeData/arcadedb · GitHub
Skip to content

Native image ships a stale multi-line server-users.jsonl: SEVERE on every boot #10320

Closed

Description

@robfrank

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.jsonl is 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, *.properties from that directory, so the file never reaches them.
  • The native build context copies the whole directory without that filter:
    • .github/workflows/native-image.yml (docker job, "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 ({) throws JSONException.

Proposed fix

  • Delete package/src/main/config/server-users.jsonl (a missing file already falls back to SecurityUserFileRepository.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.yaml from landing in the image).

Activity

  1. robfrank commented on Oct 18, 2026

    @robfrank
    CollaboratorAuthor

    Companion issue (wrong file name in the SEVERE, corrupt users file not preserved): #10321. Fixing this one hides that symptom but not that bug.

  2. added
    dockerPull requests that update docker code
    packagingDistribution assembly, modular builder, Docker image
    serverCore server: HTTP API, users, security enforcement
    severity:minorCosmetic, documentation, edge case, or a workaround exists
    on Oct 18, 2026
  3. added this to the 26.11.1 milestone on Oct 18, 2026
  4. self-assigned this
    on Oct 18, 2026
  5. added a commit that references this issue on Oct 19, 2026
  6. robfrank commented on Oct 19, 2026

    @robfrank
    CollaboratorAuthor

    Fixed in #10329. The native image shipped an old pretty-printed server-users.jsonl that 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.yaml still 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.

  7. removed
    in progressThe team is actively working on this issue
    on Oct 19, 2026
  8. added a commit that references this issue on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugdockerPull requests that update docker codenative-imageGraalVM native imagepackagingDistribution assembly, modular builder, Docker imageserverCore server: HTTP API, users, security enforcementseverity:minorCosmetic, documentation, edge case, or a workaround exists

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions