Skip to content

Support build with eloqstore#176

Merged
yi-xmu merged 4 commits intoeloq-10.6.10from
support_build_with_eloqstore
Dec 9, 2025
Merged

Support build with eloqstore#176
yi-xmu merged 4 commits intoeloq-10.6.10from
support_build_with_eloqstore

Conversation

@yi-xmu
Copy link
Collaborator

@yi-xmu yi-xmu commented Dec 4, 2025

Summary by CodeRabbit

  • Chores
    • Integrated additional source dependency for eloqstore across nightly, release, and debug build pipelines.
    • Expanded and renamed build tasks to support eloqdss-based workflows and propagate logging-state configuration.
    • Reorganized build and packaging flows to use a unified data_substrate layout and updated tarball assembly/cleanup.
    • Added inputs to build tasks so eloqstore sources are included during tarball builds.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 4, 2025

Walkthrough

Adds eloqstore sources and build tasks to multiple Concourse pipelines, updates build tasks to accept the new input, and migrates build script paths and submodule logic from storage/eloq/* to data_substrate/* with conditional ELOQ module enabling and updated packaging/upload steps. (50 words)

Changes

Cohort / File(s) Summary
Pipeline: debug
concourse/pipeline/build_debug_tarball.yml
Adds git resource eloqstore_src_main (main branch), adds - get: eloqstore_src to ubuntu2204-main, inserts build-eloqstore-type task with params (DATA_STORE_TYPE=ELOQDSS_ELOQSTORE, OUT_NAME=debug, WITH_LOG_STATE=ROCKSDB, etc.).
Pipeline: nightly & release
concourse/pipeline/build_nightly_tarball.yml, concourse/pipeline/build_release_tarball.yml
Adds eloqstore_src_main resource and - get: eloqstore_src across OS job plans; renames/inserts eloqdss-related task names (build-eloqdss-...) and adds WITH_LOG_STATE params (ROCKSDB*, CLOUD_S3/GCS variants) to multiple tasks.
Tasks: inputs
concourse/tasks/build_debug_tarball.yml, concourse/tasks/build_nightly_tarball.yml, concourse/tasks/build_release_tarball.yml
Adds new input eloqstore_src to these Concourse task definitions; run steps unchanged.
Script: build logic
concourse/scripts/build_tarball.bash
Migrates references from storage/eloq/... to data_substrate/...; adds git submodule sync/update for data_substrate/eloq_log_service and data_substrate/.../eloq_data_store_service; enables -DELOQ_MODULE_ENABLED=ON in CMake for ELOQDSS builds; updates tarball assembly, packaging, upload and cleanup paths to data_substrate layout; adjusts DSS conditional flows and upload logic.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas needing attention:
    • concourse/scripts/build_tarball.bash — ensure all path migrations and submodule commands are consistent and safe.
    • CMake flag propagation (-DELOQ_MODULE_ENABLED=ON) across main and DSS flows.
    • Pipeline/task wiring — resource names (eloqstore_src_main / eloqstore_src) and task renames (build-eloqstore-typebuild-eloqdss-...) are consistent across files.
    • WITH_LOG_STATE parameter values across OS/job variants.

Possibly related PRs

  • Fix compile error #169 — touches ELOQ data-store build flow and updates storage/CMake for ROCKSDB_CLOUD_S3 variants; likely related to the data_substrate/CMake changes in this PR.

Suggested labels

trigger-ci

Suggested reviewers

  • lzxddz
  • xiexiaoy

Poem

🐰 A tiny hop, a new repo near,
data_substrate paths now crystal clear,
builds wake up and tarballs sing,
submodules dance and flags take wing,
hooray — the pipeline hops with cheer!

Pre-merge checks and finishing touches

❌ 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%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Support build with eloqstore' accurately describes the main objective of the pull request, which adds eloqstore support to multiple build pipelines and related scripts.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch support_build_with_eloqstore

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.

@yi-xmu yi-xmu force-pushed the support_build_with_eloqstore branch from b010d3d to 4a49225 Compare December 9, 2025 08:02
@yi-xmu yi-xmu self-assigned this Dec 9, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
concourse/pipeline/build_nightly_tarball.yml (1)

100-113: Task naming is inconsistent across pipelines for ELOQDSS_ELOQSTORE data store type.

The nightly and release pipelines both use build-eloqdss-eloqstore-type for ELOQDSS_ELOQSTORE tasks, but the debug pipeline uses build-eloqstore-type (without the eloqdss- prefix). This creates an inconsistency across pipelines for the same data store type.

Should the debug tarball task be renamed to build-eloqdss-eloqstore-type to match the nightly and release pipelines?

concourse/scripts/build_tarball.bash (1)

79-82: build_upload_log_srv function missing cases for ROCKSDB and ELOQSTORE DATA_STORE_TYPE values.

The build_upload_log_srv function (lines 279–283) only handles ELOQDSS_ROCKSDB_CLOUD_S3 and ELOQDSS_ROCKSDB_CLOUD_GCS cases by setting -DWITH_LOG_STATE. When BUILD_LOG_SRV=true is combined with DATA_STORE_TYPE=ELOQDSS_ROCKSDB or ELOQDSS_ELOQSTORE, the function doesn't set WITH_LOG_STATE in cmake_args, causing cmake to fail with "Unknown WITH_LOG_STATE" error (storage/eloq/CMakeLists.txt line 42). These combinations are actively used in pipelines (build_release_tarball.yml).

Add cases for ROCKSDB and ELOQSTORE:

elif [ "$ds_type" = "ELOQDSS_ROCKSDB" ]; then
    cmake_args="$cmake_args -DWITH_LOG_STATE=ROCKSDB"
elif [ "$ds_type" = "ELOQDSS_ELOQSTORE" ]; then
    cmake_args="$cmake_args -DWITH_LOG_STATE=ROCKSDB_CLOUD_GCS"
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4a49225 and 9aa826c.

📒 Files selected for processing (6)
  • concourse/pipeline/build_debug_tarball.yml (4 hunks)
  • concourse/pipeline/build_nightly_tarball.yml (17 hunks)
  • concourse/pipeline/build_release_tarball.yml (23 hunks)
  • concourse/scripts/build_tarball.bash (6 hunks)
  • concourse/tasks/build_nightly_tarball.yml (1 hunks)
  • concourse/tasks/build_release_tarball.yml (1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: githubzilla
Repo: eloqdata/eloqsql PR: 127
File: storage/eloq/build_log_service.cmake:97-124
Timestamp: 2025-09-25T11:41:40.111Z
Learning: The `storage/eloq/build_log_service.cmake` file is specifically for the open log service build and only supports ROCKSDB as its log state backend. Unlike the enterprise version in `build_eloq_log_service.cmake`, it does not need to handle cloud-specific variants like ROCKSDB_CLOUD_S3 or ROCKSDB_CLOUD_GCS.
📚 Learning: 2025-09-25T11:41:40.111Z
Learnt from: githubzilla
Repo: eloqdata/eloqsql PR: 127
File: storage/eloq/build_log_service.cmake:97-124
Timestamp: 2025-09-25T11:41:40.111Z
Learning: The `storage/eloq/build_log_service.cmake` file is specifically for the open log service build and only supports ROCKSDB as its log state backend. Unlike the enterprise version in `build_eloq_log_service.cmake`, it does not need to handle cloud-specific variants like ROCKSDB_CLOUD_S3 or ROCKSDB_CLOUD_GCS.

Applied to files:

  • concourse/scripts/build_tarball.bash
  • concourse/pipeline/build_nightly_tarball.yml
  • concourse/pipeline/build_debug_tarball.yml
  • concourse/pipeline/build_release_tarball.yml
📚 Learning: 2025-09-25T11:40:48.717Z
Learnt from: githubzilla
Repo: eloqdata/eloqsql PR: 127
File: concourse/scripts/main.bash:164-165
Timestamp: 2025-09-25T11:40:48.717Z
Learning: The main.bash script in concourse/scripts/main.bash is for open log build, which only supports ROCKSDB as the log state option and does not need cloud-specific variants like ROCKSDB_CLOUD_S3.

Applied to files:

  • concourse/scripts/build_tarball.bash
  • concourse/pipeline/build_nightly_tarball.yml
  • concourse/pipeline/build_debug_tarball.yml
  • concourse/pipeline/build_release_tarball.yml
📚 Learning: 2025-11-07T05:12:43.208Z
Learnt from: githubzilla
Repo: eloqdata/eloqsql PR: 154
File: storage/eloq/ha_eloq.cc:2770-2781
Timestamp: 2025-11-07T05:12:43.208Z
Learning: In eloqdata/eloqsql, storage/eloq/ha_eloq.cc (KV_ELOQDS path): for DATA_STORE_TYPE_ELOQDSS_ROCKSDB (local RocksDB), each eloqsql instance owns its own RocksDB instance, and passing create_if_missing=true to DataStoreService::StartService is intentional and safe.

Applied to files:

  • concourse/scripts/build_tarball.bash
📚 Learning: 2025-09-25T11:33:33.221Z
Learnt from: githubzilla
Repo: eloqdata/eloqsql PR: 127
File: concourse/scripts/build_tarball_open.bash:136-136
Timestamp: 2025-09-25T11:33:33.221Z
Learning: The open log service (OPEN_LOG_SERVICE=ON) in concourse/scripts/build_tarball_open.bash only supports ROCKSDB as its log state and does not use the WITH_LOG_STATE parameter that was introduced to replace USE_ROCKSDB_LOG_STATE in other parts of the codebase.

Applied to files:

  • concourse/scripts/build_tarball.bash
  • concourse/pipeline/build_nightly_tarball.yml
  • concourse/pipeline/build_debug_tarball.yml
  • concourse/pipeline/build_release_tarball.yml
🧬 Code graph analysis (1)
concourse/scripts/build_tarball.bash (1)
concourse/scripts/build_tarball_open.bash (1)
  • copy_libraries (107-115)
🔇 Additional comments (10)
concourse/tasks/build_release_tarball.yml (1)

8-8: Input declaration aligns with pipeline changes.

Adding eloqstore_src as an input is consistent with the pipeline's new get: eloqstore_src steps and the build script's conditional eloqstore setup.

concourse/scripts/build_tarball.bash (3)

25-45: Submodule orchestration and data_substrate paths look correct.

The conditional eloqstore setup (lines 38–45) properly gates on DATA_STORE_TYPE and follows the same pattern as logservice and raft_host_manager. The git submodule operations are appropriate for pulling transitive dependencies.


279-283: Log server build derives flags from DATA_STORE_TYPE, not WITH_LOG_STATE.

The build_upload_log_srv function checks ds_type (which is DATA_STORE_TYPE) to set CMake flags for ROCKSDB_CLOUD_S3 and ROCKSDB_CLOUD_GCS, but does not reference the WITH_LOG_STATE parameter. If WITH_LOG_STATE is meant to control log server configuration, this function should be updated to use it.

Does WITH_LOG_STATE need to be threaded through to build_upload_log_srv, or is deriving it from DATA_STORE_TYPE the correct approach?


64-66: Verify intentional use of different WITH_LOG_STATE backends across build pipeline types.

The WITH_LOG_STATE values for ELOQDSS_ELOQSTORE builds differ across pipelines: debug uses ROCKSDB, nightly uses ROCKSDB_CLOUD_S3, and release uses ROCKSDB_CLOUD_GCS (at lines 66, 112/175/238/301, and 124/194/263/333/401/466 respectively). This pattern suggests the differences may be intentional—debug builds use local-only storage while nightly and release builds target cloud-backed deployments. However, without comments or documentation explaining this design choice, it remains unclear if these differences are deliberate or inconsistently configured. Please confirm whether this design is intentional and, if so, add comments to the pipeline files clarifying why different backends are used for different build types.

concourse/tasks/build_nightly_tarball.yml (1)

8-8: Input declaration is consistent across tarball task definitions.

concourse/pipeline/build_nightly_tarball.yml (1)

46-52: Resource and dependency structure is well-organized.

The new eloqstore_src_main resource is properly defined and consistently fetched across all OS variant jobs. The pattern mirrors the existing logservice and raft_host_manager resources.

Also applies to: 65-66, 128-129, 191-192, 254-255

concourse/pipeline/build_debug_tarball.yml (1)

28-34: Resource definition and dependency fetching are consistent with other pipelines.

Also applies to: 47-48

concourse/pipeline/build_release_tarball.yml (3)

54-60: Resource and dependency structure follows established patterns.

The eloqstore_src_main resource is properly integrated across all OS variant jobs, mirroring the structure used in nightly and debug pipelines.

Also applies to: 73-74, 143-144, 212-213, 282-283, 352-353, 417-418


78-78: Task naming refactor improves consistency.

Renaming build-rocksdb-cloud-s3-type to build-eloqdss-rocksdb-cloud-s3-type adds a consistent eloqdss- prefix, aligning it with other ELOQDSS variant tasks. This is a good refactoring.

Also applies to: 148-148, 217-217, 287-287, 357-357, 422-422


112-127: Verify the intended WITH_LOG_STATE backend for ELOQDSS_ELOQSTORE release builds.

The build-eloqdss-eloqstore-type tasks across all six OS variants consistently use WITH_LOG_STATE: ROCKSDB_CLOUD_GCS, which differs from debug builds (ROCKSDB) and nightly builds (ROCKSDB_CLOUD_S3) for the same DATA_STORE_TYPE. This inconsistency appears across lines 112-127, 182-197, 251-266, 321-336, 389-403, and 454-468.

Confirm whether GCS is intentional for release tarball eloqstore builds, or whether it should match the nightly value (ROCKSDB_CLOUD_S3).

Comment on lines +52 to +68
- task: build-eloqstore-type
file: eloqsql_src/concourse/tasks/build_debug_tarball.yml
image: image_ubuntu2204
params:
ASAN: "ON"
TAGGED: ""
GIT_SSH_KEY: ((git-key))
AWS_ACCESS_KEY_ID: ((aws_access_key_id))
AWS_DEFAULT_REGION: ((aws-region))
AWS_SECRET_ACCESS_KEY: ((aws_secret_access_key))
BUILD_LOG_SRV: "true"
BUILD_TYPE: Debug
DATA_STORE_TYPE: ELOQDSS_ELOQSTORE
OUT_NAME: debug
WITH_LOG_STATE: ROCKSDB
CLOUDFRONT_DIST: ((cloudfront-dist))

Copy link

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:

#!/bin/bash
# Find pipeline files (nightly and release)
find . -type f -name "*pipeline*" -o -name "*nightly*" -o -name "*release*" | head -20

Repository: eloqdata/eloqsql

Length of output: 176


🏁 Script executed:

#!/bin/bash
# Search for task names containing "eloqstore" or "eloqdss-eloqstore"
rg "build-eloq.*store.*type" --type yaml

Repository: eloqdata/eloqsql

Length of output: 973


Task naming differs from nightly and release pipelines.

The task build-eloqstore-type is inconsistent with nightly (build_nightly_tarball.yml) and release (build_release_tarball.yml) pipelines, which both use build-eloqdss-eloqstore-type. Consider renaming to align with the established naming convention across build pipelines.

🤖 Prompt for AI Agents
In concourse/pipeline/build_debug_tarball.yml around lines 52 to 68, the task
name "build-eloqstore-type" is inconsistent with nightly/release pipelines;
rename the task to "build-eloqdss-eloqstore-type" to match the established
convention, update any task references in this pipeline or other
pipelines/parent jobs that call this task to the new name, and run a quick
pipeline config lint or dry-run to ensure no remaining references break.

@yi-xmu yi-xmu merged commit ec85d6c into eloq-10.6.10 Dec 9, 2025
3 checks passed
@yi-xmu yi-xmu deleted the support_build_with_eloqstore branch December 9, 2025 14:49
@coderabbitai coderabbitai bot mentioned this pull request Jan 16, 2026
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.

Update the CI pipeline to support flexible configuration of WITH_LOG_STATE

2 participants