Skip to content

Update folly hash for 11.6 release#14912

Open
anand1976 wants to merge 4 commits into
mainfrom
update-folly-11.6
Open

Update folly hash for 11.6 release#14912
anand1976 wants to merge 4 commits into
mainfrom
update-folly-11.6

Conversation

@anand1976

Copy link
Copy Markdown
Contributor

Summary

  • Update folly.mk FOLLY_COMMIT_HASH to 2a68075b77d9

This is folly's main at release-cut time. Review and merge to take the bump, or close to skip folly for this release.

Part of 11.6 release workflow.

@meta-cla meta-cla Bot added the CLA Signed label Jul 2, 2026
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

✅ clang-tidy: No findings on changed lines

Completed in 0.0s.

@meta-codesync

meta-codesync Bot commented Jul 2, 2026

Copy link
Copy Markdown

@pdillinger has imported this pull request. If you are a Meta employee, you can view this in D110524765.

@meta-codesync

meta-codesync Bot commented Jul 2, 2026

Copy link
Copy Markdown

@pdillinger has imported this pull request. If you are a Meta employee, you can view this in D110524765.

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

Codex Code Review - OBSOLETE

Superseded by a newer AI review. Expand to see the original review.

🟡 Codex Code Review

Auto-triggered after CI reached the early-review threshold — reviewing commit b6ca6d8


Codex review failed before producing findings.

WARNING: proceeding, even though we could not create PATH aliases: Refusing to create helper binaries under temporary dir "/tmp" (codex_home: AbsolutePathBuf("/tmp/codex-home"))
error: the argument '--base <BRANCH>' cannot be used with '[PROMPT]'

Usage: codex exec review --commit <SHA> --base <BRANCH> --title <TITLE> --model <MODEL> --config <key=value> --dangerously-bypass-approvals-and-sandbox --output-last-message <FILE> [PROMPT]

For more information, try '--help'.

ℹ️ About this response

Generated by Codex CLI.
Review methodology: claude_md/code_review.md

Limitations:

  • Codex may miss context from files not in the diff
  • Large PRs may be truncated
  • Always apply human judgment to AI suggestions

Commands:

  • /codex-review [context] — Request a code review
  • /codex-query <question> — Ask about the PR or codebase

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

Claude Code Review - OBSOLETE

Superseded by a newer AI review. Expand to see the original review.

✅ Claude Code Review

Auto-triggered after CI reached the early-review threshold — reviewing commit b6ca6d8


Summary

This PR updates the pinned folly commit hash in folly.mk from 548b16da... to 2a68075b77d9..., bumping to folly's main at the 11.6 release-cut time. This is a routine dependency version bump with no logic, API, or behavioral changes to RocksDB code.

No high-severity findings.

Full review (click to expand)

Findings

🔴 HIGH

None.

🟡 MEDIUM

None.

🟢 LOW / NIT

L1. New folly commit not independently verified — folly.mk:101
  • Issue: The new commit hash 2a68075b77d9... should be verified to exist on facebook/folly main and to build successfully with RocksDB's checkout_folly + build_folly targets. The checkout_folly target applies source patches (missing <cstring> include in Exception.h, const mismatch in Subprocess.cpp) that may or may not still be needed or may need updating for the new folly version.
  • Suggested fix: Confirm CI passes with the folly build job (USE_FOLLY=1). If patches in checkout_folly are no longer needed or need updating, address in a follow-up.

Cross-Component Analysis

This change has zero cross-component impact within RocksDB itself. The FOLLY_COMMIT_HASH variable is only used by the checkout_folly Make target (folly.mk:138) to pin git reset --hard to a specific folly commit. No RocksDB source code, headers, build flags, or runtime behavior are modified.

Context Affected? Notes
Non-folly builds No Hash is unused unless make checkout_folly is invoked
USE_FOLLY=1 builds Yes Will fetch and build the new folly version
USE_FOLLY_LITE=1 builds Indirectly checkout_folly fetches boost/fmt sources used by LITE mode
All other build modes No No impact

Positive Observations

  • The change is minimal and well-scoped — exactly one variable updated.
  • The PR description clearly states the purpose (11.6 release workflow) and gives reviewers the option to close if folly bump should be skipped.
  • Pinning to a specific commit hash (rather than a branch) is good practice for reproducible builds.

