You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
An HTTPProxy reports success while one hostname's DNS record is refused #537
An HTTPProxy reports HostnamesVerified=True, "All hostnames have been accepted and programmed", while the DNS record for one of its hostnames was refused. That hostname's own status says DNSRecordProgrammed=False.
Our API documentation promises that a hostname which is not programmed is named in that message, with the reason.
Evidence
The condition is decided from the downstream Gateway's listener Accepted conditions and nothing else, so "programmed" means the listener was accepted. The deprecated status.hostnames list comes from the same set.
To reproduce, use a zone whose Domain is an apex, so the proxy writes ALIAS records. Create a CNAME record set at one name, and attach that name and one other to an HTTPProxy. PowerDNS refuses the proxy's ALIAS beside the CNAME.
Fixed in v0.32.30 by #657, which production has run since 2026-10-18.
What an HTTPProxy shows now:
It carries DNSRecordsProgrammed, as its Gateway does. A refused or conflicting DNS record reads False with reason PartialFailure, and the hostname's own status says why.
A hostname that waits for its DNS zone or domain to be set up reads False with reason Pending, not as a failure.
A Gateway with no hostname left for Datum-managed DNS carries no condition, so its HTTPProxies carry none.
HostnamesVerified keeps its meaning: whether each hostname is owned and accepted. So this took a different route than the criteria above name. DNS has a condition of its own.
On production, before and after the roll:
Before
After
Gateways with DNSRecordsProgrammed False
23
8
HTTPProxies that carry DNSRecordsProgrammed
0
45 (37 True, 8 False)
The 8 Gateways that stay False each have a hostname whose record was refused or that waits on the customer. A wait on Datum would read Pending. The other 15 had no hostname left for Datum-managed DNS and dropped a condition left from an earlier state.
The API documentation and the True message that this issue quoted are corrected in #665.
#650 first carried the condition and was reverted by #655, because a new hostname showed a false failure while its zone settled. #657 carries it again and reports that wait as pending.
Activity
vvoytovych commentedon Oct 19, 2026
Fixed in v0.32.30 by #657, which production has run since 2026-10-18.
What an HTTPProxy shows now:
DNSRecordsProgrammed, as its Gateway does. A refused or conflicting DNS record reads False with reasonPartialFailure, and the hostname's own status says why.Pending, not as a failure.HostnamesVerifiedkeeps its meaning: whether each hostname is owned and accepted. So this took a different route than the criteria above name. DNS has a condition of its own.On production, before and after the roll:
DNSRecordsProgrammedFalseDNSRecordsProgrammedThe 8 Gateways that stay False each have a hostname whose record was refused or that waits on the customer. A wait on Datum would read
Pending. The other 15 had no hostname left for Datum-managed DNS and dropped a condition left from an earlier state.The API documentation and the True message that this issue quoted are corrected in #665.
#650 first carried the condition and was reverted by #655, because a new hostname showed a false failure while its zone settled. #657 carries it again and reports that wait as pending.