]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: switch to size_t and exception in rgw::io::BasicClient::complete_request.
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Thu, 6 Oct 2016 12:44:36 +0000 (14:44 +0200)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Fri, 21 Oct 2016 20:57:22 +0000 (22:57 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
15 files changed:
src/rgw/librgw.cc
src/rgw/rgw_asio_client.cc
src/rgw/rgw_asio_client.h
src/rgw/rgw_civetweb.cc
src/rgw/rgw_civetweb.h
src/rgw/rgw_client_io.cc
src/rgw/rgw_client_io.h
src/rgw/rgw_client_io_decoimpl.h
src/rgw/rgw_fcgi.cc
src/rgw/rgw_fcgi.h
src/rgw/rgw_lib.h
src/rgw/rgw_loadgen.cc
src/rgw/rgw_loadgen.h
src/rgw/rgw_process.cc
src/rgw/rgw_rest.cc

index dfdb853ef262b486d18cca5331b3e93eadfff8af..a31408e7a0869fdf4af3d5daa71f0ad86c9f265d 100644 (file)
@@ -290,9 +290,11 @@ namespace rgw {
     op->complete();
 
   done:
-    int r = io->complete_request();
-    if (r < 0) {
-      dout(0) << "ERROR: io->complete_request() returned " << r << dendl;
+    try {
+      io->complete_request();
+    } catch (rgw::io::Exception& e) {
+      dout(0) << "ERROR: io->complete_request() returned "
+              << e.what() << dendl;
     }
     if (should_log) {
       rgw_log_op(store, s, (op ? op->name() : "unknown"), olog);
index b098edf6b26b6b819a28ced9c7499da11743b922..aa920ecf96d455b396ae8f2dac46283a25645509 100644 (file)
@@ -85,7 +85,7 @@ size_t RGWAsioClientIO::write_data(const char* const buf,
   auto bytes = boost::asio::write(socket, boost::asio::buffer(buf, len), ec);
   if (ec) {
     derr << "write_data failed: " << ec.message() << dendl;
-    throw rgw::io::RestfulClient::Exception(ec.value(), std::system_category());
+    throw rgw::io::Exception(ec.value(), std::system_category());
   }
   return bytes;
 }
@@ -98,7 +98,7 @@ size_t RGWAsioClientIO::read_data(char* const buf, const size_t max)
   return bytes;
 }
 
-int RGWAsioClientIO::complete_request()
+size_t RGWAsioClientIO::complete_request()
 {
   return 0;
 }
index 2c106f957f465d4a6890243ed6018165af7239aa..c451839d3ab666ccf8bd338dfabf943ecd4d2688 100644 (file)
@@ -46,7 +46,7 @@ class RGWAsioClientIO : public rgw::io::RestfulClient {
   ~RGWAsioClientIO();
 
   void init_env(CephContext *cct) override;
-  int complete_request() override;
+  size_t complete_request() override;
   void flush() override;
   size_t send_status(int status, const char *status_name) override;
   size_t send_100_continue() override;
index 2eb74a8400667c8634bc142059f0a54681f215d1..1873a84a4eba1604e9bf5c008be94c514caeb684 100644 (file)
@@ -17,9 +17,9 @@ size_t RGWCivetWeb::write_data(const char *buf, size_t len)
   const int ret = mg_write(conn, buf, len);
   if (ret == 0) {
     /* didn't send anything, error out */
-    throw rgw::io::RestfulClient::Exception(EIO, std::system_category());
+    throw rgw::io::Exception(EIO, std::system_category());
   } else if (ret < 0) {
-    throw rgw::io::RestfulClient::Exception(-ret, std::system_category());
+    throw rgw::io::Exception(-ret, std::system_category());
   }
   return ret;
 }
@@ -36,7 +36,7 @@ size_t RGWCivetWeb::read_data(char *buf, size_t len)
 {
   const int ret = mg_read(conn, buf, len);
   if (ret < 0) {
-    throw rgw::io::RestfulClient::Exception(-ret, std::system_category());
+    throw rgw::io::Exception(-ret, std::system_category());
   }
   return ret;
 }
@@ -45,7 +45,7 @@ void RGWCivetWeb::flush()
 {
 }
 
-int RGWCivetWeb::complete_request()
+size_t RGWCivetWeb::complete_request()
 {
   return 0;
 }
@@ -121,9 +121,9 @@ static inline size_t safe_mg_printf(Args&&... args)
   const int ret = mg_printf(std::forward<Args>(args)...);
   if (ret == 0) {
     /* didn't send anything, error out */
-    throw rgw::io::RestfulClient::Exception(EIO, std::system_category());
+    throw rgw::io::Exception(EIO, std::system_category());
   } else if (ret < 0) {
-    throw rgw::io::RestfulClient::Exception(-ret, std::system_category());
+    throw rgw::io::Exception(-ret, std::system_category());
   }
   return static_cast<size_t>(ret);
 }
index d353a8c152deeab885bd3b9274639cd857229bbb..f3ec6bb7e1480b19ffce5681352acce5c07bd9fc 100644 (file)
@@ -42,7 +42,7 @@ public:
     return write_data(buf, len);
   }
 
-  int complete_request() override;
+  size_t complete_request() override;
 
   void flush() override;
 
index a01a357e1bbe423740bf309294cfc4ca198daad8..da501307838cb588def9b17d040fae54bde28c8a 100644 (file)
@@ -40,7 +40,7 @@ int RGWRestfulIO::recv_body(char *buf, size_t max, bool calculate_hash)
       calc_hash_sha256_update_stream(sha256_hash, buf, sent);
     }
     return sent;
