Skip to content

Fix various provision failures: more cruft for Oceanbase and Firebolt - #1867

Merged
alexey-milovidov merged 2 commits into
mainfrom
fix-various-provision-failures
Sep 6, 2026
Merged

Fix various provision failures: more cruft for Oceanbase and Firebolt#1867
alexey-milovidov merged 2 commits into
mainfrom
fix-various-provision-failures

Conversation

@alexey-milovidov

Copy link
Copy Markdown
Member

No description provided.

Four independent fixes bundled:

- firebolt/start: also bind-mount /opt/clickbench/datasets_ro:ro
  into the firebolt-core container. data/hits_*.parquet in cwd are
  symlinks into that RO mount; without the bind, the symlinks
  dangle inside the container. The INSERT INTO hits SELECT * FROM
  hits_external then "succeeds" in <1 s inserting 0 rows, and every
  query later returns count(*)=0.

- oceanbase/stop: wait for the observer to actually exit (up to
  60 s poll + SIGKILL fallback) and rm the stale run/observer.pid
  file. Without this the next ./start's observer.daemonize() reads
  the still-live pid and refuses to start with
    EDIAG [LIB] start_daemon: pid already exists
  (exit code 96 → agent /provision fails). The install-time ./stop
  hit this immediately on first provision.

- playground/images/build-base-rootfs.sh + agent unit:
  Ubuntu 24.04's needrestart runs after every apt install/upgrade
  and, in non-tty contexts, defaults to auto-restarting every
  service whose libs got upgraded — INCLUDING the running
  clickbench-agent.service (linked against libpython). Any install
  that upgrades python3-dev or a shared runtime lib (arcticdb pip
  install, rayforce build-essential, ...) drops the /provision
  HTTP connection → the host sees ServerDisconnectedError and
  gives up with an empty provision-log.

  Set NEEDRESTART_MODE=l (list only) at two levels:
    1. /etc/needrestart/conf.d/99-clickbench.conf in the base image
    2. Environment= in the agent's systemd unit
  Both take effect from the very first apt call; needrestart still
  scans + reports, but never restarts anything.
…yforce

oceanbase-row/stop was a byte-different sibling of oceanbase/stop —
the fix I applied to oceanbase/stop earlier missed this one. Sync
them (they should have been identical from the start).

arcticdb and rayforce both OOM-killed at ~16 GB RSS during load — the
guest kernel's dmesg shows:
  Out of memory: Killed process (python3|rayforce) anon-rss:1.6e7kB
Same class as pandas/polars-dataframe. Add them to NEEDS_SWAP so
they get the 256 GiB sparse swap.raw block device the agent mkswaps
+ swapons at boot.
@alexey-milovidov alexey-milovidov self-assigned this Sep 6, 2026
@alexey-milovidov
alexey-milovidov merged commit 5f45bb1 into main Sep 6, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant