chore: update h1-async for prom impl in stacks-node

This commit is contained in:
Aaron Blankstein
2022-01-12 10:57:10 -06:00
parent 4558b72da8
commit 08e489d2f7
2 changed files with 9 additions and 12 deletions

View File

@@ -142,7 +142,6 @@ async fn main() -> http_types::Result<()> {
let should_ignore_txs = config.should_ignore_transactions(effective_block_height - 1); let should_ignore_txs = config.should_ignore_transactions(effective_block_height - 1);
let stream = stream?; let stream = stream?;
let addr = addr.clone();
if should_ignore_txs { if should_ignore_txs {
// Returns ok // Returns ok
@@ -152,17 +151,17 @@ async fn main() -> http_types::Result<()> {
}) })
.await?; .await?;
// Enqueue request // Enqueue request
buffered_requests.push_back((addr, stream)); buffered_requests.push_back(stream);
} else { } else {
// Dequeue all the requests we've been buffering // Dequeue all the requests we've been buffering
while let Some((addr, stream)) = buffered_requests.pop_front() { while let Some(stream) = buffered_requests.pop_front() {
let config = config.clone(); let config = config.clone();
task::spawn(async move { task::spawn(async move {
println!( println!(
"Dequeuing buffered request from {}", "Dequeuing buffered request from {}",
stream.peer_addr().unwrap() stream.peer_addr().unwrap()
); );
if let Err(err) = accept(addr, stream, &config).await { if let Err(err) = accept(stream, &config).await {
eprintln!("{}", err); eprintln!("{}", err);
} }
}); });
@@ -171,7 +170,7 @@ async fn main() -> http_types::Result<()> {
let config = config.clone(); let config = config.clone();
task::spawn(async move { task::spawn(async move {
println!("Handling request from {}", stream.peer_addr().unwrap()); println!("Handling request from {}", stream.peer_addr().unwrap());
if let Err(err) = accept(addr, stream, &config).await { if let Err(err) = accept(stream, &config).await {
eprintln!("{}", err); eprintln!("{}", err);
} }
}); });
@@ -181,7 +180,7 @@ async fn main() -> http_types::Result<()> {
} }
// Take a TCP stream, and convert it into sequential HTTP request / response pairs. // Take a TCP stream, and convert it into sequential HTTP request / response pairs.
async fn accept(_addr: String, stream: TcpStream, config: &ConfigFile) -> http_types::Result<()> { async fn accept(stream: TcpStream, config: &ConfigFile) -> http_types::Result<()> {
async_h1::accept(stream.clone(), |mut req| async { async_h1::accept(stream.clone(), |mut req| async {
match ( match (
req.method(), req.method(),

View File

@@ -35,7 +35,7 @@ pub fn start_serving_prometheus_metrics(bind_address: String) {
let addr = addr.clone(); let addr = addr.clone();
task::spawn(async { task::spawn(async {
if let Err(err) = accept(addr, stream).await { if let Err(err) = accept(stream).await {
eprintln!("{}", err); eprintln!("{}", err);
} }
}); });
@@ -43,18 +43,16 @@ pub fn start_serving_prometheus_metrics(bind_address: String) {
}); });
} }
async fn accept(addr: String, stream: TcpStream) -> http_types::Result<()> { async fn accept(stream: TcpStream) -> http_types::Result<()> {
debug!("Handle Prometheus polling ({})", stream.peer_addr()?); debug!("Handle Prometheus polling ({})", stream.peer_addr()?);
async_h1::accept(&addr, stream.clone(), |_| async { async_h1::accept(stream.clone(), |_| async {
let encoder = TextEncoder::new(); let encoder = TextEncoder::new();
let metric_families = gather(); let metric_families = gather();
let mut buffer = vec![]; let mut buffer = vec![];
encoder.encode(&metric_families, &mut buffer).unwrap(); encoder.encode(&metric_families, &mut buffer).unwrap();
let mut response = Response::new(StatusCode::Ok); let mut response = Response::new(StatusCode::Ok);
response response.append_header("Content-Type", encoder.format_type());
.append_header("Content-Type", encoder.format_type())
.expect("Unable to set headers");
response.set_body(Body::from(buffer)); response.set_body(Body::from(buffer));
Ok(response) Ok(response)