Problem
bin/init-store.sh always runs full local setup (scan ./conf/graphs, init non-hstore backends, create admin user). That is right for standalone / tarball installs.
For HStore / PD mode the storage side already owns metadata. Server should start and register with PD. Forcing a full local init on every path makes Kubernetes and Helm harder than they need to be (one-shot Jobs, skip-init workarounds on Server pods).
There is already a Server option for local graph config:
- key:
graph.load_from_local_config
ServerOptions.GRAPH_LOAD_FROM_LOCAL_CONFIG
- used by
GraphManager when deciding whether to load graphs from ./conf/graphs
InitStore does not look at that flag today.
Proposal
Teach InitStore to honor the same property, with standalone-safe defaults:
rest-server.properties |
init-store |
| key unset (current shipped defaults) |
full init (same as master) |
explicit false |
no-op, WARN, exit 0 |
explicit true |
full init |
Details:
- Skip only when the key is present and false. Missing key must not skip.
ServerOptions typed default is false for GraphManager; treating "missing" as skip would break bare tarball init-store.sh.
- Map Docker env
HG_SERVER_LOAD_FROM_LOCAL_CONFIG into rest-server.properties (the file init-store.sh already passes to Java).
- Helm / distributed can set the env (or property) to
false so Server does not re-init local storage.
- No change to the
ServerOptions default itself.
Scope
In scope:
InitStore.java early exit
- Docker entrypoint env mapping
- unit tests for unset / false / true
Out of scope:
Why this shape
Community still supports standalone and multi-backend installs, so default behavior of init-store should stay as it is today. Distributed / HStore needs an explicit opt-out so cluster installs do not fight local init.
Related
I can open a PR that implements the above once this issue is filed.
Problem
bin/init-store.shalways runs full local setup (scan./conf/graphs, init non-hstore backends, create admin user). That is right for standalone / tarball installs.For HStore / PD mode the storage side already owns metadata. Server should start and register with PD. Forcing a full local init on every path makes Kubernetes and Helm harder than they need to be (one-shot Jobs, skip-init workarounds on Server pods).
There is already a Server option for local graph config:
graph.load_from_local_configServerOptions.GRAPH_LOAD_FROM_LOCAL_CONFIGGraphManagerwhen deciding whether to load graphs from./conf/graphsInitStoredoes not look at that flag today.Proposal
Teach
InitStoreto honor the same property, with standalone-safe defaults:rest-server.propertiesinit-storefalsetrueDetails:
ServerOptionstyped default is false for GraphManager; treating "missing" as skip would break bare tarballinit-store.sh.HG_SERVER_LOAD_FROM_LOCAL_CONFIGintorest-server.properties(the fileinit-store.shalready passes to Java).falseso Server does not re-init local storage.ServerOptionsdefault itself.Scope
In scope:
InitStore.javaearly exitOut of scope:
HG_SERVER_SKIP_INITchangesutil.sh/check_port/ lsof (tracked separately, e.g. fix(bin): replace lsof with /dev/tcp in server check_port; remove dea… #3105)Why this shape
Community still supports standalone and multi-backend installs, so default behavior of
init-storeshould stay as it is today. Distributed / HStore needs an explicit opt-out so cluster installs do not fight local init.Related
I can open a PR that implements the above once this issue is filed.