• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dnsimple / erldns / 31485274997
88%

Build:
DEFAULT BRANCH: main
Ran 11 Aug 2026 11:10AM UTC
Jobs 1
Files 49
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

11 Aug 2026 11:08AM UTC coverage: 87.777% (-0.1%) from 87.893%
31485274997

push

github

web-flow
Reach the custom decoders without raising through dns_json (#364)

`dns_json` reports a type name it does not know by raising out of
`binary_to_dns_type/1`, and `json_record_to_erlang/1` catches that to
fall through to the configured custom decoders. So every ALIAS, URL and
POOL record was decoded by way of a failed name lookup, a
`string:to_integer/1` walk of a non-numeric binary as unicode graphemes,
an exception, a stacktrace capture, and a discarded debug log -- before
the decoder that actually handles it ever ran. Exceptions as control
flow, once per record, on the path a whole zone goes through.

The type name is now checked first: one recognised by `dns_names` or
spelled as a bare number is decoded as before, anything else is handed
to the custom decoders directly. The raise stays where it belongs, for
records that are genuinely malformed.

Measured over a synthetic 50k-record zone, decoding the whole zone:

    custom types    before      after
    0%              19.1 ms     17.9 ms
    50%            964.7 ms     12.4 ms
    95%          1,848.5 ms      7.5 ms

The cost was linear per custom record, so it scaled with how much of a
zone was custom rather than with anything about the zone's size.

Separately, `apply_context_options/1` read `application:get_env(erldns,
zones)` once for every record in a zone to fetch a value that cannot
change mid-decode. It is read once per zone now and threaded down like
the decoders already were.

20 of 21 new or added lines in 1 file covered. (95.24%)

3 existing lines in 2 files now uncovered.

1745 of 1988 relevant lines covered (87.78%)

5055.04 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
95.59
-0.71% src/zones/erldns_zone_decoder.erl

Coverage Regressions

Lines Coverage ∆ File
2
80.77
-7.69% src/pipes/erldns_edns_ede.erl
1
83.95
-1.23% src/listeners/udp/erldns_proto_udp.erl
Jobs
ID Job ID Ran Files Coverage
1 31485274997.1 11 Aug 2026 11:10AM UTC 49
87.78
GitHub Action Run
Source Files on build 31485274997
  • Tree
  • List 49
  • Changed 3
  • Source Changed 1
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31485274997
  • 90780cef on github
  • Prev Build on main (#30918248420)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc