2.4 KiB
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_peersingress 改为有界排队,避免突发采样在速率预算耗尽时直接丢弃。 - 默认主动 Peer lookup 提升到每秒 128 个、最多 256 个并发 lookup。
- 空节点池的 Bootstrap 默认改为 30 秒重试、每轮最多 16 个端点,降低坏 DNS 地址导致冷启动停滞的概率。
0.2.1 - 2026-07-30
Breaking changes
- 将
DHTOptions的 Metadata 和 crawl 参数改为嵌套结构:MetadataOptions、CrawlOptions、RateLimitOptions、PoolOptions、BootstrapOptions、TargetOptions、SchedulerOptions。 - 删除旧的
metadata_timeout、max_metadata_queue_size、max_metadata_worker_count、node_queue_capacity等扁平字段。 - 删除旧 active/candidate frontier 和 sharded queue 实现,改用单所有者严格 FIFO 节点池、recent-probe set 与 responsive-node ring。
- Metadata 调度改为有界、按 InfoHash 去重、最多三个 Peer、60 秒 freshness TTL。
Added
- 独立的主动爬取 QPS、新目标、节点替换、回复包/字节、单来源回复、总在途和子网在途限制。
- 根据 Metadata 队列压力自动降低实际
find_nodeQPS。 - Bootstrap 来源退避、低水位触发和响应节点快照。
on_torrent_with_ack、on_metadata_fetch_complete、MetadataFetchCompletionStatus和真实 Peerattempts。- 按
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_peers10% 保底预算。