Skip to content

build(deps): dependency refresh, Wails v3, leak and body-drain fixes - #2520

Merged
agbishop merged 27 commits into
mainfrom
chore/deps-and-leaks
Oct 27, 2026
Merged

agbishop merged 27 commits into
mainfrom
chore/deps-and-leaks

Conversation

@agbishop

@agbishop agbishop commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Dependency refresh across every module plus a resource-leak / optimization pass.

Dependencies (every new version released on or before 2026-10-12, i.e. ≥14 days old)

  • Go root + desktop: 135 requires bumped (aws-sdk-go-v2 service modules to their 2026-10-09 releases, google.golang.org/api 0.288→0.302, cloud.google.com/go/{iam,logging,monitoring,workflows}, modernc.org/libc, go-pkcs12, pseudo-versions for x/exp, genproto, goja, pprof pinned to ≤cutoff commits). No code changes needed. PARITY.md sdk_module pins and READMEs updated (task check-pins: 242/242).
  • testcontainers/go and the 6 example Go modules bumped and tidied.
  • ui: @aws-sdk/* 3.1146→3.1150, SvelteKit/Svelte/vitest/jsdom/oxlint/oxfmt patch bumps. TypeScript held at 6.0.3 (7.x breaks svelte-kit sync).
  • test/e2e/crosssdk npm + pip (boto3), apigw chat example.
  • GitHub Actions: github/codeql-action → v4.38.3 (SHA pinned). Everything else was already current.
  • golangci-lint and the Go toolchain intentionally unchanged. govulncheck: no reachable vulnerabilities.

Leaks / performance (each with a test red before the fix)

  • iot: broker sessions whose CONNACK write failed were never removed (mochi skips OnDisconnect on that path); custom-authorizer sessions + their timers leaked the same way. Both are now swept.
  • timestreaminfluxdb: data race between dropLogs and followLogs on the follower's cancel func, which could also leave a follower running on an orphaned buffer.
  • neptune, docdb, gcpbigquery, cloudwatchlogs: regexps compiled on every call now compile once (neptune/docdb not-found rewrite: 407 → 5 allocs/op, ~25x faster).
  • Scan found no lostcancel, unstopped tickers or unclosed response bodies in the hot paths. Uncapped request-body reads in a few services are tracked as gopherstack-g3jku.

Follow-ups found by the bump

  • glue: the SDK added BatchGetDataQualityResultV2, GetDataQualityResultV2, ListDataQualityResultsV2, PublishDataQualityResultV2; implemented against the same backend state as V1 (ClientToken idempotency, filters, pagination, persistence). Step Functions sdkwire registry regenerated with cmd/sfnschemagen.
  • gcpcloudbuild: in-flight build tracking used a sync.WaitGroup with concurrent Add/Wait (a build arriving during Reset/Close could panic); replaced with a counter + idle channel under the backend lock.

HTTP body draining (Go 1.27)

  • Removed manual client response-body drains: Go 1.27's Transport drains unread HTTP/1 bodies itself (https://go.dev/blog/http-connection-reuse).
  • Removed httputils.DrainBody, which read a failed request's whole body with no limit on every error response. net/http already reads up to 256 KiB and otherwise closes with RST avoidance. New SDK test: an 8 MiB PutObject to a missing bucket still gets NoSuchBucket and the server reads less than the body.
  • Docker image pulls now surface errors reported inside the pull stream (docker.ConsumePullStream) instead of discarding them, at all five call sites.

Desktop: Wails v3.0.0

  • Ported desktop/ from Wails v2.16 to v3.0.0 (application/window objects, menu/dialog managers, window events). Linux now builds against GTK4 + WebKitGTK 6.0; CI/release install libgtk-4-dev libwebkitgtk-6.0-dev. Verified under Xvfb on Linux (window opens, server health, navigation, clean shutdown) and Windows cross-compile; macOS/Windows runtime untested.

Closes gopherstack-eaqgf.

Test plan

  • go build ./..., go vet ., root + desktop go mod tidy clean
  • go test -race on ./pkgs/... and iot, neptune, docdb, timestreaminfluxdb, gcpbigquery, cloudwatchlogs, s3, dynamodb, sqs, lambda
  • go test ./internal/app/ -short, persistence + guards
  • task lint-changed, task check-pins, task docs
  • ui: lint, fmt:check, check, npm test (3026 passed)
  • CI unit/integration/e2e/terraform

🤖 Generated with Claude Code

https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM

Witness Patrol and others added 15 commits October 26, 2026 19:07
mochi skips OnDisconnect when SendConnack/resend fails after
OnSessionEstablish, so b.sessions kept the client forever. Track
establishment and sweep closed, never-established sessions on connect.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
authHook.sessions (and its AfterFunc timer) leaked when CONNACK failed
after authentication because mochi skips OnDisconnect on that path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
wireMessage rebuilt 5 regexps per error: 29.7us/407 allocs -> 1.18us/5 allocs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
dropLogs read buf.cancel without the lock followLogs writes it under, and
a drop between buffer creation and cancel assignment left the follower
running on an orphaned buffer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
optionsMeta (labels) and normalizeNamedGroups recompiled a regexp on every
call: 70 -> <=40 and 37 -> ~11 allocs/op.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 182 files, which is 82 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

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: 5117ad39-d4c5-4da4-90b7-bb44044b1be6
Commits

Reviewing files that changed from the base of the PR and between c09d410 and cc6f3d3.

Files ignored due to path filters: 13
  • desktop/go.sum is excluded by !**/*.sum
  • examples/apigw-websocket-chat/src/package-lock.json is excluded by !**/package-lock.json
  • examples/azure-keyvault-app/go.sum is excluded by !**/*.sum
  • examples/azure-servicebus-cosmos-worker/go.sum is excluded by !**/*.sum
  • examples/ddb-lambda-chain/lambda/go.sum is excluded by !**/*.sum
  • examples/gcp-bigquery-gcs-load/go.sum is excluded by !**/*.sum
  • examples/gcp-run-pubsub-push/go.sum is excluded by !**/*.sum
  • examples/s3-lambda-processor/lambda/go.sum is excluded by !**/*.sum
  • go.sum is excluded by !**/*.sum
  • test/e2e/crosssdk/package-lock.json is excluded by !**/package-lock.json
  • testcontainers/go/go.sum is excluded by !**/*.sum
  • testdata/routing/corpus.tsv is excluded by !**/*.tsv
  • ui/package-lock.json is excluded by !**/package-lock.json