-  } catch (rgw::io::RestfulClient::Exception& e) {
+  } catch (rgw::io::Exception& e) {
     return -e.code().value();
   }
 }
index e7cca88268df03836bd2549ca0c593eb224f74a9..de1b09cb5cd86d16c7985695e08ba34174913aa5 100644 (file)
@@ -19,6 +19,8 @@
 namespace rgw {
 namespace io {
 
+using Exception = std::system_error;
+
 class BasicClient {
 protected:
   virtual void init_env(CephContext *cct) = 0;
@@ -28,7 +30,7 @@ public:
 
   void init(CephContext *cct);
   virtual RGWEnv& get_env() noexcept = 0;
-  virtual int complete_request() = 0;
+  virtual size_t complete_request() = 0;
 }; /* rgw::io::Client */
 
 
@@ -47,8 +49,6 @@ class RestfulClient : public BasicClient {
   template<typename T> friend class DecoratedRestfulClient;
 
 public:
-  typedef std::system_error Exception;
-
   virtual size_t send_status(int status, const char *status_name) = 0;
   virtual size_t send_100_continue() = 0;
 
@@ -170,7 +170,7 @@ public:
     return get_decoratee().get_env();
   }
 
-  int complete_request() override {
+  size_t complete_request() override {
     return get_decoratee().complete_request();
   }
 };
index 5847c5b4c24b49438bb78e0ebd1e900fe17b7c5c..3ffab616b07bf85a0f1b028476adf53e1e0ef3e2 100644 (file)
@@ -135,7 +135,7 @@ public:
   size_t send_chunked_transfer_encoding() override;
   size_t complete_header() override;
   size_t send_body(const char* buf, size_t len) override;
-  int complete_request() override;
+  size_t complete_request() override;
 };
 
 template <typename T>
@@ -177,7 +177,7 @@ size_t BufferingFilter<T>::complete_header()
 }
 
 template <typename T>
-int BufferingFilter<T>::complete_request()
+size_t BufferingFilter<T>::complete_request()
 {
   size_t sent = 0;
 
@@ -251,7 +251,7 @@ public:
     }
   }
 