ℹ️ About this response

Generated by Claude Code.
Review methodology: claude_md/code_review.md

Limitations:

  • Claude may miss context from files not in the diff
  • Large PRs may be truncated
  • Always apply human judgment to AI suggestions

Commands:

  • /claude-review [context] — Request a code review
  • /claude-query <question> — Ask about the PR or codebase

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

Codex Code Review - OBSOLETE

Superseded by a newer AI review. Expand to see the original review.

🟡 Codex Code Review

Auto-triggered after CI reached the early-review threshold — reviewing commit fec822a


Codex review failed before producing findings.

WARNING: proceeding, even though we could not create PATH aliases: Refusing to create helper binaries under temporary dir "/tmp" (codex_home: AbsolutePathBuf("/tmp/codex-home"))
error: the argument '--base <BRANCH>' cannot be used with '[PROMPT]'

Usage: codex exec review --commit <SHA> --base <BRANCH> --title <TITLE> --model <MODEL> --config <key=value> --dangerously-bypass-approvals-and-sandbox --output-last-message <FILE> [PROMPT]

For more information, try '--help'.

ℹ️ About this response

Generated by Codex CLI.
Review methodology: claude_md/code_review.md

Limitations:

  • Codex may miss context from files not in the diff
  • Large PRs may be truncated
  • Always apply human judgment to AI suggestions

Commands:

  • /codex-review [context] — Request a code review
  • /codex-query <question> — Ask about the PR or codebase

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

Claude Code Review - OBSOLETE

Superseded by a newer AI review. Expand to see the original review.

✅ Claude Code Review

Auto-triggered after CI reached the early-review threshold — reviewing commit fec822a


Summary

Straightforward build-system PR that updates the folly dependency for the 11.6 release: bumps the folly commit hash, removes the now-unnecessary double-conversion dependency, fixes gflags library version references (2.2 to 2.3), and improves library path discovery for libevent. Overall well-structured with one medium-severity consistency concern.

High-severity findings (0):
No high-severity findings.

Full review (click to expand)

Findings

🔴 HIGH

None.

🟡 MEDIUM

M1. folly.mk still hardcodes gflags .so.2.3 while CMakeLists.txt uses glob -- folly.mk:52-54
  • Issue: The CMakeLists.txt change correctly replaces the hardcoded libgflags_debug.so.2.2 with a file(GLOB ...) pattern to discover the versioned .so dynamically. However, folly.mk simply changes the hardcoded version from .so.2.2 to .so.2.3. The next time gflags is bumped, folly.mk will break again in the same way.
  • Root cause: Inconsistent approach between the two build systems. The Make path has the same brittleness the CMake path is fixing.
  • Suggested fix: This is a known trade-off -- Make doesn't have a clean glob equivalent. The current approach is pragmatic for a release-cut PR. Consider a follow-up to use $(wildcard ...) or $(shell ls ...) in Make, similar to how GLOG_LIB_PATH is resolved. Example:
    GFLAGS_DEBUG_SO = $(shell ls $(GFLAGS_PATH)/lib/libgflags_debug.so.* 2>/dev/null | head -1)
M2. CMake glob pattern may match multiple files -- CMakeLists.txt:700-706
  • Issue: file(GLOB GFLAGS_DEBUG_SHARED_LIBS "${GFLAGS_INST_PATH}/lib/libgflags_debug.so.*") could match both libgflags_debug.so.2.3 and libgflags_debug.so.2.3.0 (or similar). list(GET ... 0 ...) takes the first result, which in CMake glob is unspecified order (though typically alphabetical). If the first match is the SONAME symlink rather than the real file (or vice versa), linking should still work because the linker resolves symlinks, but the behavior is fragile.
  • Root cause: Glob returns all matches without version-aware sorting.
  • Suggested fix: Low risk in practice since getdeps produces a single version. For extra robustness, could filter to exclude the bare .so or use the shortest match. Acceptable as-is for a release-cut PR.

🟢 LOW / NIT

