Skip to content

v7.0.0

Compare
Choose a tag to compare
@weppos weppos released this 19 Aug 15:56
· 26 commits to main since this release
v7.0.0
0d1a717

This is a big release full of massive performance improvements and protocol compliance,
but also of breaking changes. Read carefully the changelog and the documentation before migrating.

Major Changes

The application is now divided in three core subsystems, that is, listeners, packet pipelines,
and zones, which are configured differently and will require migration.
See m:erldns_listeners. m:erldns_pipeline and m:erldns_zones respectively for documentation
on how to reconfigure.

Telemetry events, as well as logger events, are entirely scoped within these respective subsystems,
that means, that the events are now prefixed with [erldns, request, _], for listener workers,
and [erldns, pipeline] for pipeline processing. Similarly, logger events are tagged with
domain => [erldns, admin | listeners | pipeline | zones] metadata, and all are structured.

Custom parsers and encoders

If you had any custom parser or encoder, you will need to update them to the new API, which unifies
both into a single module. See m:erldns_zone_codec for more information on its callbacks. Note
that the zone_to_erlang/1,2 callbacks are now decode/1 and zone_*/x callbacks are now
encode/2, and they all take only maps as input and output respectively.

TXT and SPF record formats

TXT and SPF record formats has changed, from a single string, to an array, to support
more complex DNS records & use cases, so that the following:

{
  ...
  "type": "TXT",
  "data": {
    "txt": "\"Hi, this is some text\" \"with extras\""
  }
},

becomes

{
  ...
  "type": "TXT",
  "data": {
    "txts": ["Hi, this is some text", "with extras"]
  }
},

A warning will be logged for each invalid record, but they will be skipped, and not loaded.

Changes

  • Refactor the query processing pipeline #224
  • Reimplement the network stack #225
  • Rework zones loader #230
  • Rework zones codecs #231
  • Rework zones cache #232
  • Rework documentation and internals #233
  • Fix overriding packet size in optrr record #242
  • Upgrade dns_erlang to v4.
  • Use segmented_cache for the zone cache and the throttle modules.

Added

  • Support for OTP28 #220
  • Support for dns_erlang v4, which enforces strings as binaries and options as maps
  • Introduce domain tag in logger events #244
  • zone cache put_rrset_zone accepts zone records #243
  • Add statistic functionality to listeners #227

Removed

  • Support for TXT and SPF records with data as a single string, they must be a list of strings instead.
  • Support for the erldns_txt parser #248
  • Support for zone parsers taking input as lists #231

Fixed

  • Fix DNSSEC timestamps #234
  • Fix (C)DNS/(C)DNSKEY signing #235
  • Fix cache non-normalised match bug #241

Security

  • Introduce backpressure and load shedding #240