Skip to content

DO NOT MERGE: OCPBUGS-103516: posix_fadvise variant for perfscale comparison - #399

Draft
hasbro17 wants to merge 1 commit into
openshift:mainfrom
hasbro17:perfscale-fadvise
Draft

DO NOT MERGE: OCPBUGS-103516: posix_fadvise variant for perfscale comparison#399
hasbro17 wants to merge 1 commit into
openshift:mainfrom
hasbro17:perfscale-fadvise

Conversation

@hasbro17

@hasbro17 hasbro17 commented Aug 11, 2026

Copy link
Copy Markdown

DO NOT MERGE — throwaway PR for perfscale data gathering only.

Points bbolt (via go.mod replace) at the experimental
hasbro17/bbolt fadvise-random
branch, which replaces madvise(MADV_RANDOM) with
posix_fadvise(POSIX_FADV_RANDOM) on the database fd.

Both suppress readahead, but posix_fadvise zeroes the file's readahead
window without setting VM_RAND_READ, so on Linux 6.4+ it avoids the
aggressive page-cache eviction that MADV_RANDOM now triggers.

Purpose: a control-plane-fips-24nodes perfscale run to compare
posix_fadvise against:

on the same kernel 6.4+ infra, to inform the upstream argument in
etcd-io/bbolt#939.

Do not merge or review — this branch will be deleted once the data is
collected.

Ref: etcd-io/bbolt#939
Ref: https://redhat.atlassian.net/browse/OCPBUGS-103516

Summary by CodeRabbit

  • Chores
    • Updated the embedded database dependency to a newer maintained version.
    • Applied the dependency update consistently across application, server, utility, and test components.

…r perfscale