L1. CMake Debug gflags path is not tested in CI -- nightly.yml:98, 114
  • Issue: The nightly CI CMake+folly jobs use either no CMAKE_BUILD_TYPE (line 98, defaults to unset/empty) or Release (line 114). Neither exercises the if(CMAKE_BUILD_TYPE STREQUAL "Debug") path in CMakeLists.txt. The new glob code is untested in CI.
  • Suggested fix: This is pre-existing; the old hardcoded path was equally untested. Consider adding a Debug CMake+folly CI job in a follow-up.
L2. LIBEVENT_LIB_PATH multi-match risk -- folly.mk:33
  • Issue: $(shell (ls -d $(LIBEVENT_PATH)/lib*)) could return both lib and lib64 if both exist, resulting in multiple paths concatenated in PLATFORM_LDFLAGS. The same risk exists for the pre-existing GLOG_LIB_PATH and FMT_LIB_PATH.
  • Suggested fix: Pre-existing pattern; not introduced by this PR. Acceptable.
L3. CLAUDE.md change is tangential -- CLAUDE.md:246-250
  • Issue: The new CLAUDE.md guidance about thorough cross-build-system search is useful but not directly related to the folly hash update. It would be cleaner as a separate commit.
  • Suggested fix: Minor nit; bundling is acceptable for a release workflow PR.
L4. Hardcoded Boost-1.83.0 in CMakeLists.txt -- CMakeLists.txt:652
  • Issue: While not part of this diff, set(Boost_DIR ${BOOST_INST_PATH}/lib/cmake/Boost-1.83.0) is hardcoded. If the new folly commit bumps Boost, this will break. Worth verifying the new folly still uses Boost 1.83.0.
  • Suggested fix: Verify by checking the folly getdeps manifest for the new commit, or use a glob/find approach similar to the gflags fix.

Cross-Component Analysis

Context Code executes? Assumptions hold? Action needed?
Make + USE_FOLLY=1 YES YES (gflags 2.3 matches new getdeps) None
CMake + USE_FOLLY=1 + Debug YES YES (glob discovers version) CI coverage gap (L1)
CMake + USE_FOLLY=1 + Release YES N/A (debug block skipped) None
USE_FOLLY_LITE NO N/A (different code path) None
AIX platform YES YES (double-conversion removed consistently from both -I/-isystem paths) None
BUCK (internal) NO N/A (not affected by folly.mk) None

Positive Observations

  • The CMake glob approach for gflags is a clear improvement over hardcoding -- it prevents this same breakage in future version bumps.
  • The LIBEVENT_LIB_PATH addition follows the established pattern for GLOG_LIB_PATH and FMT_LIB_PATH.
  • The double-conversion removal is clean and complete within folly.mk (all 6 reference sites updated).
  • The FATAL_ERROR in CMake if the glob finds nothing provides a clear failure message.
  • The comment update ("some libraries" instead of "glog and fmt") correctly reflects the addition of libevent to the lib/lib64 pattern.

ℹ️ About this response

Generated by Claude Code.
Review methodology: claude_md/code_review.md

Limitations:

  • Claude may miss context from files not in the diff
  • Large PRs may be truncated
  • Always apply human judgment to AI suggestions

Commands:

  • /claude-review [context] — Request a code review
  • /claude-query <question> — Ask about the PR or codebase

@meta-codesync

meta-codesync Bot commented Jul 6, 2026

Copy link
Copy Markdown

@pdillinger has imported this pull request. If you are a Meta employee, you can view this in D110524765.

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

🟡 Codex Code Review

Auto-triggered after CI passed — reviewing commit fec822a


Codex review failed before producing findings.

WARNING: proceeding, even though we could not create PATH aliases: Refusing to create helper binaries under temporary dir "/tmp" (codex_home: AbsolutePathBuf("/tmp/codex-home"))
error: the argument '--base <BRANCH>' cannot be used with '[PROMPT]'

Usage: codex exec review --commit <SHA> --base <BRANCH> --title <TITLE> --model <MODEL> --config <key=value> --dangerously-bypass-approvals-and-sandbox --output-last-message <FILE> [PROMPT]

For more information, try '--help'.

ℹ️ About this response

Generated by Codex CLI.
Review methodology: claude_md/code_review.md

Limitations:

  • Codex may miss context from files not in the diff
  • Large PRs may be truncated
  • Always apply human judgment to AI suggestions