-  int complete_request() override {
+  size_t complete_request() override {
     size_t sent = 0;
 
     if (chunking_enabled) {
index 54e842d49f30625d5af2c09c39254a09954187fa..173f4539063145d7229a3332a0fb7476c4326916 100644 (file)
@@ -8,7 +8,7 @@ size_t RGWFCGX::write_data(const char* const buf, const size_t len)
 {
   const auto ret = FCGX_PutStr(buf, len, fcgx->out);
   if (ret < 0) {
-    throw rgw::io::RestfulClient::Exception(-ret, std::system_category());
+    throw rgw::io::Exception(-ret, std::system_category());
   }
   return ret;
 }
@@ -17,7 +17,7 @@ size_t RGWFCGX::read_data(char* const buf, const size_t len)
 {
   const auto ret = FCGX_GetStr(buf, len, fcgx->in);
   if (ret < 0) {
-    throw rgw::io::RestfulClient::Exception(-ret, std::system_category());
+    throw rgw::io::Exception(-ret, std::system_category());
   }
   return ret;
 }
index 952bb0a8eb21dbbecc33e4e3ad9f7f1342139c6d..8562c296f69f8b652087b1f17ee06ccce666cfb4 100644 (file)
@@ -46,7 +46,7 @@ public:
     return env;
   }
 
-  int complete_request() override {
+  size_t complete_request() override {
     return 0;
   }
 };
index a730822308b6f4a866c41e70f9a1776d784cbca3..2493260d1384d31a92ca03db3bc1062f925a37a5 100644 (file)
@@ -81,7 +81,7 @@ namespace rgw {
       return env;
     }
 
-    int complete_request() override { /* XXX */
+    size_t complete_request() override { /* XXX */
       return 0;
     };
 
index 451df92b2d21c27af3b7b4a89618a9b537540e19..3c61cf21d79efd63efea2a0647263c60876f774b 100644 (file)
@@ -64,7 +64,7 @@ void RGWLoadGenIO::flush()
 {
 }
 
-int RGWLoadGenIO::complete_request()
+size_t RGWLoadGenIO::complete_request()
 {
   return 0;
 }
index a5faf282309fa648a7ffb55866149137f477e967..dd9e2d8f6afc18f69772c57087b45e1341f25897 100644 (file)
@@ -69,7 +69,7 @@ public:
     return env;
   }
 
-  int complete_request() override;
+  size_t complete_request() override;
 };
 
 #endif
index 3304db6ff1a9d378bbed991a2aee3c5c6ba43df0..08c8ce01e153442eb75dc1bfffd391a3ff7a6af5 100644 (file)
@@ -197,10 +197,13 @@ int process_request(RGWRados* store, RGWREST* rest, RGWRequest* req,
     goto done;
   }
 done:
-  int r = client_io->complete_request();
-  if (r < 0) {
-    dout(0) << "ERROR: client_io->complete_request() returned " << r << dendl;
+  try {
+    client_io->complete_request();
+  } catch (rgw::io::Exception& e) {
+    dout(0) << "ERROR: client_io->complete_request() returned "
+            << e.what() << dendl;
   }
+
   if (should_log) {
     rgw_log_op(store, s, (op ? op->name() : "unknown"), olog);
   }
index dfddc3a29f1b43fb9a8fa27d89b32845386fb50e..d22ee87c4f88753a7fea6cac50cbc60c412897b3 100644 (file)
@@ -281,7 +281,7 @@ static void dump_status(struct req_state *s, int status,
   s->formatter->set_status(status, status_name);
   try {
     RESTFUL_IO(s)->send_status(status, status_name);
-  } catch (rgw::io::RestfulClient::Exception& e) {
+  } catch (rgw::io::Exception& e) {
     ldout(s->cct, 0) << "ERROR: s->cio->send_status() returned err="
                      << e.what() << dendl;
   }
@@ -376,7 +376,7 @@ void dump_header(struct req_state* const s,
 {
   try {
     RESTFUL_IO(s)->send_header(name, val);
-  } catch (rgw::io::RestfulClient::Exception& e) {
+  } catch (rgw::io::Exception& e) {
     ldout(s->cct, 0) << "ERROR: s->cio->send_header() returned err="
                      << e.what() << dendl;
   }
@@ -415,7 +415,7 @@ void dump_content_length(struct req_state* const s, const uint64_t len)
 {
   try {
     RESTFUL_IO(s)->send_content_length(len);
-  } catch (rgw::io::RestfulClient::Exception& e) {
+  } catch (rgw::io::Exception& e) {
     ldout(s->cct, 0) << "ERROR: s->cio->send_content_length() returned err="
                      << e.what() << dendl;
   }
@@ -426,7 +426,7 @@ static void dump_chunked_encoding(struct req_state* const s)
 {
   try {
     RESTFUL_IO(s)->send_chunked_transfer_encoding();
-  } catch (rgw::io::RestfulClient::Exception& e) {
+  } catch (rgw::io::Exception& e) {
     ldout(s->cct, 0) << "ERROR: RESTFUL_IO(s)->send_chunked_transfer_encoding()"
                      << " returned err=" << e.what() << dendl;
   }
@@ -708,7 +708,7 @@ void end_header(struct req_state* s, RGWOp* op, const char *content_type,
 
   try {
     RESTFUL_IO(s)->complete_header();
-  } catch (rgw::io::RestfulClient::Exception& e) {
+  } catch (rgw::io::Exception& e) {
     ldout(s->cct, 0) << "ERROR: RESTFUL_IO(s)->complete_header() returned err="
                     << e.what() << dendl;
   }
@@ -798,7 +798,7 @@ void dump_continue(struct req_state * const s)
 {
   try {
     RESTFUL_IO(s)->send_100_continue();
-  } catch (rgw::io::RestfulClient::Exception& e) {
+  } catch (rgw::io::Exception& e) {
     ldout(s->cct, 0) << "ERROR: RESTFUL_IO(s)->send_100_continue() returned err="
                     << e.what() << dendl;
   }
@@ -834,7 +834,7 @@ int dump_body(struct req_state* const s,
 {
   try {
     return RESTFUL_IO(s)->send_body(buf, len);
-  } catch (rgw::io::RestfulClient::Exception& e) {
+  } catch (rgw::io::Exception& e) {
     return -e.code().value();
   }
 }
@@ -855,7 +855,7 @@ int recv_body(struct req_state* const s,
 {
   try {
     return AWS_AUTHv4_IO(s)->recv_body(buf, max, s->aws4_auth_needs_complete);
-  } catch (rgw::io::RestfulClient::Exception& e) {
+  } catch (rgw::io::Exception& e) {
     return -e.code().value();
   }
 }