Files
dht/dht-crawler/CHANGELOG.md
T

2.4 KiB

Changelog

本项目遵循语义化版本。0.2.1 是包含公开 API 变更的 breaking release。

Unreleased

Added

  • BEP-51 sample_infohashes 主动发现、按节点 interval/退避的采样 actor,以及有界 Hash 去重。
  • 采样 Hash 优先查询来源节点,再通过迭代式 get_peers 补充 Peer。

Changed

  • Metadata 最大 info 字典大小改为可通过 max_metadata_size_bytes 配置,并拒绝负数文件大小和总大小溢出。
  • 主动 get_peers ingress 改为有界排队,避免突发采样在速率预算耗尽时直接丢弃。
  • 默认主动 Peer lookup 提升到每秒 128 个、最多 256 个并发 lookup。
  • 空节点池的 Bootstrap 默认改为 30 秒重试、每轮最多 16 个端点,降低坏 DNS 地址导致冷启动停滞的概率。

0.2.1 - 2026-07-30

Breaking changes

  • DHTOptions 的 Metadata 和 crawl 参数改为嵌套结构:MetadataOptionsCrawlOptionsRateLimitOptionsPoolOptionsBootstrapOptionsTargetOptionsSchedulerOptions
  • 删除旧的 metadata_timeoutmax_metadata_queue_sizemax_metadata_worker_countnode_queue_capacity 等扁平字段。
  • 删除旧 active/candidate frontier 和 sharded queue 实现,改用单所有者严格 FIFO 节点池、recent-probe set 与 responsive-node ring。
  • Metadata 调度改为有界、按 InfoHash 去重、最多三个 Peer、60 秒 freshness TTL。

Added

  • 独立的主动爬取 QPS、新目标、节点替换、回复包/字节、单来源回复、总在途和子网在途限制。
  • 根据 Metadata 队列压力自动降低实际 find_node QPS。
  • Bootstrap 来源退避、低水位触发和响应节点快照。
  • on_torrent_with_ackon_metadata_fetch_completeMetadataFetchCompletionStatus 和真实 Peer attempts
  • SocketAddr 缓存 Metadata Peer 的 timeout/connect failure。
  • DhtRuntimeStats::snapshot()observability_snapshot() 和三组固定桶直方图。
  • DHT、UDP、节点池、Metadata scheduler/fetcher 的低基数 Prometheus 指标。

Changed

  • Metadata timeout 现在覆盖连接、握手、传输、SHA1 和解析的完整 Peer 尝试。
  • UDP ingress、crawl events 和 Metadata queues 全部有界,并暴露 drop/depth 指标。
  • DHT 回复增加总包、总字节、单来源限流,以及 ping/get_peers 10% 保底预算。