Files selected for processing: 182
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • .github/workflows/scorecard.yml
  • README.md
  • Taskfile.yml
  • desktop/go.mod
  • desktop/loading/index.html
  • desktop/main.go
  • desktop/wails.json
  • examples/apigw-websocket-chat/src/package.json
  • examples/azure-keyvault-app/go.mod
  • examples/azure-servicebus-cosmos-worker/go.mod
  • examples/ddb-lambda-chain/lambda/go.mod
  • examples/gcp-bigquery-gcs-load/go.mod
  • examples/gcp-run-pubsub-push/go.mod
  • examples/s3-lambda-processor/lambda/go.mod
  • go.mod
  • internal/app/s3_failed_put_body_test.go
  • internal/app/s3_snapshot_options_test.go
  • pkgs/container/docker_runtime.go
  • pkgs/docker/docker.go
  • pkgs/docker/docker_test.go
  • pkgs/docker/pull.go
  • pkgs/docker/pull_test.go
  • pkgs/httputils/httputils.go
  • pkgs/httputils/httputils_test.go
  • pkgs/persistence/testdata/snapshot_inventory.json
  • services/acm/PARITY.md
  • services/acm/README.md
  • services/amplify/PARITY.md
  • services/amplify/README.md
  • services/apigateway/PARITY.md
  • services/apigateway/README.md
  • services/applicationautoscaling/PARITY.md
  • services/applicationautoscaling/README.md
  • services/appsync/PARITY.md
  • services/appsync/README.md
  • services/awsconfig/PARITY.md
  • services/awsconfig/README.md
  • services/azureeventgrid/sinks.go
  • services/backup/PARITY.md
  • services/backup/README.md
  • services/batch/exec_runner.go
  • services/bedrock/PARITY.md
  • services/bedrock/README.md
  • services/cleanrooms/PARITY.md
  • services/cleanrooms/README.md
  • services/cloudwatch/PARITY.md
  • services/cloudwatch/README.md
  • services/cloudwatch/put_metric_data_compression_test.go
  • services/cloudwatchlogs/PARITY.md
  • services/cloudwatchlogs/README.md
  • services/cloudwatchlogs/insights_parse.go
  • services/cloudwatchlogs/insights_parse_whitebox_test.go
  • services/codebuild/PARITY.md
  • services/codebuild/README.md
  • services/codedeploy/PARITY.md
  • services/codedeploy/README.md
  • services/codepipeline/PARITY.md
  • services/codepipeline/README.md
  • services/cognitoidp/PARITY.md
  • services/cognitoidp/README.md
  • services/datasync/PARITY.md
  • services/datasync/README.md
  • services/docdb/error_messages.go
  • services/docdb/error_messages_whitebox_test.go
  • services/dynamodb/PARITY.md
  • services/dynamodb/README.md
  • services/dynamodbstreams/PARITY.md
  • services/dynamodbstreams/README.md
  • services/ec2/PARITY.md
  • services/ec2/README.md
  • services/ec2/docker_compute.go
  • services/ecr/PARITY.md
  • services/ecr/README.md
  • services/ecs/PARITY.md
  • services/ecs/README.md
  • services/ecs/docker_runner.go
  • services/efs/PARITY.md
  • services/efs/README.md
  • services/eks/PARITY.md
  • services/eks/README.md
  • services/elbv2/PARITY.md
  • services/elbv2/README.md
  • services/eventbridge/PARITY.md
  • services/eventbridge/README.md
  • services/gcpbigquery/jobs_query.go
  • services/gcpbigquery/options_meta_whitebox_test.go
  • services/gcpcloudbuild/backend.go
  • services/gcpcloudbuild/builds_test.go
  • services/gcpcloudbuild/lifecycle.go
  • services/gcpcloudtasks/dispatch.go
  • services/gcpdns/PARITY.md
  • services/gcpdns/README.md
  • services/gcpfunctions/ingress.go
  • services/gcpiam/PARITY.md
  • services/gcpiam/README.md
  • services/gcplogging/PARITY.md
  • services/gcplogging/README.md
  • services/gcpmonitoring/PARITY.md
  • services/gcpmonitoring/README.md
  • services/gcpmonitoring/notify.go
  • services/gcpscheduler/dispatch.go
  • services/gcpworkflows/PARITY.md
  • services/gcpworkflows/README.md
  • services/glue/PARITY.md
  • services/glue/README.md
  • services/glue/data_quality_results_v2.go
  • services/glue/handler_data_quality_results_v2.go
  • services/glue/handler_routing.go
  • services/glue/handler_sdk_route_table_test.go
  • services/glue/interfaces.go
  • services/glue/realclient_data_quality_results_v2_test.go
  • services/glue/store.go
  • services/glue/store_setup.go
  • services/iam/PARITY.md
  • services/iam/README.md
  • services/iot/PARITY.md
  • services/iot/README.md
  • services/iot/broker.go
  • services/iot/broker_custom_auth.go
  • services/iot/broker_events.go
  • services/iot/broker_session_leak_whitebox_test.go
  • services/kinesis/PARITY.md
  • services/kinesis/README.md
  • services/kms/PARITY.md
  • services/kms/README.md
  • services/lambda/PARITY.md
  • services/lambda/README.md
  • services/lightsail/PARITY.md
  • services/lightsail/README.md
  • services/neptune/error_messages.go
  • services/neptune/error_messages_whitebox_test.go
  • services/polly/PARITY.md
  • services/polly/README.md
  • services/quicksight/PARITY.md
  • services/quicksight/README.md
  • services/rekognition/PARITY.md
  • services/rekognition/README.md
  • services/route53/PARITY.md
  • services/route53/README.md
  • services/route53resolver/PARITY.md
  • services/route53resolver/README.md
  • services/s3/PARITY.md
  • services/s3/README.md
  • services/sagemaker/engine_model.go
  • services/secretsmanager/PARITY.md
  • services/secretsmanager/README.md
  • services/securityhub/PARITY.md
  • services/securityhub/README.md
  • services/signin/PARITY.md
  • services/signin/README.md
  • services/sns/PARITY.md
  • services/sns/README.md
  • services/sns/confirmation.go
  • services/sns/delivery.go
  • services/sns/perf_sweep_bench_mixed_test.go
  • services/sns/store.go
  • services/sqs/PARITY.md
  • services/sqs/README.md
  • services/ssm/PARITY.md
  • services/ssm/README.md
  • services/sso/PARITY.md
  • services/sso/README.md
  • services/ssooidc/PARITY.md
  • services/ssooidc/README.md
  • services/stepfunctions/PARITY.md
  • services/stepfunctions/README.md
  • services/stepfunctions/sdkwire/registry_gen.go
  • services/sts/PARITY.md
  • services/sts/README.md
  • services/timestreaminfluxdb/docker_logs.go
  • services/timestreaminfluxdb/docker_logs_whitebox_test.go
  • services/transcribe/PARITY.md
  • services/transcribe/README.md
  • services/workspaces/PARITY.md
  • services/workspaces/README.md
  • test/e2e/crosssdk/package.json
  • test/e2e/crosssdk/requirements.in
  • test/e2e/crosssdk/requirements.txt
  • testcontainers/go/go.mod
  • ui/package.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Witness Patrol and others added 3 commits October 26, 2026 20:42
