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

dnsimple / erldns / 15584237833
85%

Build:
DEFAULT BRANCH: main
Ran 11 Jun 2025 12:00PM UTC
Jobs 1
Files 32
Run time 78min
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 Jun 2025 11:59AM UTC coverage: 76.093% (+8.3%) from 67.799%
15584237833

push

github

web-flow
Reimplement zone cache (#232)

Contains a ton of performance improvements.

erldns:normalize_name/1 is a slow version of dns:dname_to_lower/1, and
it was also called repeatedly on all reads and writes and function calls
– this function is idempotent hence recalling it changes nothing, but is
wasted computation. Here we remove the former and use only the latter,
and carefully rewrite the call stack from erldns_zone_cache to do
normalisation of names only on entry points from exported functions, and
consider them normalised down the road.

Remove mnesia from the codebase, as it wasn't used. Also remove all the
erldns_storage indirection with related modules. Only erldns_zone_cache
was using it, so it might as well call the ets tables itself with an
added performance benefit (many less function calls, and the possibility
to use better ets API functions).

Tables now use the latest ets optimisations (see official benchmarks at
https://www.erlang.org/bench/ets_bench_result_lock_config) from
read/write concurrency flags.

The zones table now inserts the #zone{} record using the ets option
{keypos, #zone.name} instead of inserting {Name, Zone} duplets, making
possible to use ets:lookup_element/4 which incurs faster reads as it
doesn't need to read the whole table entry but only the element in the
given position. They can also now use ets:select_count/2, ets:member/2
when appropriate for further improvements.

Plenty of map and lists functions use newer standard library functions
to make code simpler, for example maps:groups_from_list/2 and removing
usage of lists:flatten/1.

155 of 167 new or added lines in 2 files covered. (92.81%)

5 existing lines in 2 files now uncovered.

1114 of 1464 relevant lines covered (76.09%)

1506.23 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
12
88.48
6.66% src/zones/erldns_zone_cache.erl

Uncovered Existing Lines

Lines Coverage ∆ File
2
84.95
-2.15% src/zones/erldns_zone_loader.erl
3
88.48
6.66% src/zones/erldns_zone_cache.erl
Jobs
ID Job ID Ran Files Coverage
1 15584237833.1 11 Jun 2025 12:00PM UTC 32
76.09
GitHub Action Run
Source Files on build 15584237833
  • Tree
  • List 32
  • Changed 6
  • Source Changed 5
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #15584237833
  • f48053a0 on github
  • Prev Build on main (#15579376325)
  • Next Build on main (#15584382532)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc