Releases: libdns/route53
v1.6.2
Fixed
- Concurrent
AppendRecordscalls targeting the same(name, type)no longer lose values. The provider now serializes the read-merge-UPSERT cycle per(zone, name, type). Previously, two goroutines (e.g. ACME challenges forexample.comand*.example.comsharing_acme-challenge.example.comTXT) could both observe pre-write state and the later UPSERT would clobber the earlier — causing dropped tokens and validation failures. SetRecordswith multiple input records sharing the same(name, type)now keeps all values. The previous per-record loop UPSERTed each independently, leaving only the last value.- Pre-existing filter bug in the
AppendRecords/DeleteRecordsmerge path:getRecordsreturns relative names but the filter compared againstlibdns.AbsoluteName(...), so existing values were never matched. The merge silently treated the set as empty, which (combined with UPSERT replacing the entire RecordSet) could overwrite data. Fixed.
Added
- Regression tests in
libdnstest/:TestAppendRecords_Concurrent(10 goroutines into one shared name) andTestSetRecords_MultiValue.
Internal
Provider.initnow usessync.Oncefor AWS client construction (was a non-atomicnilcheck).- Removed dead code:
createRecord,changeRecord,updateRecord(orphaned by #294 and theSetRecordsrewrite). quote.go: addressgosecG115 andstaticcheckQF1012 warnings.
Note on multi-process deployments
The lock is in-process. Multiple processes writing to the same RecordSet still need external coordination — certmagic's per-identifier storage lock does not cover this case because racing identifiers (e.g. foo.example.com vs *.foo.example.com) share a common parent RecordSet.
v1.6.1
Fixed
AppendRecordsno longer fails when the target ResourceRecordSet already exists. Single-record appends now merge with existing values via UPSERT, matching the multi-record path. Resolves stale ACME challenge TXT failures (#294, thanks @andrewseddon).
Added
Provider.Logger *slog.Loggerfor structured logging. Defaults to a discard handler. Wrappers (e.g. caddy-dns/route53) can adapt their own logger viaslog.Handler— for zap, seego.uber.org/zap/exp/zapslog. Events are Debug-level except ambiguous zone resolution (Warn).
Internal
v1.6.0-beta.3
Beta 3 further refines the API and adds support for skipping Route53 synchronization waits during delete operations. Since upstream introduced breaking changes, we used this opportunity to perform related cleanup and simplifications. All breaking changes are documented in BREAKING.md.
What's Changed
- sync with new api by @theAeon in #286
- Implement libdnstest-based tests and fix related issues by @AndrianBdn in #289
- Fix GitHub Actions; Update dependencies by @AndrianBdn in #290
- Add: golangci-lint and related code cleanup by @AndrianBdn in #291
New Contributors
- @theAeon made their first contribution in #286
- @AndrianBdn made their first contribution in #289
Full Changelog: v1.5.1...v1.6.0-beta.2
v1.6.0
This release is identical to Beta 3. The library now uses libdns 1.0 APIs, required by Caddy. Tests run on libdnstest with expanded DNS record coverage. The API was cleaned up and made consistent. Deprecated APIs were removed. Route53 delete operations can skip synchronization waits. Internal code was simplified to match upstream libdns changes.
All breaking changes are listed in BREAKING.md.
What's Changed
- Documentation update
- API cleanup
- Linter fixes
- sync with new api by @theAeon in #286
- Implement libdnstest-based tests and fix related issues by @AndrianBdn in #289
- Fix GitHub Actions; Update dependencies by @AndrianBdn in #290
- Add: golangci-lint and related code cleanup by @AndrianBdn in #291
New Contributors
- @theAeon made their first contribution in #286
- @AndrianBdn made their first contribution in #289
Full Changelog: v1.5.1...v1.6.0
v1.6.0-beta.2
The second beta refines the API and removes inconsistent behavior. MaxWaitDuration is no longer scaled by time.Second, fixing incorrect duration handling. Deprecated APIs were dropped, as 1.6 already includes breaking changes from upstream libdns updates.
What's Changed
- sync with new api by @theAeon in #286
- Implement libdnstest-based tests and fix related issues by @AndrianBdn in #289
- Fix GitHub Actions; Update dependencies by @AndrianBdn in #290
- Add: golangci-lint and related code cleanup by @AndrianBdn in #291
New Contributors
- @theAeon made their first contribution in #286
- @AndrianBdn made their first contribution in #289
Full Changelog: v1.5.1...v1.6.0-beta.2
v1.6.0-beta.1
The main change in this beta release is the adoption of libdns 1.0 APIs, which are required by Caddy. End-to-end tests are now implemented using the libdnstest framework, and the library includes coverage for a significantly larger set of DNS records.
What's Changed
- sync with new api by @theAeon in #286
- Implement libdnstest-based tests and fix related issues by @AndrianBdn in #289
- Fix GitHub Actions; Update dependencies by @AndrianBdn in #290
- Add: golangci-lint and related code cleanup by @AndrianBdn in #291
New Contributors
- @theAeon made their first contribution in #286
- @AndrianBdn made their first contribution in #289
Full Changelog: v1.5.0...v2.0.0-beta.1
v1.5.0
What's Changed
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.17.21 to 1.17.27 by @dependabot in #259
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.21 to 1.27.27 by @dependabot in #260
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.41.1 to 1.42.3 by @dependabot in #257
- feat: add option to specify hosted zone ID by @andrew-d in #261
New Contributors
Full Changelog: v1.4.0...v1.5.0
v1.4.0
What's Changed
- feat(deps): bump github.com/aws/aws-sdk-go-v2 from 1.17.8 to 1.18.0 by @dependabot in #50
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.27.7 to 1.28.0 by @dependabot in #47
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.21 to 1.18.22 by @dependabot in #49
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.13.21 to 1.13.22 by @dependabot in #53
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.28.0 to 1.28.1 by @dependabot in #52
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.22 to 1.18.23 by @dependabot in #51
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.13.22 to 1.13.23 by @dependabot in #54
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.23 to 1.18.24 by @dependabot in #55
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.24 to 1.18.25 by @dependabot in #57
- feat(deps): bump github.com/aws/aws-sdk-go-v2 from 1.18.0 to 1.18.1 by @dependabot in #62
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.28.1 to 1.28.2 by @dependabot in #60
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.25 to 1.18.26 by @dependabot in #59
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.26 to 1.18.27 by @dependabot in #65
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.28.2 to 1.28.3 by @dependabot in #63
- feat(deps): bump github.com/aws/aws-sdk-go-v2 from 1.18.1 to 1.19.0 by @dependabot in #69
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.13.26 to 1.13.27 by @dependabot in #68
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.28.3 to 1.28.4 by @dependabot in #67
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.27 to 1.18.28 by @dependabot in #70
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.28.4 to 1.28.5 by @dependabot in #73
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.28 to 1.18.29 by @dependabot in #71
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.29 to 1.18.30 by @dependabot in #77
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.28.5 to 1.28.6 by @dependabot in #74
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.28.6 to 1.29.1 by @dependabot in #84
- feat(deps): bump github.com/aws/aws-sdk-go-v2 from 1.19.1 to 1.20.0 by @dependabot in #79
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.13.29 to 1.13.31 by @dependabot in #82
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.30 to 1.18.32 by @dependabot in #83
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.32 to 1.18.33 by @dependabot in #88
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.29.1 to 1.29.2 by @dependabot in #85
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.13.32 to 1.13.34 by @dependabot in #93
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.13.34 to 1.13.35 by @dependabot in #100
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.29.2 to 1.29.5 by @dependabot in #99
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.33 to 1.18.36 by @dependabot in #97
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.36 to 1.18.37 by @dependabot in #101
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.13.35 to 1.13.38 by @dependabot in #107
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.37 to 1.18.40 by @dependabot in #106
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.13.38 to 1.13.41 by @dependabot in #112
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.40 to 1.18.43 by @dependabot in #113
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.43 to 1.18.44 by @dependabot in #116
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.29.5 to 1.30.1 by @dependabot in #115
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.30.1 to 1.37.0 by @dependabot in #194
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.44 to 1.26.3 by @dependabot in #193
- feat(deps): bump github.com/libdns/libdns from 0.2.1 to 0.2.2 by @dependabot in #232
- feat(deps): bump github.com/aws/aws-sdk-go-v2 from 1.24.1 to 1.26.1 by @dependabot in #238
- fix: fetching more than 300 records resulted in duplicates by @yarelm in #126
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.37.0 to 1.41.1 by @dependabot in #242
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.16.14 to 1.17.21 by @dependabot in #243
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.26.3 to 1.27.21 by @dependabot in #244
- fix: use environment variables to initialize provider by @aymanbagabas in #46
New Contributors
Full Changelog: v1.3.3...v1.4.0
Fix TXT/SPF issues
What's Changed
- fix: format TXT records based on specs by @aymanbagabas in #45
Full Changelog: v1.3.2...v1.3.3
v1.3.2
Only select public zones #19
What's Changed
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.15 to 1.18.18 by @dependabot in #33
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.27.3 to 1.27.4 by @dependabot in #30
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.18 to 1.18.20 by @dependabot in #38
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.27.4 to 1.27.6 by @dependabot in #40
- feat(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.13.19 to 1.13.20 by @dependabot in #42
- feat(deps): bump github.com/aws/aws-sdk-go-v2/service/route53 from 1.27.6 to 1.27.7 by @dependabot in #44
- feat(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.20 to 1.18.21 by @dependabot in #43
- Only select public zones by @devjack in #19
New Contributors
Full Changelog: v1.3.1...v1.3.2