3x-ui/internal/sub
PathGao e467b25f03
fix(sub): coalesce external subscription refreshes (#6139)
* fix(sub): coalesce external subscription refreshes

Limit concurrent cache misses to one upstream request per URL and evict the oldest entries once the cache reaches its bounded capacity.

* fix(sub): preserve shared stale refresh results

Release every in-flight waiter on panic or error, carry the leader outcome to waiters, and strengthen cache capacity and stale fallback coverage.

---------

Co-authored-by: PathGao <gaoyanbo@gaoyanbodeMacBook-Air.local>
2026-07-29 20:58:00 +02:00
..
build_urls_test.go fix: resolve a batch of open bug-tagged issues (traffic accounting, share strategy, sub address, CPU) (#5477) 2026-06-22 00:22:28 +02:00
characterization_test.go fix(sub): restore client email in panel copy/QR link remark (#5532) 2026-06-24 15:25:41 +02:00
clash_external.go refactor(frontend): move form-item hints from extra to tooltip 2026-06-17 17:24:16 +02:00
clash_service.go fix(sub): quote Clash scalars a YAML parser would read as numbers (#6104) 2026-07-27 14:28:34 +02:00
clash_service_test.go fix(sub): include native WireGuard clients in Clash and JSON subscriptions (#5676) 2026-07-09 00:52:46 +02:00
clash_yaml.go style: drop the line comments added with the triage fixes 2026-07-27 14:37:57 +02:00
clash_yaml_test.go style: drop the line comments added with the triage fixes 2026-07-27 14:37:57 +02:00
controller.go feat(sub): expose live online status and add ?format=info endpoint 2026-07-23 23:57:29 +02:00
controller_test.go feat(sub): add raw subscription download actions (#6017) 2026-07-21 15:52:33 +02:00
default.json refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
dist.go feat(sub): add raw subscription download actions (#6017) 2026-07-21 15:52:33 +02:00
endpoint.go fix(sub): carry a host's Final Mask into raw share links 2026-07-07 15:05:23 +02:00
endpoint_test.go fix(sub): carry a host's Final Mask into raw share links 2026-07-07 15:05:23 +02:00
export_all_links_test.go feat(inbounds): apply remark template to Export all inbound links 2026-06-27 11:22:45 +02:00
external_config.go chore: refresh dependencies, fix Linux tool tasks, modernize Go idioms 2026-07-25 16:08:09 +02:00
external_config_test.go fix(sub): preserve external link names in Clash/JSON (#6049) 2026-07-21 15:50:33 +02:00
external_only_sub_test.go feat(sub): auto-detect subscription format by User-Agent (Updated) (#5826) 2026-07-14 13:01:40 +02:00
external_subscription.go fix(sub): coalesce external subscription refreshes (#6139) 2026-07-29 20:58:00 +02:00
external_subscription_test.go fix(sub): coalesce external subscription refreshes (#6139) 2026-07-29 20:58:00 +02:00
host_sub.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
host_sub_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
info_endpoint_test.go feat(sub): expose live online status and add ?format=info endpoint 2026-07-23 23:57:29 +02:00
json_flow_gate_test.go fix(sub): gate the VLESS flow in JSON subscriptions like raw and Clash links 2026-07-25 00:51:48 +02:00
json_service.go fix(sub): gate the VLESS flow in JSON subscriptions like raw and Clash links 2026-07-25 00:51:48 +02:00
json_service_test.go fix(sub): include native WireGuard clients in Clash and JSON subscriptions (#5676) 2026-07-09 00:52:46 +02:00
links.go feat(inbounds): apply remark template to Export all inbound links 2026-06-27 11:22:45 +02:00
links_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
mutation_audit_test.go fix(sub): resolve subscription clients and stats from normalized tables 2026-07-02 16:58:00 +02:00
page_data_test.go feat(sub): expose live online status and add ?format=info endpoint 2026-07-23 23:57:29 +02:00
remark_vars.go fix(sub): omit hyphen for empty remark variables (#6101) 2026-07-28 23:02:00 +02:00
remark_vars_test.go fix(sub): omit hyphen for empty remark variables (#6101) 2026-07-28 23:02:00 +02:00
service.go feat(sub): Add XHTTP session field compatibility in share links and subscriptions (#5929) 2026-07-28 22:15:28 +02:00
service_dedup_test.go fix(sub): resolve subscription clients and stats from normalized tables 2026-07-02 16:58:00 +02:00
service_flow_test.go feat(hosts): managed Hosts for per-host subscription link overrides (#5409) 2026-06-17 12:06:55 +02:00
service_mtproto_test.go fix(mtproto): drop the remark fragment from tg proxy deep links 2026-07-06 17:55:35 +02:00
service_orphaned_stats_test.go chore: bump deps and modernize test loops 2026-06-26 00:10:30 +02:00
service_property_test.go fix(nodes): stop multi-attached client traffic inflating across node inbounds 2026-06-15 19:31:57 +02:00
service_sharelink_test.go feat(reality): derive a stable per-client spiderX for shared links 2026-07-02 12:53:08 +02:00
service_sort_test.go feat(hosts): managed Hosts for per-host subscription link overrides (#5409) 2026-06-17 12:06:55 +02:00
service_test.go feat(sub): Add XHTTP session field compatibility in share links and subscriptions (#5929) 2026-07-28 22:15:28 +02:00
service_userinfo_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
service_wireguard_test.go fix(wireguard): preserve all Allowed IPs in share link, .conf, and subscription (#6051) 2026-07-21 15:50:16 +02:00
sub.go feat(sub): auto-detect subscription format by User-Agent (Updated) (#5826) 2026-07-14 13:01:40 +02:00
sub_panic_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
sub_scale_test.go feat(sub): auto-detect subscription format by User-Agent (Updated) (#5826) 2026-07-14 13:01:40 +02:00
vless_route.go fix(sub): bake Host VLESS Route into subscription UUIDs 2026-06-29 14:32:23 +02:00
vless_route_sub_test.go feat(sub): auto-detect subscription format by User-Agent (Updated) (#5826) 2026-07-14 13:01:40 +02:00
vless_route_test.go fix(sub): bake Host VLESS Route into subscription UUIDs 2026-06-29 14:32:23 +02:00