Skip to content

Commit 8c558a1

Browse files
authored
fix(iroh-relay): Don't double-count connection accepts (#3436)
## Description - Wrote a test checking that accepts == disconnects in relay metrics - Fixed duplicate accept counts Bug was originally introduced in #3384: We used to `metrics.relay_accepts.inc()` or `metrics.websocket_accepts.inc()` and I thought there should be a replacement for these calls, `metrics.accepts.inc()` (along with removing the above two). Turns out the accepts are already tracked somewhere else, so I ended up counting them twice. ## Change checklist <!-- Remove any that are not relevant. --> - [x] Self-review.
1 parent e30c788 commit 8c558a1

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

iroh-relay/src/server/http_server.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,6 @@ impl Inner {
665665
let io = RateLimited::from_cfg(self.rate_limit, io, self.metrics.clone())
666666
.context(RateLimitingMisconfiguredSnafu)?;
667667

668-
self.metrics.accepts.inc();
669668
// Create a server builder with default config
670669
let websocket = tokio_websockets::ServerBuilder::new()
671670
.limits(tokio_websockets::Limits::default().max_payload_len(Some(MAX_FRAME_SIZE)))
@@ -1115,13 +1114,14 @@ mod tests {
11151114
#[traced_test]
11161115
async fn test_server_basic() -> Result {
11171116
info!("Create the server.");
1117+
let metrics = Arc::new(Metrics::default());
11181118
let service = RelayService::new(
11191119
Default::default(),
11201120
Default::default(),
11211121
None,
11221122
KeyCache::test(),
11231123
AccessConfig::Everyone,
1124-
Default::default(),
1124+
metrics.clone(),
11251125
);
11261126

11271127
info!("Create client A and connect it to the server.");
@@ -1199,6 +1199,14 @@ mod tests {
11991199
.await;
12001200
assert!(res.is_err());
12011201
assert!(client_b.next().await.is_none());
1202+
1203+
drop(client_a);
1204+
drop(client_b);
1205+
1206+
service.shutdown().await;
1207+
1208+
assert_eq!(metrics.accepts.get(), metrics.disconnects.get());
1209+
12021210
Ok(())
12031211
}
12041212

iroh/src/discovery/pkarr/dht.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ impl Builder {
216216
}
217217
if let Some(url) = &self.pkarr_relay {
218218
builder
219-
.relays(&[url.clone()])
219+
.relays(std::slice::from_ref(url))
220220
.map_err(|e| IntoDiscoveryError::from_err("pkarr", e))?;
221221
}
222222
builder

0 commit comments

Comments
 (0)