… SDK bump

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
@codecov

codecov Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.81275% with 8 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
services/glue/handler_data_quality_results_v2.go 95.31% 3 Missing ⚠️
services/glue/data_quality_results_v2.go 97.43% 2 Missing ⚠️
services/timestreaminfluxdb/docker_logs.go 77.77% 2 Missing ⚠️
pkgs/container/docker_runtime.go 50.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Witness Patrol and others added 3 commits October 26, 2026 20:49
WaitGroup.Wait racing with Add from CreateBuild/Reset panicked
('WaitGroup is reused') and tripped -race; track in-flight builds with a
counter and idle channel under the backend lock.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
@agbishop

agbishop commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator Author

📊 Code Coverage Report

Metric Value Status
Total Coverage 100.0%
0.0%
0.0%
0.0%
100.0%
75.0%
100.0%
100.0%
0.0%
86.8% ✅
New Code Coverage 96.5% (218/226 stmts) ✅

📄 Impacted Files Breakdown

File New Code Coverage Lines
pkgs/container/docker_runtime.go 50.0% 1/2
pkgs/docker/docker.go 100.0% 2/2
pkgs/docker/pull.go 100.0% 15/15
pkgs/httputils/httputils.go 0.0% 0/0
services/azureeventgrid/sinks.go 0.0% 0/0
services/batch/exec_runner.go 100.0% 2/2
services/cloudwatchlogs/insights_parse.go 100.0% 2/2
services/docdb/error_messages.go 0.0% 0/0
services/ec2/docker_compute.go 100.0% 1/1
services/ecs/docker_runner.go 100.0% 1/1
services/gcpbigquery/jobs_query.go 100.0% 1/1
services/gcpcloudbuild/backend.go 100.0% 8/8
services/gcpcloudbuild/lifecycle.go 100.0% 10/10
services/gcpcloudtasks/dispatch.go 0.0% 0/0
services/gcpfunctions/ingress.go 0.0% 0/0
services/gcpmonitoring/notify.go 0.0% 0/0
services/gcpscheduler/dispatch.go 0.0% 0/0
services/glue/data_quality_results_v2.go 97.4% 76/78
services/glue/handler_data_quality_results_v2.go 92.7% 38/41
services/glue/handler_routing.go 100.0% 4/4
services/glue/store_setup.go 100.0% 1/1
services/glue/store.go 0.0% 0/0
services/iot/broker_custom_auth.go 100.0% 5/5
services/iot/broker_events.go 100.0% 9/9
services/iot/broker.go 100.0% 1/1
services/neptune/error_messages.go 0.0% 0/0
services/sagemaker/engine_model.go 0.0% 0/0
services/sns/confirmation.go 0.0% 0/0
services/sns/delivery.go 0.0% 0/0
services/sns/store.go 0.0% 0/0
services/stepfunctions/sdkwire/registry_gen.go 100.0% 34/34
services/timestreaminfluxdb/docker_logs.go 77.8% 7/9

Tip

This project maintains a minimum coverage threshold of 85%. Maintain or improve coverage on new code to ensure long-term stability.


Last updated: Tue, 27 Oct 2026 05:27:23 GMT

Witness Patrol and others added 6 commits October 26, 2026 22:08
…s redundant

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
net/http already discards up to 256KiB of an unread body after the handler
returns and otherwise closes the connection (with RST avoidance). Unbounded
drain in WriteError/WriteS3ErrorResponse read whole failed uploads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGWXecoauvZN2AYe1vkvgM
@agbishop agbishop changed the title build(deps): dependency refresh + resource-leak fixes build(deps): dependency refresh, Wails v3, leak and body-drain fixes Oct 27, 2026
@agbishop
agbishop merged commit 2662247 into main Oct 27, 2026
39 checks passed
@agbishop
agbishop deleted the chore/deps-and-leaks branch October 27, 2026 05:30
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.

1 participant