Commands:

  • /codex-review [context] — Request a code review
  • /codex-query <question> — Ask about the PR or codebase

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

✅ Claude Code Review

Auto-triggered after CI passed — reviewing commit fec822a


Summary

Build system update for RocksDB 11.6 release: bumps folly commit hash, removes double-conversion dependency, bumps gflags from 2.2 to 2.3, fixes libevent and gflags library path resolution. The CMakeLists.txt change is well-designed (glob-based), but folly.mk re-hardcodes a version number instead of adopting a similar approach.

High-severity findings (0):
No high-severity findings.

Full review (click to expand)

Findings

🟡 MEDIUM

M1. folly.mk hardcodes gflags soname 2.3 -- will break on next gflags bump -- folly.mk:52-54
  • Issue: The PR correctly replaces the hardcoded libgflags_debug.so.2.2 in CMakeLists.txt with a file(GLOB ...) pattern that adapts to any version. However, in folly.mk, the same version is simply bumped from 2.2 to 2.3 (lines 52 and 54 in the patched file), creating the same fragile hardcoding that necessitated this fix.
  • Root cause: The Make build system doesn't have a convenient file(GLOB) equivalent, but a $(wildcard ...) or $(shell ls ...) pattern could be used, similar to how GLOG_LIB_PATH and FMT_LIB_PATH already resolve lib* directories dynamically.
  • Suggested fix: Use a glob pattern like:
    GFLAGS_DEBUG_SO = $(shell ls $(GFLAGS_PATH)/lib/libgflags_debug.so.* 2>/dev/null | head -1)
    GFLAGS_RELEASE_SO = $(shell ls $(GFLAGS_PATH)/lib/libgflags.so.* 2>/dev/null | head -1)
    This would match the CMakeLists.txt approach and avoid future hardcoded version bumps.

🟢 LOW / NIT

L1. CLAUDE.md change is unrelated to folly update -- CLAUDE.md:246-250
  • Issue: The addition of search guidance in CLAUDE.md is good advice but is unrelated to the folly hash update described in the PR title and description. It would be cleaner as a separate commit for traceability.
L2. CMakeLists.txt glob may match multiple versioned .so files -- CMakeLists.txt:701-710
  • Issue: file(GLOB GFLAGS_DEBUG_SHARED_LIBS "${GFLAGS_INST_PATH}/lib/libgflags_debug.so.*") could match both libgflags_debug.so.2.3 and libgflags_debug.so.2.3.0. The list(GET ... 0 ...) picks the first alphabetically, which may not always be the desired one. In practice, linking against either versioned soname should work (the dynamic linker resolves the symlink chain), so this is low risk.
L3. Comment update is slightly imprecise -- folly.mk:34
  • Issue: The comment changed from "glog and fmt libraries" to "some libraries" to cover libevent. While accurate, naming all three (glog, fmt, and libevent) would be more informative for future maintainers.

Cross-Component Analysis

Component Impact Assessment
Make build (folly.mk) Folly hash bump, dependency removal, version bumps Correct, works for current gflags 2.3
CMake build (CMakeLists.txt) Glob-based gflags resolution for debug builds Robust, future-proof
CI caching (.github/actions/cache-folly) Cache key uses md5 of folly.mk Cache will correctly invalidate
BUCK build Not affected (no folly.mk dependency) N/A
double-conversion Removed from folly.mk only; no other references exist Clean removal

Positive Observations

  • The CMakeLists.txt glob approach with a FATAL_ERROR fallback is well-designed and robust.
  • The LIBEVENT_LIB_PATH variable follows the existing pattern used for GLOG_LIB_PATH and FMT_LIB_PATH, maintaining consistency.
  • The double-conversion removal is clean -- no stale references remain elsewhere in the codebase.
  • CI cache invalidation is handled automatically via the md5 hash of folly.mk.

ℹ️ About this response

Generated by Claude Code.
Review methodology: claude_md/code_review.md

Limitations:

  • Claude may miss context from files not in the diff
  • Large PRs may be truncated
  • Always apply human judgment to AI suggestions

Commands:

  • /claude-review [context] — Request a code review
  • /claude-query <question> — Ask about the PR or codebase

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants