Skip to content

Commit 9caee70

Browse files
authored
Merge pull request #63 from Tim-Zhang/graceful-shutdown
Graceful shutdown and server restart for async [hot upgrade needed]
2 parents 8d7b58d + 86fa775 commit 9caee70

File tree

3 files changed

+196
-60
lines changed

3 files changed

+196
-60
lines changed

example/Cargo.lock

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

example/async-server.rs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,32 @@ async fn main() {
9292
let a = Arc::new(a);
9393
let aservice = agent_ttrpc::create_agent_service(a);
9494

95-
let server = Server::new()
95+
let mut server = Server::new()
9696
.bind("unix:///tmp/1")
9797
.unwrap()
9898
.register_service(hservice)
9999
.register_service(aservice);
100100

101-
let mut stream = signal(SignalKind::hangup()).unwrap();
101+
let mut hangup = signal(SignalKind::hangup()).unwrap();
102+
let mut interrupt = signal(SignalKind::interrupt()).unwrap();
103+
server.start().await.unwrap();
104+
102105
tokio::select! {
103-
_ = stream.recv() => {
104-
println!("signal received")
106+
_ = hangup.recv() => {
107+
// test stop_listen -> start
108+
println!("stop listen");
109+
server.stop_listen().await;
110+
println!("start listen");
111+
server.start().await.unwrap();
112+
113+
// hold some time for the new test connection.
114+
let timeout = tokio::time::delay_for(std::time::Duration::from_secs(100));
115+
timeout.await;
105116
}
106-
_ = server.start() => {
107-
println!("server exit")
117+
_ = interrupt.recv() => {
118+
// test graceful shutdown
119+
println!("graceful shutdown");
120+
server.shutdown().await.unwrap();
108121
}
109122
};
110123
}

0 commit comments

Comments
 (0)