Skip to content

Conversation

@hanabi1224
Copy link
Contributor

@hanabi1224 hanabi1224 commented Sep 2, 2025

Summary of changes

Changes introduced in this pull request:

  • bump go-f3
  • bump all Go deps

Reference issue to close (if applicable)

Closes

Other information and links

Change checklist

  • I have performed a self-review of my own code,
  • I have made corresponding changes to the documentation. All new code adheres to the team's documentation standards,
  • I have added tests that prove my fix is effective or that my feature works (if possible),
  • I have made sure the CHANGELOG is up-to-date. All user-facing changes should be reflected in this document.

Summary by CodeRabbit

  • Chores
    • Upgraded dependencies across the service to newer minor/patch versions for stability, security, and compatibility.
    • Standardized on a tagged release of a core library, and refreshed OpenTelemetry to 1.38.0.
    • Updated IPFS/Boxo and datastore libraries, plus WebRTC/DTLS-related packages.
    • Bumped protobuf and related tooling; added a small indirect helper library.
  • Tests
    • Aligned interop test app dependencies with the latest stack to ensure compatibility and more reliable test runs.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 2, 2025

Walkthrough

Dependency updates in two Go modules: f3-sidecar and interop-tests/go_app. Versions bumped for direct and indirect dependencies, including go-f3, rust2go, boxo, datastore, go-log, OpenTelemetry, Pion stack, protobuf, and others. No source code changes.

Changes

Cohort / File(s) Summary
f3-sidecar module dependency updates
f3-sidecar/go.mod
Upgrades go-f3 to v0.8.10 and refreshes numerous direct/indirect deps (rust2go, ipfs/go-datastore, ipfs/go-log/v2, boxo, gnark-crypto, multiformats/go-varint, Pion modules, OpenTelemetry, protobuf, mock, x/exp).
interop-tests go_app dependency updates
interop-tests/src/tests/go_app/go.mod
Bumps rust2go, boxo, go-datastore, go-log/v2; adds jsync (indirect); updates transitive versions (multiformats/go-varint, Pion modules, OpenTelemetry, mock, x/exp, protobuf).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

dependencies

Suggested reviewers

  • akaladarshi
  • sudo-shashank
  • LesnyRumcajs
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch hm/bump-go-f3

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

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

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@hanabi1224 hanabi1224 marked this pull request as ready for review September 2, 2025 01:42
@hanabi1224 hanabi1224 requested a review from a team as a code owner September 2, 2025 01:42
@hanabi1224 hanabi1224 requested review from akaladarshi and sudo-shashank and removed request for a team September 2, 2025 01:42
@hanabi1224 hanabi1224 enabled auto-merge September 2, 2025 01:46
Copy link
Contributor

@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: 5

🧹 Nitpick comments (2)
interop-tests/src/tests/go_app/go.mod (1)

3-3: Prefer toolchain pin; keep go directive patchless.

To align with Go module best practices and your “fail fast” preference, use a patchless go directive and pin the exact compiler with toolchain.

-go 1.24.5
+go 1.24
+toolchain go1.24.5
f3-sidecar/go.mod (1)

3-3: Add toolchain pin; keep go directive patchless.

Same recommendation as interop-tests to enforce exact compiler while retaining semantic version in go directive.

-go 1.24.5
+go 1.24
+toolchain go1.24.5
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 9cc3845 and 62ce965.

⛔ Files ignored due to path filters (2)
  • f3-sidecar/go.sum is excluded by !**/*.sum
  • interop-tests/src/tests/go_app/go.sum is excluded by !**/*.sum