Add a go.mod replace directive pointing bbolt at the experimental
hasbro17/bbolt fadvise-random branch, which replaces madvise(MADV_RANDOM)
with posix_fadvise(POSIX_FADV_RANDOM) (see etcd-io/bbolt#939).

Throwaway branch for a control-plane-fips-24nodes perfscale run, to
compare posix_fadvise against full MADV_RANDOM removal (etcd-io#395) and the
broken baseline (etcd-io#397) on kernel 6.4+. Must not be merged.

Ref: etcd-io/bbolt#939
Ref: https://redhat.atlassian.net/browse/OCPBUGS-103516

Assisted-by: Claude Code (Opus 4.8)
@openshift-merge-bot

Copy link
Copy Markdown

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Aug 11, 2026
@openshift-ci

openshift-ci Bot commented Aug 11, 2026

Copy link
Copy Markdown

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci-robot openshift-ci-robot added jira/severity-critical Referenced Jira bug's severity is critical for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Aug 11, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@hasbro17: This pull request references Jira Issue OCPBUGS-103516, which is invalid:

  • expected the bug to be in one of the following states: NEW, ASSIGNED, POST, but it is ON_QA instead

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

DO NOT MERGE — throwaway PR for perfscale data gathering only.

Points bbolt (via go.mod replace) at the experimental
hasbro17/bbolt fadvise-random
branch, which replaces madvise(MADV_RANDOM) with
posix_fadvise(POSIX_FADV_RANDOM) on the database fd.

Both suppress readahead, but posix_fadvise zeroes the file's readahead
window without setting VM_RAND_READ, so on Linux 6.4+ it avoids the
aggressive page-cache eviction that MADV_RANDOM now triggers.

Purpose: a control-plane-fips-24nodes perfscale run to compare
posix_fadvise against:

on the same kernel 6.4+ infra, to inform the upstream argument in
etcd-io/bbolt#939.

Do not merge or review — this branch will be deleted once the data is
collected.

Ref: etcd-io/bbolt#939
Ref: https://redhat.atlassian.net/browse/OCPBUGS-103516

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Aug 11, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: hasbro17

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 11, 2026
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Walkthrough

The pull request updates the go.etcd.io/bbolt replacement in four Go modules. All replacements now target the Hasbro fork at version v1.3.7-0.20260811212650-b0af58f3a325.

Changes

bbolt replacement update

Layer / File(s) Summary
Update bbolt module replacements
go.mod, etcdutl/go.mod, server/go.mod, tests/go.mod
The go.etcd.io/bbolt replacement changes from the OpenShift fork to github.com/hasbro17/bbolt at the pinned pseudo-version.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Possibly related PRs

  • openshift/etcd#397: Updates the go.etcd.io/bbolt replacement directives in the same four go.mod files.

Suggested reviewers: ivanvc

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the posix_fadvise variant and its perfscale comparison purpose.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Stable And Deterministic Test Names ✅ Passed The diff changes only four go.mod files and four go.sum files. It adds no Ginkgo declarations or test-title changes, so no dynamic test name was introduced.
Test Structure And Quality ✅ Passed The diff changes only four go.mod files and four go.sum files; no Ginkgo test code, It blocks, setup, waits, or assertions were added or modified.
Microshift Test Compatibility ✅ Passed The PR changes only bbolt replacement directives and go.sum files; the parent diff adds no Ginkgo e2e tests, so MicroShift test compatibility is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The pull request changes only four go.mod replacement directives and their go.sum entries; it adds no Ginkgo e2e tests or test bodies with SNO-relevant assumptions.
Topology-Aware Scheduling Compatibility ✅ Passed The commit changes only four go.mod files and their go.sum files to replace bbolt; it adds no manifests, operators, controllers, or scheduling constraints.
Ote Binary Stdout Contract ✅ Passed The HEAD diff changes only go.mod/go.sum metadata; no OTE source or suite setup changed. Replaced bbolt defaults logging to io.Discard and fadvise emits no stdout.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The diff changes only four go.mod and four go.sum files; it adds no Go source or Ginkgo e2e tests, so this check is not applicable.
No-Weak-Crypto ✅ Passed The diff only changes bbolt replacement and checksums. The selected bbolt source adds posix_fadvise and contains no MD5, SHA1, DES, RC4, Blowfish, ECB, or crypto comparisons.
Container-Privileges ✅ Passed The diff changes only four go.mod replacements and four go.sum files; no container/Kubernetes manifest or listed privilege setting was introduced.
No-Sensitive-Data-In-Logs ✅ Passed The PR changes only bbolt replace directives and checksums; no logging code or sensitive-data fields were added, and the replacement fadvise path emits only kernel errors.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@hasbro17

Copy link
Copy Markdown
Author

/payload-job periodic-ci-openshift-eng-ocp-perfscale-main-aws-5.0-nightly-x86-control-plane-fips-24nodes

@openshift-ci

openshift-ci Bot commented Aug 11, 2026

Copy link
Copy Markdown

@hasbro17: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-eng-ocp-perfscale-main-aws-5.0-nightly-x86-control-plane-fips-24nodes

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/daa2fb50-95cb-11f1-97d4-2642cf99feaf-0

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 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 `@etcdutl/go.mod`:
- Line 98: Update the bbolt replacements in etcdutl/go.mod:98 and
server/go.mod:94 to document the fork’s provenance and why it is required for
the Linux mmap advice changes, while retaining the pinned fork version. Add or
reference the requested SBOM, MIT-license, OSV, and artifact-signing evidence,
and validate the change with etcdutl and server tests plus Linux compaction,
recovery, and performance checks.

In `@go.mod`:
- Line 105: Record the bbolt fork in bill-of-materials.json by replacing
go.etcd.io/bbolt with github.com/hasbro17/bbolt and its pinned commit,
documenting the fork’s vulnerability review including GO-2026-4923, and adding
signed provenance for release artifacts. Apply the corresponding
dependency-source metadata update for go.mod:105, etcdutl/go.mod:98,
server/go.mod:94, and tests/go.mod:110; these four sites require no direct code
change beyond ensuring the BOM reflects each replacement consistently.
🪄 Autofix

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: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 2f4b6c63-283a-43b6-afbb-69ee7e252adf

📥 Commits

Reviewing files that changed from the base of the PR and between 609b11e and e57508a.

⛔ Files ignored due to path filters (4)
  • etcdutl/go.sum is excluded by !**/*.sum
  • go.sum is excluded by !**/*.sum
  • server/go.sum is excluded by !**/*.sum
  • tests/go.sum is excluded by !**/*.sum
📒 Files selected for processing (4)
  • etcdutl/go.mod
  • go.mod
  • server/go.mod
  • tests/go.mod

Comment thread etcdutl/go.mod
)

replace go.etcd.io/bbolt => github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15
replace go.etcd.io/bbolt => github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

git clone --filter=blob:none --no-checkout \
  https://github.com/hasbro17/bbolt.git "$tmp/hasbro17-bbolt"
git -C "$tmp/hasbro17-bbolt" fetch --depth=1 origin b0af58f3a325
git -C "$tmp/hasbro17-bbolt" fetch --depth=1 \
  https://github.com/etcd-io/bbolt.git \
  refs/tags/v1.4.3:refs/tags/v1.4.3

git -C "$tmp/hasbro17-bbolt" diff --stat \
  v1.4.3 b0af58f3a325 -- '*.go' go.mod

git -C "$tmp/hasbro17-bbolt" diff --name-status \
  v1.4.3 b0af58f3a325 -- '*.go' go.mod

Repository: openshift/etcd

Length of output: 254


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- module declarations and replacements ---'
for f in etcdutl/go.mod server/go.mod go.mod tests/go.mod; do
  if [ -f "$f" ]; then
    printf '\n[%s]\n' "$f"
    rg -n -C 3 'bbolt|module ' "$f"
  fi
done

printf '%s\n' '--- fork commit resolution ---'
curl -fsSL 'https://api.github.com/repos/hasbro17/bbolt/commits/b0af58f3a325' |
  jq '{sha: .sha, message: .commit.message, html_url: .html_url}'

printf '%s\n' '--- fork refs and tags ---'
curl -fsSL 'https://api.github.com/repos/hasbro17/bbolt/git/refs/tags/v1.3.7' |
  jq '{ref: .ref, object: .object}'
curl -fsSL 'https://api.github.com/repos/hasbro17/bbolt/git/refs/tags/v1.4.3' |
  jq '{ref: .ref, object: .object}' || true

printf '%s\n' '--- upstream v1.4.3 tag ---'
curl -fsSL 'https://api.github.com/repos/etcd-io/bbolt/git/refs/tags/v1.4.3' |
  jq '{ref: .ref, object: .object}'

Repository: openshift/etcd

Length of output: 2267


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- fork refs ---'
git ls-remote https://github.com/hasbro17/bbolt.git \
  'refs/heads/*' 'refs/tags/v*' |
  rg 'b0af58f3a325|refs/tags/v1\.4\.3|refs/tags/v1\.3\.7|refs/heads'

printf '%s\n' '--- upstream v1.4.3 refs ---'
git ls-remote https://github.com/etcd-io/bbolt.git \
  'refs/tags/v1.4.3' 'refs/tags/v1.4.3^{}'

printf '%s\n' '--- Go proxy pseudo-version metadata ---'
curl -fsSL \
  'https://proxy.golang.org/github.com/hasbro17/bbolt/@v/v1.3.7-0.20260811212650-b0af58f3a325.info' |
  jq .

printf '%s\n' '--- module checksums ---'
for module_version in \
  'github.com/hasbro17/bbolt@v1.3.7-0.20260811212650-b0af58f3a325' \
  'go.etcd.io/bbolt@v1.4.3'; do
  printf '\n[%s]\n' "$module_version"
  curl -fsSL "https://sum.golang.org/lookup/$module_version" || true
done

Repository: openshift/etcd

Length of output: 1676


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

git clone --filter=blob:none --no-checkout \
  https://github.com/hasbro17/bbolt.git "$tmp/bbolt"

git -C "$tmp/bbolt" fetch --depth=1 origin \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1

git -C "$tmp/bbolt" fetch --depth=1 \
  https://github.com/etcd-io/bbolt.git \
  refs/tags/v1.4.3:refs/tags/upstream-v1.4.3 \
  refs/tags/v1.4.3^{}:refs/remotes/upstream/v1.4.3-commit

printf '%s\n' '--- commits ---'
git -C "$tmp/bbolt" rev-parse \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1 \
  upstream-v1.4.3 \
  upstream/v1.4.3-commit

printf '%s\n' '--- diff summary ---'
git -C "$tmp/bbolt" diff --stat \
  upstream/v1.4.3-commit \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1 \
  -- '*.go' go.mod

printf '%s\n' '--- changed files ---'
git -C "$tmp/bbolt" diff --name-status \
  upstream/v1.4.3-commit \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1 \
  -- '*.go' go.mod

printf '%s\n' '--- module files ---'
git -C "$tmp/bbolt" show \
  upstream/v1.4.3-commit:go.mod
printf '\n[fork]\n'
git -C "$tmp/bbolt" show \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1:go.mod

Repository: openshift/etcd

Length of output: 396


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

git clone --filter=blob:none --no-checkout \
  https://github.com/hasbro17/bbolt.git "$tmp/bbolt"

git -C "$tmp/bbolt" fetch --depth=1 origin \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1

git -C "$tmp/bbolt" fetch --depth=1 \
  https://github.com/etcd-io/bbolt.git \
  refs/tags/v1.4.3:refs/tags/upstream-v1.4.3

fork_commit="$(git -C "$tmp/bbolt" rev-parse \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1^{commit})"
upstream_commit="$(git -C "$tmp/bbolt" rev-parse \
  refs/tags/upstream-v1.4.3^{commit})"

printf '%s\n' '--- commits ---'
printf 'fork:     %s\n' "$fork_commit"
printf 'upstream: %s\n' "$upstream_commit"

printf '%s\n' '--- diff summary ---'
git -C "$tmp/bbolt" diff --stat \
  "$upstream_commit" "$fork_commit" -- '*.go' go.mod

printf '%s\n' '--- changed files ---'
git -C "$tmp/bbolt" diff --name-status \
  "$upstream_commit" "$fork_commit" -- '*.go' go.mod

printf '%s\n' '--- module files ---'
git -C "$tmp/bbolt" show "$upstream_commit:go.mod"
printf '\n[fork]\n'
git -C "$tmp/bbolt" show "$fork_commit:go.mod"

Repository: openshift/etcd

Length of output: 2195


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

git clone --filter=blob:none --no-checkout \
  https://github.com/hasbro17/bbolt.git "$tmp/bbolt"

git -C "$tmp/bbolt" fetch --depth=1 origin \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1

git -C "$tmp/bbolt" fetch --depth=1 \
  https://github.com/etcd-io/bbolt.git \
  refs/tags/v1.4.3:refs/tags/upstream-v1.4.3

fork_commit="$(git -C "$tmp/bbolt" rev-parse \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1^{commit})"
upstream_commit="$(git -C "$tmp/bbolt" rev-parse \
  refs/tags/upstream-v1.4.3^{commit})"

printf '%s\n' '--- source diff ---'
git -C "$tmp/bbolt" diff --no-ext-diff --unified=80 \
  "$upstream_commit" "$fork_commit" -- \
  bolt_fadvise_linux.go bolt_fadvise_other.go bolt_unix.go

printf '%s\n' '--- local dependency and policy metadata ---'
git ls-files '*go.sum' '*LICENSE*' '*NOTICE*' '*SBOM*' '*provenance*' \
  '.github/workflows/*' |
  sed -n '1,160p'

printf '%s\n' '--- bbolt references in checksums and workflows ---'
rg -n -C 2 'bbolt|cosign|sigstore|provenance|attest|sbom|osv' \
  --glob '*go.sum' --glob '.github/workflows/**' --glob 'Makefile*' \
  --glob 'README*' . || true

Repository: openshift/etcd

Length of output: 10033


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- fork license files ---'
for path in LICENSE COPYING NOTICE; do
  url="https://raw.githubusercontent.com/hasbro17/bbolt/b0af58f3a3257e164b9c1f397d27766c5f6b8ba1/$path"
  status="$(curl -sS -o "/tmp/$path" -w '%{http_code}' "$url" || true)"
  printf '%s: HTTP %s\n' "$path" "$status"
  if [ "$status" = 200 ]; then
    sed -n '1,12p' "/tmp/$path"
  fi
done

printf '%s\n' '--- OSV records for upstream and fork module identities ---'
for module in go.etcd.io/bbolt github.com/hasbro17/bbolt; do
  printf '\n[%s]\n' "$module"
  curl -fsSL -X POST https://api.osv.dev/v1/query \
    -H 'content-type: application/json' \
    --data "{\"package\":{\"ecosystem\":\"Go\",\"name\":\"$module\"}}" |
    jq -r '.vulns[]? | [.id, .summary] | `@tsv`'
done

Repository: openshift/etcd

Length of output: 909


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- release and artifact workflows ---'
for file in $(git ls-files '.github/workflows/*'); do
  if rg -qi 'release|artifact|image|cosign|sigstore|provenance|attest|sbom|sign' "$file"; then
    printf '\n[%s]\n' "$file"
    rg -n -C 3 -i \
      'release|artifact|cosign|sigstore|provenance|attest|sbom|sign' "$file"
  fi
done

Repository: openshift/etcd

Length of output: 2175


Document the fork provenance and validate the Linux mmap change.

The fork matches upstream go.etcd.io/bbolt v1.4.3 except for the mmap advice files. Run the etcdutl and server tests, plus Linux compaction, recovery, and performance checks. Document the need for this fork and provide provenance, SBOM, and artifact-signing evidence. go.sum pins the content, the fork uses the MIT license, and OSV reports no advisories.

📍 Affects 2 files
  • etcdutl/go.mod#L98-L98 (this comment)
  • server/go.mod#L94-L94
🤖 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 `@etcdutl/go.mod` at line 98, Update the bbolt replacements in
etcdutl/go.mod:98 and server/go.mod:94 to document the fork’s provenance and why
it is required for the Linux mmap advice changes, while retaining the pinned
fork version. Add or reference the requested SBOM, MIT-license, OSV, and
artifact-signing evidence, and validate the change with etcdutl and server tests
plus Linux compaction, recovery, and performance checks.

Comment thread go.mod
)

replace go.etcd.io/bbolt => github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15
replace go.etcd.io/bbolt => github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

repo="hasbro17/bbolt"
module="github.com/${repo}"
version="v1.3.7-0.20260811212650-b0af58f3a325"
commit="b0af58f3a325"

curl -fsSL "https://api.github.com/repos/${repo}/commits/${commit}" |
  jq -e --arg prefix "${commit}" '.sha | startswith($prefix)'

curl -fsSL "https://api.github.com/repos/${repo}/license?ref=${commit}" |
  jq -r '.license.spdx_id // "UNKNOWN"'

curl -fsSL -X POST "https://api.osv.dev/v1/query" \
  -H "content-type: application/json" \
  -d "{\"package\":{\"name\":\"${module}\",\"ecosystem\":\"Go\"},\"version\":\"${version}\"}" |
  jq '{vulnerabilities: [.vulns[]?.id]}'

while IFS= read -r file; do
  rg -n -F "replace go.etcd.io/bbolt => ${module} ${version}" "$file"
done < <(fd -HI -t f '^go\.mod$')

while IFS= read -r file; do
  rg -n -F "${module} ${version}" "$file"
done < <(fd -HI -t f '^go\.sum$')

fd -HI -t f |
  rg '(^|/)(Makefile|.*\.(yaml|yml|sh|toml|json))$' |
  while IFS= read -r file; do
    rg -n -i 'sbom|cyclonedx|spdx|provenance|slsa|cosign|sigstore|attest' "$file" || true
  done

Repository: openshift/etcd

Length of output: 201


🏁 Script executed:

#!/usr/bin/env bash
set -u

printf '%s\n' '--- replacement declarations ---'
for file in go.mod etcdutl/go.mod server/go.mod tests/go.mod; do
  if [ -f "$file" ]; then
    rg -n -C 2 'go\.etcd\.io/bbolt|github\.com/hasbro17/bbolt' "$file"
  fi
done

printf '%s\n' '--- fork version in sums and module files ---'
rg -n -F 'github.com/hasbro17/bbolt' --glob 'go.sum' --glob 'go.mod' . || true

printf '%s\n' '--- dependency and release metadata files ---'
git ls-files | rg '(^|/)(go\.sum|Makefile|.*\.(yaml|yml|sh|toml|json))$' | sed -n '1,240p'

printf '%s\n' '--- supply-chain controls ---'
rg -n -i 'sbom|cyclonedx|spdx|provenance|slsa|cosign|sigstore|attest|license|osv|vulnerabilit' \
  --glob 'Makefile' --glob '*.yaml' --glob '*.yml' --glob '*.sh' --glob '*.toml' --glob '*.json' . || true

Repository: openshift/etcd

Length of output: 18225


🌐 Web query:

hasbro17/bbolt b0af58f3a325 v1.3.7-0.20260811212650-b0af58f3a325 GitHub

💡 Result:

The GitHub repository hasbro17/bbolt is an unofficial fork of the bbolt key/value database [1]. The primary, authoritative repository for bbolt is etcd-io/bbolt [2][3][4]. The specific identifier v1.3.7-0.20260811212650-b0af58f3a325 is a pseudo-version string typically generated by the Go module system (Go Modules) [3]. This format indicates a dependency on a specific commit (b0af58f3a325) from the repository, dated August 11, 2026 [1][3]. Because hasbro17/bbolt is not the official repository, this version string likely reflects a user-specific fork or a dependency resolution quirk rather than an official release from the maintainers of the bbolt project [1][4]. The official bbolt project uses semantic versioning and is managed under the etcd-io organization [4]. As of August 2026, the latest official release for bbolt is v1.5.0 [4]. Users are strongly advised to use the official module path, go.etcd.io/bbolt, which points to the etcd-io/bbolt repository, to ensure they are using the maintained and stable version of the software [3].

Citations:


🌐 Web query:

site:github.com/hasbro17/bbolt license bbolt

💡 Result:

The bbolt database project is licensed under the MIT License [1]. This is a permissive free software license that allows for broad use, modification, and distribution of the software [1].

Citations:


🌐 Web query:

OSV github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325

💡 Result:

The OSV (Open Source Vulnerabilities) database does not contain a specific entry for the fork github.com/hasbro17/bbolt [1]. However, the primary upstream library for bbolt, go.etcd.io/bbolt, has been associated with vulnerability GO-2026-4923 (also tracked as CVE-2026-33817) [2][3][4]. This vulnerability involves an index out-of-range panic when calling Bucket.Stats on a branch page with zero elements, typically caused by database corruption [4]. While this issue was patched in the official etcd-io/bbolt repository [4], it is important to verify if the hasbro17 fork has incorporated these or other upstream security patches, as independent forks may diverge from the official maintenance track [1].

Citations:


🏁 Script executed:

#!/usr/bin/env bash
set -u

module='github.com/hasbro17/bbolt'
version='v1.3.7-0.20260811212650-b0af58f3a325'
encoded_module='github.com/hasbro17/bbolt'

printf '%s\n' '--- Go proxy metadata ---'
for suffix in info mod zip; do
  url="https://proxy.golang.org/${encoded_module}/@v/${version}.${suffix}"
  printf '%s\n' "$url"
  curl -fsSL "$url" | if [ "$suffix" = zip ]; then wc -c; else sed -n '1,80p'; fi || true
done

printf '%s\n' '--- Go checksum database record ---'
curl -fsSL "https://sum.golang.org/lookup/${module}@${version}" | sed -n '1,120p' || true

printf '%s\n' '--- Fork source metadata at the pinned commit ---'
for path in LICENSE COPYING go.mod; do
  url="https://raw.githubusercontent.com/hasbro17/bbolt/b0af58f3a325/${path}"
  printf '%s\n' "$url"
  curl -fsSL "$url" | sed -n '1,40p' || true
done

printf '%s\n' '--- BOM entries for bbolt ---'
for file in bill-of-materials.json bill-of-materials.override.json; do
  if [ -f "$file" ]; then
    printf '%s\n' "$file"
    jq -r '.. | objects | select((tostring | test("bbolt"; "i"))) ' "$file" 2>/dev/null | sed -n '1,100p'
  fi
done

printf '%s\n' '--- release and security workflow controls ---'
for file in .github/workflows/verify-released-assets.yaml .github/workflows/scorecards.yml .github/workflows/codeql-analysis.yml Makefile scripts/build-release.sh scripts/release.sh scripts/updatebom.sh; do
  if [ -f "$file" ]; then
    printf '%s\n' "--- $file"
    rg -n -i -C 2 'sbom|cyclonedx|spdx|provenance|slsa|cosign|sigstore|attest|license|vulnerabil|bill-of-materials' "$file" || true
  fi
done

Repository: openshift/etcd

Length of output: 5198


🏁 Script executed:

#!/usr/bin/env bash
set -u

python3 - <<'PY'
from pathlib import Path
import re

version = "v1.3.7-0.20260811212650-b0af58f3a325"
want = f"github.com/hasbro17/bbolt {version}"
files = ["go.sum", "etcdutl/go.sum", "server/go.sum", "tests/go.sum"]

for path in files:
    text = Path(path).read_text()
    matches = [line for line in text.splitlines()
               if line.startswith(want + " ")]
    print(f"{path}: {len(matches)} content checksum line(s)")
    for line in matches:
        print("  " + line)
    mod_matches = [line for line in text.splitlines()
                   if line.startswith(want + "/go.mod ")]
    print(f"{path}: {len(mod_matches)} go.mod checksum line(s)")
PY

Repository: openshift/etcd

Length of output: 922


🌐 Web query:

hasbro17 bbolt b0af58f3a325 LICENSE raw.githubusercontent.com

💡 Result:

The repository hasbro17/bbolt is a fork of the popular embedded key/value database for Go [1][2]. The project is licensed under the MIT License, which is standard for the bbolt project [1][3]. The specific reference "b0af58f3a325" appears to be an abbreviated git commit hash associated with the bbolt codebase, though it does not map to a primary branch or tag in the main etcd-io/bbolt repository [2]. Projects like this often maintain fork-specific history, but the core license terms for bbolt projects remain consistent with the original MIT license created by Ben Johnson [4][5][1][2]. If you are inspecting this file from a raw GitHub URL, it is retrieving the MIT license text from that specific point in the repository's history [4][5]. For production or development purposes, it is recommended to use the actively maintained version at github.com/etcd-io/bbolt [2][3].

Citations:


Record the fork in the supply-chain manifest before merging.

The four go.sum files authenticate the pinned commit, and the fork includes the MIT license. However, bill-of-materials.json identifies the dependency only as go.etcd.io/bbolt, not github.com/hasbro17/bbolt. Update the BOM to record the replacement source and commit. Document the fork’s vulnerability review, including upstream GO-2026-4923, and add signed provenance for release artifacts.

📍 Affects 4 files
  • go.mod#L105-L105 (this comment)
  • etcdutl/go.mod#L98-L98
  • server/go.mod#L94-L94
  • tests/go.mod#L110-L110
🤖 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 `@go.mod` at line 105, Record the bbolt fork in bill-of-materials.json by
replacing go.etcd.io/bbolt with github.com/hasbro17/bbolt and its pinned commit,
documenting the fork’s vulnerability review including GO-2026-4923, and adding
signed provenance for release artifacts. Apply the corresponding
dependency-source metadata update for go.mod:105, etcdutl/go.mod:98,
server/go.mod:94, and tests/go.mod:110; these four sites require no direct code
change beyond ensuring the BOM reflects each replacement consistently.

Source: Path instructions

@hasbro17

Copy link
Copy Markdown
Author

/test perfscale-control-plane-6nodes

@openshift-ci

openshift-ci Bot commented Aug 12, 2026

Copy link
Copy Markdown

@hasbro17: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/perfscale-control-plane-6nodes e57508a link false /test perfscale-control-plane-6nodes

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. jira/severity-critical Referenced Jira bug's severity is critical for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants