Repository navigation
fix(#49): seed server-groups.json on the native image from the JVM image - #51
Merged
Merged
Conversation
The native image has no shell, so config-seed was skipped and the config
volume hid the image's server-groups.json: the server ran with its built-in
groups, without "readonly". config-seed now runs the JVM image of the same
version on the native flavor (server tag without -native), with
initContainers.configSeed.image.{registry,repository,tag} as overrides. A
native image.tag without the -native suffix fails the render unless a tag
override is set. Phase 11 of the integration test now checks the native
flavor through GET /api/v1/server/groups.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
4 of 5 tasks
This was referenced Oct 22, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #49
On
image.flavor=nativetheconfig-seedinit container was skipped, because the native image has no shell. The config volume then hid the image's/home/arcadedb/config, and the server started with its built-in groups, which have noreadonlygroup. This PR takes the third option from the issue: on the native flavor,config-seedruns the JVM image of the same version, using the server tag without its-nativesuffix (26.10.2-nativebecomes26.10.2,latest-nativebecomeslatest). Both images takeconfig/frompackage/src/main/configwith the same include set, and both run as 1000:1000 (seenative/src/main/docker/Dockerfile.native.*andpackage/src/main/docker/Dockerfilein the core repo). The cost is one more image pull per node. The newinitContainers.configSeed.image.{registry,repository,tag}values (empty = derived) override the seed image on either flavor. Ifimage.tagdoes not end in-nativeand no tag override is set, the render fails with an actionable message instead of skipping the seed without a word.Changes
_helpers.tpl: newarcadedb.configSeed.imagehelper.arcadedb.configSeed.containeris no longer gated onnot native.values.yaml/README.md: documentinitContainers.configSeed.image.*and the native behaviour.tests/config_seed_test.yaml: 10 new native/override cases.ci/integration-test.shphase 11, native branch: checks thatconfig-seedis present and does not run a-nativeimage, and that its log reportsserver-groups.jsonas seeded or kept. It also checks thatGET /api/v1/server/groupsreturns areadonlygroup, so the server really loaded the seeded file (kubectl execis not possible on native).Existing test changed:
config_seed_test.yaml"is skipped on the native image, which has no shell" asserted the behaviour this issue reports as the bug. It is replaced by "seeds the config volume on the native image from the JVM image of the same version". No other existing test was touched.Test plan
helm unittest charts/arcadedb: 349 passed (was 340; −1 replaced, +10 new). The new cases failed (9 of 10) before the template change.helm lint charts/arcadedb --set image.flavor=nativeIMAGE_FLAVOR=native bash ci/integration-test.sh): all 11 phases pass, exit 0. Theconfig-seedlog showsseeded server-groups.json, and phase 11 confirms thereadonlygroup through the API.origin/mainchart on the same cluster returns groups["*","admin"](noreadonly) from/api/v1/server/groups.CI - Lint, Unit Tests, Integration Testson 96e86cb: all 5 checks pass,integration-nativeamong themintegration-latest-native(weekly guard;latest-native→ seed imagelatest) has not run on this branchCompleteness
Invariant: whenever
initContainers.configSeed.enabledis on and avolumeMountsentry holdsarcadedb.configDirectory, the pod runs aconfig-seedcontainer whose image has a shell, on either flavor.grep -rn 'include "arcadedb.native"' charts/after the change:No native gate on the seed container is left.
grep -rn "configSeed\|config-seed" charts/arcadedb/templatesshows that the only image reference forconfig-seedis the new helper.<appVersion>-native)*-nativetag (e.g.latest-native)-nativeconfigSeed.image.tagoverride, unit testsconfigSeed.enabled=false--reuse-valueswithoutconfigSeedkeyconfigDirectoryunder a parent mountKnown gaps
None filed. Residual risk, argued: an existing native release whose config PVC already holds a
server-groups.json(the server writes its built-in default to disk at first start) keeps that file, because config-seed never overwrites. The README's "Existing installs" paragraph under Default config files already covers this case (edit the file or delete it and restart), and it applies to both flavors.Adversarial pass
The Phase 1.5 independent-reviewer subagent could not be spawned: no subagent tool was available in this run. In its place the author did a self-check against the issue's acceptance criteria. That check found one real defect, fixed here before the PR opened: the first version of the native phase 11 reset
PF_PID="", so theEXITtrap's[[ -n ... ]]returned 1 and the script exited 1 after "All checks passed". The phase now uses the samepf_start/pf_stoppattern as the other phases, and the rerun exits 0.Review cycles
96e86cb. Noclaudereview arrived within 15 minutes, on any surface (reviews, inline comments, issue comments). This repo has no Claude Code Review workflow (gh workflow listshows only Integration, Latest Image Guard, CI, Release, Dependabot and pages), so a bot review will not come on its own.Deferred items
None.
Final state
timeout: no automated reviewer is configured on this repo. CI is green. A human review is needed; merging is up to the maintainer.🤖 Generated with Claude Code