📒 Files selected for processing (2)
  • f3-sidecar/go.mod (7 hunks)
  • interop-tests/src/tests/go_app/go.mod (5 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: hanabi1224
PR: ChainSafe/forest#5930
File: build.rs:64-77
Timestamp: 2025-08-13T09:43:20.301Z
Learning: hanabi1224 prefers hard compile-time errors in build scripts rather than runtime safeguards or collision detection, believing it's better to fail fast and fix root causes of issues like malformed snapshot names.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
  • GitHub Check: tests
  • GitHub Check: tests-release
  • GitHub Check: Build forest binaries on Linux AMD64
  • GitHub Check: cargo-publish-dry-run
  • GitHub Check: Build MacOS
  • GitHub Check: Build Ubuntu
  • GitHub Check: All lint checks
  • GitHub Check: Analyze (rust)
  • GitHub Check: Analyze (go)
🔇 Additional comments (8)
interop-tests/src/tests/go_app/go.mod (4)

110-116: OTel module versions are consistent (v1.38.0) across all go.mod files; no action required.


17-17: jsync dual licensing confirmed (Apache-2.0 & MIT) — the module root contains both LICENSE-APACHE and LICENSE-MIT, which are permissive and align with our policy.


119-119: exp/protobuf bumps are indirect only—tests have no direct usage, so no compatibility checks required.


81-81: Fix build errors in interop-tests and re-run WebRTC interop tests
Interop-tests in interop-tests/src/tests/go_app are failing to build (test/v2: undefined GoBitswapNodeImpl, GoKadNodeImpl). Resolve these errors (or narrow the test command to only WebRTC packages) and then re-run TURN/ICE interop tests to detect any behavioral shifts.

f3-sidecar/go.mod (4)

120-122: Versions are aligned across modules. No action required.


6-6: No cross-module version drift detected.
All shared dependencies in interop-tests/src/tests/go_app/go.mod and f3-sidecar/go.mod resolve to identical versions.


9-9: Install and pin Rust toolchain and enable CGO on CI
Rust commands failed (no /proc/self/exe)—the CI image lacks rustc/cargo. Add and pin the exact Rust toolchain (nightly or stable) matching the rust2go pseudo-version and ensure /proc is mounted or use a Rust-capable base image.
Also, CGO is currently disabled (CGO_ENABLED=0); if you rely on FFI, set CGO_ENABLED=1 and confirm gcc/g++ are installed.

⛔ Skipped due to learnings
Learnt from: hanabi1224
PR: ChainSafe/forest#5867
File: src/ipld/util.rs:553-558
Timestamp: 2025-08-08T12:10:45.218Z
Learning: Forest pins Rust toolchain to 1.89.0 via rust-toolchain.toml; features stabilized in 1.88 (e.g., let-chains) are acceptable in this codebase.

26-26: gnark-crypto v0.19.0 — ensure consistent CPU feature flags (AVX etc.) in CI/build images. Assembly backend refactoring in v0.19.0 may alter instruction paths; verify that all CI and build environments expose identical CPUID features (e.g., avx) to avoid nondeterministic builds. (github.com, cslqm.github.io)


require (
github.com/filecoin-project/go-f3 v0.8.10-0.20250813134250-96230de8cf8c
github.com/filecoin-project/go-f3 v0.8.10
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

go-f3 → v0.8.10 — check release notes for breaking changes.

Bump looks good; validate any config/API surface changes in sidecar usage.


🏁 Script executed:

#!/bin/bash
set -e
( cd f3-sidecar && go mod tidy && go mod verify && go build ./... )
# List the selected go-f3 version
rg -nP '^\s*github.com/filecoin-project/go-f3\s+v\S+' f3-sidecar/go.mod

Length of output: 1512


Fix build error in ffi_impl.go due to removed GoF3NodeImpl
Update f3-sidecar/v2/ffi_impl.go (line 27) to use the replacement API from go-f3 v0.8.10—GoF3NodeImpl was removed, so adjust to the new implementation type or constructor as per the v0.8.10 release notes.

🤖 Prompt for AI Agents
In f3-sidecar/v2/ffi_impl.go around line 27, the code references the removed
GoF3NodeImpl from go-f3 v0.8.10; replace that usage with the new
implementation/constructor introduced in v0.8.10 (consult the go-f3 v0.8.10
release notes or package docs to determine the exact replacement API), update
the import if the new type or constructor lives in a different package path, and
adapt any constructor call or method signatures to match the new API so the file
compiles with go-f3 v0.8.10.

github.com/ihciah/rust2go v0.0.0-20250827134744-0e390b7e49b1
github.com/ipfs/go-cid v0.5.0
github.com/ipfs/go-datastore v0.8.2
github.com/ipfs/go-datastore v0.8.3
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Direct dep bumps (datastore, go-log, testify) — run unit tests.

These are safe minors/patches; run the test suite to verify logging and assertions.

Also applies to: 13-13, 17-17


🏁 Script executed:

#!/bin/bash
set -e
( cd f3-sidecar && go test ./... )

Length of output: 1114


Fix build failure: undefined GoF3NodeImpl
Tests fail at f3-sidecar/v2/ffi_impl.go:27 with “undefined: GoF3NodeImpl”; define or import the missing GoF3NodeImpl symbol before re-running go test ./... in f3-sidecar.

🤖 Prompt for AI Agents
In f3-sidecar/go.mod around line 11, tests fail because the symbol GoF3NodeImpl
is undefined (error at f3-sidecar/v2/ffi_impl.go:27); fix by either adding the
missing type declaration or importing the package that defines it: 1) If
GoF3NodeImpl is meant to be a local struct/interface, add its definition in the
same package (e.g., create or update v2/ffi_impl.go or v2/ffi_impl_generated.go
with "type GoF3NodeImpl struct { ... }" or the correct signature) and ensure it
matches usages at line 27; 2) If it comes from another package or generated cgo
code, add the correct import or include the generated file (run the generator or
enable the build tag that produces the symbol) so the symbol is available at
build time; then run go test ./... in f3-sidecar to verify the build passes.

