Skip to content

Bump kindling: race only mapped domainfront providers, record caller cancels - #710

Merged
myleshorton merged 2 commits into
mainfrom
fisk/bump-kindling-df
Oct 26, 2026
Merged

myleshorton merged 2 commits into
mainfrom
fisk/bump-kindling-df

Conversation

@myleshorton

@myleshorton myleshorton commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Bumps github.com/getlantern/kindling to dac6d56, which picks up two changes:

Domainfront races only providers that map the host

Why: in Iran, 98 POST /v1/signal requests failed with no domain fronting mapping for 'freddie.iantem.io' on provider aliyun. domainfront gave kindling's race whichever front was ready, from any provider. An aliyun front won the connect race, and because kindling sends a POST only once, the race returned the mapping error without trying smart or Soar.

With this bump, the domainfront transport:

  • races one lane for each provider whose mapping covers the host, and only those;
  • fails at once when no provider maps the host, so the other transports carry the request;
  • vets fallback fronts with the crawler's POST check before they can win.

radiance's call sites are unchanged.

Caller-canceled requests are recorded as canceled

Why: about 80% of the requests kindling reported with no winner in Iran weren't failures. They were POST /api/v1/user-messages requests that radiance's user-messages service canceled itself on each refresh trigger, a few milliseconds in. kindling now records an attempt the caller cut off as canceled, and sets Race.Canceled on that race.

recordRace exports each attempt's outcome as a string, so kindling.<transport>.outcome reports canceled with no radiance change. Exporting Race.Canceled on the span needs a semconv key, which can follow.

Verification

  • go mod tidy was run. Only the kindling and domainfront lines in go.mod and go.sum changed.
  • go test -tags with_clash_api ./... (CI's command) passes on macOS for every package except cmd/lantern. cmd/lantern fails the same way on main: on darwin without the standalone tag, ipc builds its mobile client. CI builds on Linux, where it passes.

Pre-PR review (local Codex gate)

🤖 Generated with Claude Code

https://claude.ai/code/session_01QQFpfCXs3JqrfyDuiGabF5

Picks up getlantern/kindling#64, which bumps domainfront to
getlantern/domainfront#22: the domainfront transport races one lane per
provider whose mapping covers the host, so a front from a provider that
can't serve the host no longer wins kindling's connect race and fails a
single-shot POST.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QQFpfCXs3JqrfyDuiGabF5
Copilot AI balanced review requested due to automatic review settings October 26, 2026 20:56
@coderabbitai

coderabbitai Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: df5ed9bd-ef48-4540-9513-d34a4b0ccd55
Commits

Reviewing files that changed from the base of the PR and between 4b5b2cb and 38ba3a2.

Files ignored due to path filters: 1
  • go.sum is excluded by !**/*.sum
Files selected for processing: 1
  • go.mod

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

The go.mod requirements for github.com/getlantern/domainfront and github.com/getlantern/kindling use newer pseudo-versions.

Changes: Go module requirements

Layer / File(s) Summary
Update module versions
go.mod
The required pseudo-versions for github.com/getlantern/domainfront and github.com/getlantern/kindling are updated.

Priority: Normal

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

Change: Bug fix

Suggested reviewers: copilot-pull-request-reviewer, garmr-ulfr

Merge Risk: Minimal · up to 38ba3

The change is limited to dependency version updates, with no actionable merge-blocking risk identified.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Title check Warning The title correctly identifies the kindling update and mapped domainfront provider racing, but it also claims that caller cancellations are recorded. The objectives state that this change is not inclu… Remove “record caller cancels” from the title, or include the corresponding implementation in this pull request.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

Full details: Title check

Explanation

The title correctly identifies the kindling update and mapped domainfront provider racing, but it also claims that caller cancellations are recorded. The objectives state that this change is not included and will follow separately.

Resolution

Remove “record caller cancels” from the title, or include the corresponding implementation in this pull request.

Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

Copilot AI 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.

🔵 Needs a closer look

The upstream changes alter concurrent connection racing and fallback validation on a critical networking path, warranting final human review.

No open issues 🎉

What changed in this PR

Updates kindling and domainfront to address signaling failures caused by domain-fronting providers that lack a mapping for the requested host. Radiance’s call sites remain unchanged.

Changes:

  • Bumps kindling to 9d2c47719291 and domainfront to 9727b2f2a34a.
  • Incorporates host-specific provider racing, immediate failure for unmapped hosts, and POST validation of fallback fronts.
  • Updates the corresponding dependency checksums.
File Description
go.sum Updates checksums for the new dependency revisions.
go.mod Pins kindling and domainfront to the intended upstream fixes.

Review effort: Balanced

Picks up getlantern/kindling#63: a request radiance cancels itself before
any transport answers is recorded as the canceled outcome instead of
unfinished or request_failed, so it no longer shows as a failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QQFpfCXs3JqrfyDuiGabF5
@myleshorton myleshorton changed the title Bump kindling to race only domainfront providers that map the host Bump kindling: race only mapped domainfront providers, record caller cancels Oct 26, 2026
@myleshorton
myleshorton requested a balanced review from Copilot October 26, 2026 21:19
@myleshorton
myleshorton merged commit 24cacd7 into main Oct 26, 2026
5 checks passed
@myleshorton
myleshorton deleted the fisk/bump-kindling-df branch October 26, 2026 21:21

Copilot AI 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.

🔵 Needs a closer look

The upstream changes affect concurrent transport racing and cancellation, and integration safety remains insufficiently verified for automated approval.

No open issues 🎉

Review effort: Balanced

myleshorton added a commit to getlantern/lantern that referenced this pull request Oct 26, 2026
…utcomes (#9222)

Picks up getlantern/radiance#710, which bumps kindling to include:
- getlantern/kindling#64 (domainfront#22): the domainfront transport
  races only providers whose mapping covers the host, so a front from
  a provider that can't serve the host no longer wins the race and
  fails a single-shot POST.
- getlantern/kindling#63: requests the caller ends are recorded as the
  canceled outcome instead of as failures.

Also picks up getlantern/radiance#708 (pinned pinger probes run through
the Radiance tester).


Claude-Session: https://claude.ai/code/session_01QQFpfCXs3JqrfyDuiGabF5

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants