2 Commits
Author SHA1 Message Date
Gary HansenandClaude Fable 5 874374f03f docs: record two-region Fly scaling (syd + iad)
CI / test (pull_request) Successful in 2m36s
CI / docker (pull_request) Has been skipped
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 22:08:07 +10:00
Gary HansenandClaude Fable 5 ccf0e6b0dc fix: data race on test DNS handler flag under -race
TestClientAgainstLocalServer captured RecursionDesired into a plain bool
from the miekg server handler goroutine and read it from the test
goroutine; the UDP round-trip gives no happens-before edge, so CI's
-race run flagged it. Use atomic.Bool.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 22:08:06 +10:00
2 changed files with 15 additions and 3 deletions
+9
View File
@@ -276,6 +276,15 @@ make deploy # flyctl deploy --remote-only
`make deploy-status` shows machine and health-check state. The app serves
the SPA at `https://<app>.fly.dev/` with `/api/health` as the health check.
Machine placement is imperative rather than part of `fly.toml`; the current
production topology is one machine in Sydney and one in Virginia:
```sh
flyctl scale count 2 --region syd,iad
```
`flyctl deploy` preserves existing machines and regions on redeploys.
### Continuous deployment
`.gitea/workflows/deploy.yml` deploys on any `v*` tag push (or manual
+6 -3
View File
@@ -3,6 +3,7 @@ package dns
import (
"context"
"net"
"sync/atomic"
"testing"
"time"
@@ -107,9 +108,11 @@ func TestRealExchangeUnreachable(t *testing.T) {
}
func TestClientAgainstLocalServer(t *testing.T) {
var sawRD bool
// Written by the server handler goroutine, read by the test goroutine;
// the UDP round-trip provides no happens-before edge, so use an atomic.
var sawRD atomic.Bool
addr := startTestDNSServer(t, "udp", func(w dns.ResponseWriter, r *dns.Msg) {
sawRD = r.RecursionDesired
sawRD.Store(r.RecursionDesired)
aHandler("5.6.7.8")(w, r)
})
@@ -127,7 +130,7 @@ func TestClientAgainstLocalServer(t *testing.T) {
if len(resp.Answer) == 0 {
t.Fatal("expected answers")
}
if sawRD {
if sawRD.Load() {
t.Error("wire query must have RD=0")
}
}