github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/huin/goupnp v1.3.0 // indirect
github.com/ipfs/boxo v0.33.1 // indirect
github.com/ipfs/boxo v0.34.0 // indirect
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Transitives: boxo/varint/pion — smoke test network-heavy paths.*

Minor bumps but could impact protocol behavior; run any integration/interop flows that exercise pubsub, QUIC, and WebRTC.

Also applies to: 79-79, 86-86, 95-95, 101-102


🏁 Script executed:

#!/bin/bash
set -e
( cd f3-sidecar && go build ./... )

Length of output: 887


🏁 Script executed:

#!/bin/bash
set -e
cd f3-sidecar
rg -n 'GoF3NodeImpl' -C3 .
rg -n 'type GoF3NodeImpl' -C3 .

Length of output: 1836


🏁 Script executed:

#!/bin/bash
set -e
cd f3-sidecar
printf "--- ffi_impl.go ---\n"
head -n 20 ffi_impl.go
printf "\n--- ffi_gen.go ---\n"
head -n 20 ffi_gen.go

Length of output: 205


🏁 Script executed:

#!/bin/bash
set -e
cd f3-sidecar
echo "--- Directory listing ---"
ls -1
echo "--- Package declarations ---"
grep -n '^package ' *.go
echo "--- ffi_impl.go (lines 1-60) ---"
sed -n '1,60p' ffi_impl.go
echo "--- ffi_gen.go (lines 1-60) ---"
sed -n '1,60p' ffi_gen.go

Length of output: 5065


🏁 Script executed:

#!/bin/bash
set -e
cd f3-sidecar
sed -n '1,50p' go.mod

Length of output: 2136


ffi_impl.go:27 – undefined: GoF3NodeImpl

  • The FFI binding in ffi_gen.go (import "C") isn’t being included, so the global GoF3NodeImpl is missing at compile time—ensure your build environment has CGO_ENABLED=1 and a C toolchain so ffi_gen.go is compiled.
  • Once the build is restored, smoke-test network-heavy paths (pubsub, QUIC, WebRTC) to validate the boxo/varint/pion* bumps.
🤖 Prompt for AI Agents
f3-sidecar/go.mod lines ~45: ffi_gen.go (which contains import "C") isn't being
compiled so the global GoF3NodeImpl defined there is missing; enable cgo and a C
toolchain and rebuild. Set CGO_ENABLED=1 in your environment, install a C
compiler toolchain (gcc/clang) appropriate for the target platform, clean module
cache/build artifacts (go clean -cache -modcache), then run go build to ensure
ffi_gen.go is included and GoF3NodeImpl is defined; after the build succeeds run
smoke tests exercising pubsub, QUIC and WebRTC paths to validate the bumped
boxo/varint/pion* dependencies.

