Changelog

View Source

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.1.0 - 2026-06-15

Added

  • disconnect_on_deregister config option (default true). When set to false, nodes that disappear from DNS but still have a live distribution connection are left connected and only removed once the connection drops naturally. This prevents spurious :global partition-prevention cascades during graceful shutdowns that use a deregistration delay.

Fixed

  • DynamicSrv.Epmd.address_please/3 now returns {:error, reason} instead of crashing when DNS resolution fails (e.g. :nxdomain). The distribution layer handles this as a failed connection attempt rather than a process crash.

1.0.2 - 2026-06-12

Fixed

  • Enable EDNS(0) (edns: 0) on all :inet_res.lookup/4 calls in both the clustering strategy and the EPMD module. Many modern DNS resolvers (e.g. Consul, CoreDNS) require EDNS(0) to return full SRV responses over UDP; without it, lookups could silently return empty or truncated results and cause cluster discovery failures.

1.0.1 - 2026-05-14

Changed

  • Downgrade "No nodes found" log message from info to debug to reduce noise in steady-state operation

1.0.0 - 2026-05-08

Fixed

  • Replace double poll scheduling with handle_continue/2 to ensure a single, clean poll chain
  • Use handle_continue(:poll, state) for initial poll instead of calling do_poll/1 directly in init/1
  • Add catch-all clause in get_nodes/1 to handle unexpected resolver responses without crashing
  • Fix regex character class [a-z0-9-_] to [a-z0-9_-] to avoid ambiguous range matching

Added

  • Test coverage for unexpected resolver responses
  • Test coverage for SRV records with non-matching hostname formats
  • Test coverage for missing :service config
  • Test coverage for meta: nil initialization path
  • Test coverage for self-exclusion from the node list
  • Test coverage for recurring polls after the initial poll

0.1.4 - 2025-09-08

Fixed

  • Fix hexdocs configuration — add README and links

0.1.3 - 2025-09-07

Fixed

  • Fix broken link to GitHub repository

0.1.2 - 2025-09-07

Added

  • ExDoc support for generating documentation

0.1.1 - 2025-09-07

Fixed

  • Fix packaging configuration for Hex publish

0.1.0 - 2025-09-07

Added

  • Initial release of Cluster.Strategy.DynamicSrv — a libcluster strategy using DNS SRV records
  • Support for Consul SRV records in <node-name>.<service-domain-name> format
  • Configurable polling interval (default 5000ms)
  • Configurable resolver function for testing and custom DNS backends
  • MIT license