pve-exporter/collector
Davíð Steinn Geirsson 3bad7963af fix: resolve deadlock in node_config collector causing request exhaustion
The outer goroutine per-node acquired a semaphore slot and held it while
collectNode spawned inner goroutines needing slots from the same semaphore.
With maxConc=5 and 5+ nodes, all slots were consumed by outer goroutines,
inner goroutines blocked forever, and Collect() never returned — permanently
consuming an HTTP MaxRequestsInFlight slot until the server stopped responding.

Remove the redundant outer semaphore acquire (inner goroutines already manage
their own slots) and add a 120s HTTP timeout as defense-in-depth.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 11:30:54 +00:00
..
fixtures test: add physical_disk collector test and fixture 2026-03-20 15:33:43 +00:00
backup.go feat: add backup collector (pve_not_backed_up_total, pve_not_backed_up_info) 2026-03-20 11:33:33 +00:00
backup_test.go feat: add backup collector (pve_not_backed_up_total, pve_not_backed_up_info) 2026-03-20 11:33:33 +00:00
client.go Strip trailing slash from PVE host URLs 2026-03-23 11:34:26 +00:00
client_test.go feat: add PVE API client with multi-host failover 2026-03-20 11:25:48 +00:00
cluster_resources.go feat: add cluster_resources collector (16 metrics) 2026-03-20 11:33:03 +00:00
cluster_resources_test.go feat: add cluster_resources collector (16 metrics) 2026-03-20 11:33:03 +00:00
cluster_status.go feat: add cluster_status collector (pve_node_info, pve_cluster_info) 2026-03-20 11:31:31 +00:00
cluster_status_test.go feat: add cluster_status collector (pve_node_info, pve_cluster_info) 2026-03-20 11:31:31 +00:00
collector.go feat: add collector framework with registry and parallel scrape orchestration 2026-03-20 11:26:55 +00:00
corosync.go feat: add corosync collector (quorate, nodes_total, expected_votes, node_online) 2026-03-20 11:32:00 +00:00
corosync_test.go feat: add corosync collector (quorate, nodes_total, expected_votes, node_online) 2026-03-20 11:32:00 +00:00
ha_status.go fix: normalize HA service IDs to match cluster_resources format 2026-03-23 15:12:01 +00:00
ha_status_test.go fix: normalize HA service IDs to match cluster_resources format 2026-03-23 15:12:01 +00:00
node_config.go fix: resolve deadlock in node_config collector causing request exhaustion 2026-03-24 11:30:54 +00:00
node_config_test.go feat: add node_config collector (pve_onboot_status) 2026-03-20 11:36:17 +00:00
node_status.go feat: add node_status collector (load, swap, rootfs, ksm, boot mode) 2026-03-20 15:23:09 +00:00
node_status_test.go test: add node_status collector test and fixture 2026-03-20 15:23:04 +00:00
physical_disk.go feat: add physical_disk collector (health, wearout, size, OSD mapping) 2026-03-20 15:33:46 +00:00
physical_disk_test.go test: add physical_disk collector test and fixture 2026-03-20 15:33:43 +00:00
replication.go feat: add replication collector (6 replication metrics) 2026-03-20 11:36:54 +00:00
replication_test.go feat: add replication collector (6 replication metrics) 2026-03-20 11:36:54 +00:00
subscription.go feat: add subscription collector (info, status, next_due_timestamp) 2026-03-20 11:35:36 +00:00
subscription_test.go feat: add subscription collector (info, status, next_due_timestamp) 2026-03-20 11:35:36 +00:00
testutil_test.go feat: add collector framework with registry and parallel scrape orchestration 2026-03-20 11:26:55 +00:00
version.go feat: add version collector (pve_version_info) 2026-03-20 11:31:06 +00:00
version_test.go feat: add version collector (pve_version_info) 2026-03-20 11:31:06 +00:00
vm_pressure.go feat: add vm_pressure collector (PSI cpu/memory/io for QEMU VMs) 2026-03-20 15:28:22 +00:00
vm_pressure_test.go test: add vm_pressure collector test and fixture 2026-03-20 15:28:17 +00:00