Comment on lines +6 to +7
github.com/ihciah/rust2go v0.0.0-20250827134744-0e390b7e49b1
github.com/ipfs/boxo v0.34.0
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Direct bumps look fine; verify build and CGO for rust2go pseudo-version.

  • rust2go moved to a pseudo-version; ensure your CI runners have the required Rust toolchain/CGO flags, as pseudo-version updates can change build tags or FFI symbols.
  • Run mod tidy + build to surface any API drift from boxo/go-datastore/go-log.

Also applies to: 9-10


🏁 Script executed:

#!/bin/bash
set -euo pipefail

mod="interop-tests/src/tests/go_app/go.mod"

# Tidy and verify module graph (requires Go toolchain)
( cd interop-tests/src/tests/go_app && go mod tidy && go mod verify )

# Quick build to catch API breaks
( cd interop-tests/src/tests/go_app && go build ./... )

# Sanity: print pinned versions for key deps
rg -nP '^\s*(github.com/(ihciah/rust2go|ipfs/(boxo|go-datastore|go-log/v2)))\s+v\S+' "$mod" || true

Length of output: 4693


Fix missing FFI bindings after rust2go pseudo-version bump
The upgrade to rust2go v0.0.0-20250827134744-0e390b7e49b1 fails to compile:
• bitswap_impl.go:24 → undefined: GoBitswapNodeImpl
• kad_impl.go:19 → undefined: GoKadNodeImpl
The new pseudo-version changed the generated FFI exports. Update your Go wrappers to match the renamed or replaced symbols (or pin to the prior rust2go version until you adjust the bindings).

🤖 Prompt for AI Agents
In interop-tests/src/tests/go_app/go.mod around lines 6 to 7, the rust2go
pseudo-version was bumped which changed the generated FFI export names causing
undefined symbols GoBitswapNodeImpl and GoKadNodeImpl; either update the Go
wrapper files (bitswap_impl.go and kad_impl.go) to reference the new exported
symbol names produced by the new rust2go version (search the generated bindings
for the renamed types/functions and replace usages accordingly), or pin the
rust2go dependency to the previous working pseudo-version in go.mod until you
have updated the wrappers.

github.com/multiformats/go-multihash v0.2.3 // indirect
github.com/multiformats/go-multistream v0.6.1 // indirect
github.com/multiformats/go-varint v0.0.7 // indirect
github.com/multiformats/go-varint v0.1.0 // indirect
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

❓ Verification inconclusive

varint v0.1.0 is a breaking pre‑1.0 bump — smoke test transitive users.

Semver-0 → 0.1.0 can include breaking changes; ensure consumers via multiformats stack still compile.


🏁 Script executed:

#!/bin/bash
set -e
( cd interop-tests/src/tests/go_app && go build ./... )

Length of output: 4153


Fix build failures in interop-tests after varint bump
Build now fails in interop-tests/src/tests/go_app/test/v2 with:

  • bitswap_impl.go:24:2 – undefined: GoBitswapNodeImpl
  • kad_impl.go:19:2 – undefined: GoKadNodeImpl
🤖 Prompt for AI Agents
In interop-tests/src/tests/go_app/go.mod (line 76), the varint module bump
caused API/ABI changes so generated Go code in test/v2 references types
(GoBitswapNodeImpl, GoKadNodeImpl) that no longer exist; either pin
github.com/multiformats/go-varint back to the previous working version in go.mod
(replace or require the exact commit/tag used when the Go bindings were
generated) or regenerate the Go bindings/source in
interop-tests/src/tests/go_app/test/v2 so they match the new varint API; update
go.mod accordingly and run go mod tidy then rebuild to confirm the undefined
type errors are resolved.

@hanabi1224 hanabi1224 added this pull request to the merge queue Sep 2, 2025
Merged via the queue into main with commit 8ff95b3 Sep 2, 2025
51 checks passed
@hanabi1224 hanabi1224 deleted the hm/bump-go-f3 branch September 2, 2025 08:45
@coderabbitai coderabbitai bot mentioned this pull request Oct 8, 2025
4 tasks
@coderabbitai coderabbitai bot mentioned this pull request Dec 15, 2025
4 tasks
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.

4 participants