-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathtracing.rs
37 lines (33 loc) · 1.18 KB
/
tracing.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use restate_sdk::prelude::*;
use std::time::Duration;
use tracing::info;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, Layer};
#[restate_sdk::service]
trait Greeter {
async fn greet(name: String) -> Result<String, HandlerError>;
}
struct GreeterImpl;
impl Greeter for GreeterImpl {
async fn greet(&self, ctx: Context<'_>, name: String) -> Result<String, HandlerError> {
info!("Before sleep");
ctx.sleep(Duration::from_secs(61)).await?; // More than suspension timeout to trigger replay
info!("After sleep");
Ok(format!("Greetings {name}"))
}
}
#[tokio::main]
async fn main() {
let env_filter = tracing_subscriber::EnvFilter::try_from_default_env()
.unwrap_or_else(|_| "info,restate_sdk=debug".into());
let replay_filter = restate_sdk::filter::ReplayAwareFilter;
tracing_subscriber::registry()
.with(
tracing_subscriber::fmt::layer()
.with_filter(env_filter)
.with_filter(replay_filter),
)
.init();
HttpServer::new(Endpoint::builder().bind(GreeterImpl.serve()).build())
.listen_and_serve("0.0.0.0:9080".parse().unwrap())
.await;
}