Jelajahi Sumber

Return 503 Service Unavailable if the server is not read.

Jing Yang 4 tahun lalu
induk
melakukan
77f6c6a6dd
1 mengubah file dengan 10 tambahan dan 4 penghapusan
  1. 10 4
      durio/src/main.rs

+ 10 - 4
durio/src/main.rs

@@ -75,8 +75,11 @@ async fn run_web_server(me: usize) {
         .and(warp::body::json())
         .map(move |body: PutAppendBody| {
             counter_2.fetch_add(1, Ordering::SeqCst);
-            put_clerk.put(body.key, body.value);
-            warp::reply::reply()
+            let code = match put_clerk.put(body.key, body.value) {
+                None => warp::http::StatusCode::SERVICE_UNAVAILABLE,
+                Some(_) => warp::http::StatusCode::OK,
+            };
+            warp::reply::with_status(warp::reply(), code)
         });
     let append_clerk = clerk.clone();
     let append = warp::post()
@@ -84,8 +87,11 @@ async fn run_web_server(me: usize) {
         .and(warp::body::json())
         .map(move |body: PutAppendBody| {
             counter_3.fetch_add(1, Ordering::SeqCst);
-            append_clerk.append(body.key, body.value);
-            warp::reply::reply()
+            let code = match append_clerk.append(body.key, body.value) {
+                None => warp::http::StatusCode::SERVICE_UNAVAILABLE,
+                Some(_) => warp::http::StatusCode::OK,
+            };
+            warp::reply::with_status(warp::reply(), code)
         });
 
     let routes = is_leader.or(get).or(put).or(append);