Skip to content

Bundle log service + host manager in data_substrate; drop OPEN_LOG_SERVICE - #512

Merged
liunyl merged 8 commits into
mainfrom
chore/opensource-logservice-hostmanager
Jun 16, 2026
Merged

Bundle log service + host manager in data_substrate; drop OPEN_LOG_SERVICE#512
liunyl merged 8 commits into
mainfrom
chore/opensource-logservice-hostmanager

Conversation

@liunyl

@liunyl liunyl commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Summary

Companion to eloqdata/tx_service#509. data_substrate now bundles the log service, host manager, and tx-log-protos in-tree, so the separate clone/symlink build steps are no longer needed.

  • Bump the data_substrate submodule to the in-tree open-sourcing commit (Open-source log service, host manager, and tx-log-protos in-tree (BSL) tx_service#509).
  • Remove the OPEN_LOG_SERVICE cmake option (WITH_LOG_SERVICE is kept).
  • Drop the eloq_log_service / raft_host_manager clone+symlink plumbing from GitHub Actions (build.yml), Concourse pipelines/tasks/scripts, and scripts/git-checkout.sh / git-tag.sh; the host_manager binary copy steps are kept.
  • Remove the obsolete log.pr.ent Concourse pipeline (it tested the now-absorbed eloq_log_service repo).
  • Remove stale -DOPEN_LOG_SERVICE / -DFORK_HM_PROCESS cmake flags.
  • Update CLAUDE.md build instructions.

Test plan

  • cmake configure + cmake --build (Debug) succeeds; produces eloqkv and data_substrate/host_manager.
  • All Concourse YAML re-validated with a YAML parser after editing (fixed an indentation regression).
  • Dangling-reference greps clean; log.pr.ent removal has no remaining references.
  • Live single-node smoke test (not run locally).

Merge order: merge eloqdata/tx_service#509 first, then this PR (it pins the data_substrate submodule to that commit).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Streamlined CI/CD pipelines and build tasks by removing extra external source fetches and related workspace setup; builds now use the primary source tree and recursive submodules.
    • Simplified git checkout/tag behavior by relying on recursive submodule updates and removing cross-repo release-branch handling.
  • Documentation

    • Updated build guidance to use WITH_LOG_SERVICE instead of OPEN_LOG_SERVICE, including example CMake arguments.
  • Refactor

    • Removed the OPEN_LOG_SERVICE build option and updated build-flag forwarding to match the new configuration.

…RVICE

data_substrate now ships the log service, host manager, and tx-log-protos
in-tree, so the separate clone/symlink build steps are no longer needed.

- Bump data_substrate to the in-tree open-sourcing commit.
- Remove the OPEN_LOG_SERVICE cmake option (WITH_LOG_SERVICE is kept).
- Drop the eloq_log_service / raft_host_manager clone+symlink plumbing from
  GitHub Actions (build.yml), Concourse pipelines/tasks/scripts, and
  scripts/git-checkout.sh / git-tag.sh; the host_manager binary copy is kept.
- Remove the obsolete log.pr.ent pipeline (it tested the now-absorbed
  eloq_log_service repo).
- Remove stale -DOPEN_LOG_SERVICE / -DFORK_HM_PROCESS cmake flags.
- Update CLAUDE.md build instructions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Removes eloq_log_service and raft_host_manager as separately cloned, symlinked external dependencies from all CI pipelines (Concourse and GitHub Actions), build scripts, and task definitions. Drops the OPEN_LOG_SERVICE and FORK_HM_PROCESS CMake options from CMakeLists.txt and all build invocations. Bumps the data_substrate submodule and simplifies git checkout/tagging scripts.

Changes

External Dependency Removal and CMake Cleanup

Layer / File(s) Summary
Remove OPEN_LOG_SERVICE CMake option and update build flag invocations
CMakeLists.txt, CLAUDE.md, concourse/scripts/build_tarball.bash, concourse/scripts/build_tarball_open.bash, concourse/scripts/common.sh, .github/workflows/build.yml
Deletes the OPEN_LOG_SERVICE option block and add_compile_definitions from CMakeLists.txt; removes -DOPEN_LOG_SERVICE and -DFORK_HM_PROCESS flags from all cmake invocations; updates CLAUDE.md to reference WITH_LOG_SERVICE.
Bump data_substrate submodule and simplify git scripts
data_substrate, scripts/git-checkout.sh, scripts/git-tag.sh
Advances the data_substrate submodule to a new commit; replaces per-submodule directory iteration in git-checkout.sh with a single recursive submodule update; removes create_and_push_release_branch calls for the two sub-repos from git-tag.sh.
Remove symlink setup from build/CI scripts
concourse/scripts/build_tarball.bash, concourse/scripts/build_tarball_open.bash, concourse/scripts/main.ent.bash, concourse/scripts/pr.ent.bash, concourse/scripts/tag.sh, .github/workflows/build.yml
Removes pre-build symlink creation and git safe.directory entries for logservice_src and raft_host_manager_src; removes the private-dependency clone/symlink step from the GitHub Actions workflow.
Remove task inputs in Concourse task YAMLs
concourse/tasks/build_debug_tarball.yml, concourse/tasks/build_nightly_tarball.yml, concourse/tasks/build_release_tarball.yml, concourse/tasks/build_tarball_open.yml, concourse/tasks/main.ent.yml, concourse/tasks/pr.ent.yml, concourse/tasks/tag.yml
Reduces the inputs list in all Concourse task YAML files to exclude logservice_src and raft_host_manager_src; deletes concourse/tasks/log.pr.ent.yml entirely.
Remove git resources and get steps from Concourse pipelines
concourse/pipeline/build_debug_tarball.yml, concourse/pipeline/build_nightly_tarball.yml, concourse/pipeline/build_release_tarball.yml, concourse/pipeline/build_tarball_open.yml, concourse/pipeline/main.ent.yml, concourse/pipeline/pr.ent.yml, concourse/pipeline/tag.yml
Deletes logservice_src_main and raft_host_manager_src_main resource definitions and all corresponding get steps across every Concourse pipeline; removes concourse/pipeline/log.pr.ent.yml entirely.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • eloqdata/eloqkv#424: Directly modifies concourse/pipeline/build_debug_tarball.yml by adding/removing logservice_src_main/raft_host_manager_src_main git resources and their get inputs — the same pipeline section this PR deletes.
  • eloqdata/eloqkv#477: Modifies the same "Setup private dependencies" step in .github/workflows/build.yml that this PR removes entirely.
  • eloqdata/eloqkv#193: Targets the same OPEN_LOG_SERVICE compile-time surface that this PR removes from CMakeLists.txt and all build invocations.

Suggested labels

trigger-ci

Suggested reviewers

  • MrGuin
  • thweetkomputer

Poem

🐇 Hop, hop, the symlinks are gone!
No more cloning at the break of dawn.
OPEN_LOG_SERVICE — farewell, old friend,
data_substrate submodule carries the trend.
One recursive update, clean and bright,
The rabbit tidied the pipeline tonight! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and accurately describes the primary change: bundling log service and host manager into data_substrate while removing the OPEN_LOG_SERVICE option.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/opensource-logservice-hostmanager

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@concourse/scripts/build_tarball.bash`:
- Around line 205-207: Add defensive quoting around the CMake variable
expansions in the cmake configure command (lines 205-207). Specifically, wrap
the $ASAN and ${LOG_STATE_TYPE} variable expansions with double quotes so they
become "$ASAN" and "${LOG_STATE_TYPE}" respectively. This makes the intent
clearer and protects against future changes to variable sources, even though
these variables are currently validated to safe single-word values earlier in
the script.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d066ddb8-d368-408d-bc6c-8dac05bf17c9

📥 Commits

Reviewing files that changed from the base of the PR and between 9b1b07a and 36bd276.

📒 Files selected for processing (29)
  • .github/workflows/build.yml
  • CLAUDE.md
  • CMakeLists.txt
  • concourse/pipeline/build_debug_tarball.yml
  • concourse/pipeline/build_nightly_tarball.yml
  • concourse/pipeline/build_release_tarball.yml
  • concourse/pipeline/build_tarball_open.yml
  • concourse/pipeline/log.pr.ent.yml
  • concourse/pipeline/main.ent.yml
  • concourse/pipeline/pr.ent.yml
  • concourse/pipeline/tag.yml
  • concourse/scripts/build_tarball.bash
  • concourse/scripts/build_tarball_open.bash
  • concourse/scripts/common.sh
  • concourse/scripts/log.pr.ent.bash
  • concourse/scripts/main.ent.bash
  • concourse/scripts/pr.ent.bash
  • concourse/scripts/tag.sh
  • concourse/tasks/build_debug_tarball.yml
  • concourse/tasks/build_nightly_tarball.yml
  • concourse/tasks/build_release_tarball.yml
  • concourse/tasks/build_tarball_open.yml
  • concourse/tasks/log.pr.ent.yml
  • concourse/tasks/main.ent.yml
  • concourse/tasks/pr.ent.yml
  • concourse/tasks/tag.yml
  • data_substrate
  • scripts/git-checkout.sh
  • scripts/git-tag.sh
💤 Files with no reviewable changes (25)
  • concourse/pipeline/log.pr.ent.yml
  • concourse/tasks/pr.ent.yml
  • concourse/tasks/build_nightly_tarball.yml
  • concourse/tasks/log.pr.ent.yml
  • concourse/scripts/tag.sh
  • concourse/tasks/build_tarball_open.yml
  • concourse/tasks/main.ent.yml
  • concourse/pipeline/main.ent.yml
  • concourse/tasks/build_debug_tarball.yml
  • concourse/scripts/log.pr.ent.bash
  • concourse/tasks/build_release_tarball.yml
  • concourse/tasks/tag.yml
  • concourse/pipeline/build_release_tarball.yml
  • concourse/scripts/main.ent.bash
  • concourse/pipeline/build_tarball_open.yml
  • .github/workflows/build.yml
  • concourse/scripts/pr.ent.bash
  • concourse/scripts/build_tarball_open.bash
  • scripts/git-tag.sh
  • scripts/git-checkout.sh
  • concourse/pipeline/tag.yml
  • concourse/pipeline/build_debug_tarball.yml
  • concourse/pipeline/build_nightly_tarball.yml
  • CMakeLists.txt
  • concourse/pipeline/pr.ent.yml

Comment on lines 205 to +207
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DWITH_DATA_STORE=$DATA_STORE_TYPE $CMAKE_ARGS \
-DWITH_LOG_SERVICE=ON -DDISABLE_CKPT_REPORT=${CKPT_REPORT_FLAG} -DDISABLE_CODE_LINE_IN_LOG=${CODE_LINE_FLAG} \
-DWITH_ASAN=$ASAN -DOPEN_LOG_SERVICE=OFF -DFORK_HM_PROCESS=ON -DWITH_LOG_STATE=${LOG_STATE_TYPE}
-DWITH_ASAN=$ASAN -DWITH_LOG_STATE=${LOG_STATE_TYPE}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

cat concourse/scripts/build_tarball.bash | head -n 210 | tail -n 20

Repository: eloqdata/eloqkv

Length of output: 794


🏁 Script executed:

# Get the context around lines 205-207
sed -n '195,215p' concourse/scripts/build_tarball.bash

Repository: eloqdata/eloqkv

Length of output: 976


🏁 Script executed:

# Check if ASAN and LOG_STATE_TYPE variables are set elsewhere in the script
rg -n 'ASAN|LOG_STATE_TYPE' concourse/scripts/build_tarball.bash

Repository: eloqdata/eloqkv

Length of output: 628


🏁 Script executed:

# Check for other cmake invocations in the script to compare quoting patterns
rg -n 'cmake' concourse/scripts/build_tarball.bash | head -20

Repository: eloqdata/eloqkv

Length of output: 643


🏁 Script executed:

# Check how ASAN and LOG_STATE_TYPE are initialized/passed
sed -n '1,150p' concourse/scripts/build_tarball.bash | grep -E 'ASAN|LOG_STATE_TYPE|set -'

Repository: eloqdata/eloqkv

Length of output: 426


🏁 Script executed:

# Check if these variables can be undefined
rg -B5 -A5 'ASAN=|LOG_STATE_TYPE=' concourse/scripts/build_tarball.bash | head -40

Repository: eloqdata/eloqkv

Length of output: 1042


Quote CMake value expansions in the configure command.

Although ASAN and LOG_STATE_TYPE are validated to safe single-word values earlier in the script (lines 125-142), unquoted expansion at line 207 introduces unnecessary fragility. Defensive quoting makes the intent clearer and protects against future changes to variable sources.

Suggested fix
 cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DWITH_DATA_STORE=$DATA_STORE_TYPE $CMAKE_ARGS \
     -DWITH_LOG_SERVICE=ON -DDISABLE_CKPT_REPORT=${CKPT_REPORT_FLAG} -DDISABLE_CODE_LINE_IN_LOG=${CODE_LINE_FLAG} \
-    -DWITH_ASAN=$ASAN -DWITH_LOG_STATE=${LOG_STATE_TYPE}
+    "-DWITH_ASAN=${ASAN}" "-DWITH_LOG_STATE=${LOG_STATE_TYPE}"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DWITH_DATA_STORE=$DATA_STORE_TYPE $CMAKE_ARGS \
-DWITH_LOG_SERVICE=ON -DDISABLE_CKPT_REPORT=${CKPT_REPORT_FLAG} -DDISABLE_CODE_LINE_IN_LOG=${CODE_LINE_FLAG} \
-DWITH_ASAN=$ASAN -DOPEN_LOG_SERVICE=OFF -DFORK_HM_PROCESS=ON -DWITH_LOG_STATE=${LOG_STATE_TYPE}
-DWITH_ASAN=$ASAN -DWITH_LOG_STATE=${LOG_STATE_TYPE}
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DWITH_DATA_STORE=$DATA_STORE_TYPE $CMAKE_ARGS \
-DWITH_LOG_SERVICE=ON -DDISABLE_CKPT_REPORT=${CKPT_REPORT_FLAG} -DDISABLE_CODE_LINE_IN_LOG=${CODE_LINE_FLAG} \
"-DWITH_ASAN=${ASAN}" "-DWITH_LOG_STATE=${LOG_STATE_TYPE}"
🧰 Tools
🪛 Shellcheck (0.11.0)

[info] 205-205: Double quote to prevent globbing and word splitting.

(SC2086)


[info] 205-205: Double quote to prevent globbing and word splitting.

(SC2086)


[info] 205-205: Double quote to prevent globbing and word splitting.

(SC2086)


[info] 207-207: Double quote to prevent globbing and word splitting.

(SC2086)


[info] 207-207: Double quote to prevent globbing and word splitting.

(SC2086)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@concourse/scripts/build_tarball.bash` around lines 205 - 207, Add defensive
quoting around the CMake variable expansions in the cmake configure command
(lines 205-207). Specifically, wrap the $ASAN and ${LOG_STATE_TYPE} variable
expansions with double quotes so they become "$ASAN" and "${LOG_STATE_TYPE}"
respectively. This makes the intent clearer and protects against future changes
to variable sources, even though these variables are currently validated to safe
single-word values earlier in the script.

Source: Linters/SAST tools

liunyl and others added 6 commits June 15, 2026 08:23
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
liunyl added a commit to eloqdata/tx_service that referenced this pull request Jun 16, 2026
#509)

Fold the log service, host manager, and tx-log-protos directly into
data_substrate as in-tree source under the repository's root Business
Source License 2.0 (the same model as eloqstore), and remove the build
toggles that distinguished the open vs proprietary variants.

- Absorb eloq_log_service/ and tx_service/raft_host_manager/ (were
  gitignored nested clones) and tx_service/tx-log-protos/ (was a
  submodule) as tracked in-tree files; drop tx-log-protos's GPL/AGPL
  LICENSE (now covered by the root BSL).
- Remove the open-source log_service submodule and build_log_service.cmake.
- Remove the OPEN_LOG_SERVICE option; always build the in-tree
  eloq_log_service via build_eloq_log_service.cmake (target logservice)
  under WITH_LOG_SERVICE.
- Remove the FORK_HM_PROCESS option; the host manager is always built,
  installed, and forked.
- Collapse the now-dead OPEN_LOG_SERVICE / FORK_HM_PROCESS preprocessor
  guards, keeping the eloq / forked code paths.
- Consolidate the duplicate vendored inih/INIReader copies into
  third_party/ini.
- Add a log-service CI workflow that builds the RocksDB and
  RocksDB-Cloud(S3) variants and runs the cloud unit tests against MinIO.
- Refresh module design docs (01, 06, 07, 08, 10, README) and CLAUDE.md.

WITH_LOG_SERVICE is unchanged. Paired with eloqdata/eloqkv#512, which
bumps this submodule and removes the matching CI clone/symlink plumbing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Re-point the submodule from the PR-branch commit to the squash-merged
tx_service main (#509); identical tree, so CI validation is unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@liunyl
liunyl merged commit 6014b62 into main Jun 16, 2026
4 checks passed
@liunyl
liunyl deleted the chore/opensource-logservice-hostmanager branch June 16, 2026 02:49
liunyl added a commit that referenced this pull request Jun 29, 2026
Squash of the 10 chore/data-substrate-third-party-workspace commits, rebased
onto current main and reconciled with main's #512 bundling:

- Third-party workspace wiring: build/docker/release CI, dependency scripts
  (scripts/dep, install_dependency_ubuntu2404.sh) and
  scripts/checkout_product_submodules.sh.
- Re-pin data_substrate to the reconciled third-party-workspace commit.
- log_service and host_manager are bundled in-tree on main (#509/#512); drop
  the CI step that cloned the private repos and the dead OPEN_LOG_SERVICE /
  FORK_HM_PROCESS flags.

No source changes are needed: the workspace abseil now uses its default
options (ABSL_OPTION_USE_*=2), matching main's abseil submodule.

Build verification pending.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.

2 participants