Skip to content

Commit

Permalink
Merge pull request #2199 from AntelopeIO/http_max_429to503_32
Browse files Browse the repository at this point in the history
[3.2] change HTTP code on exceeding `http-max-bytes-in-flight-mb` or `http-max-in-flight-requests` to 503
  • Loading branch information
spoonincode authored Feb 5, 2024
2 parents 7eaec71 + a82f152 commit 5b0eba2
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
4 changes: 2 additions & 2 deletions plugins/http_plugin/http_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,9 +250,9 @@ class http_plugin_impl : public std::enable_shared_from_this<http_plugin_impl> {
("max-body-size", bpo::value<uint32_t>()->default_value(my->plugin_state->max_body_size),
"The maximum body size in bytes allowed for incoming RPC requests")
("http-max-bytes-in-flight-mb", bpo::value<int64_t>()->default_value(500),
"Maximum size in megabytes http_plugin should use for processing http requests. -1 for unlimited. 429 error response when exceeded." )
"Maximum size in megabytes http_plugin should use for processing http requests. -1 for unlimited. 503 error response when exceeded." )
("http-max-in-flight-requests", bpo::value<int32_t>()->default_value(-1),
"Maximum number of requests http_plugin should use for processing http requests. 429 error response when exceeded." )
"Maximum number of requests http_plugin should use for processing http requests. 503 error response when exceeded." )
("http-max-response-time-ms", bpo::value<int64_t>()->default_value(30),
"Maximum time for processing a request, -1 for unlimited")
("verbose-http-errors", bpo::bool_switch()->default_value(false),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,13 +202,13 @@ class beast_http_session : public detail::abstract_conn {
virtual bool verify_max_bytes_in_flight() override {
auto bytes_in_flight_size = plugin_state_->bytes_in_flight.load();
if(bytes_in_flight_size > plugin_state_->max_bytes_in_flight) {
fc_dlog(plugin_state_->logger, "429 - too many bytes in flight: ${bytes}", ("bytes", bytes_in_flight_size));
fc_dlog(plugin_state_->logger, "503 - too many bytes in flight: ${bytes}", ("bytes", bytes_in_flight_size));
error_results::error_info ei;
ei.code = static_cast<int64_t>(http::status::too_many_requests);
ei.code = static_cast<int64_t>(http::status::service_unavailable);
ei.name = "Busy";
ei.what = "Too many bytes in flight: " + std::to_string( bytes_in_flight_size );
error_results results{static_cast<uint16_t>(http::status::too_many_requests), "Busy", ei};
send_response( fc::json::to_string( results, fc::time_point::maximum() ), static_cast<unsigned int>(http::status::too_many_requests) );
error_results results{static_cast<uint16_t>(http::status::service_unavailable), "Busy", ei};
send_response( fc::json::to_string( results, fc::time_point::maximum() ), static_cast<unsigned int>(http::status::service_unavailable) );
return false;
}
return true;
Expand All @@ -220,13 +220,13 @@ class beast_http_session : public detail::abstract_conn {

auto requests_in_flight_num = plugin_state_->requests_in_flight.load();
if(requests_in_flight_num > plugin_state_->max_requests_in_flight) {
fc_dlog(plugin_state_->logger, "429 - too many requests in flight: ${requests}", ("requests", requests_in_flight_num));
fc_dlog(plugin_state_->logger, "503 - too many requests in flight: ${requests}", ("requests", requests_in_flight_num));
error_results::error_info ei;
ei.code = static_cast<int64_t>(http::status::too_many_requests);
ei.code = static_cast<int64_t>(http::status::service_unavailable);
ei.name = "Busy";
ei.what = "Too many requests in flight: " + std::to_string( requests_in_flight_num );
error_results results{static_cast<uint16_t>(http::status::too_many_requests), "Busy", ei};
send_response( fc::json::to_string( results, fc::time_point::maximum() ), static_cast<unsigned int>(http::status::too_many_requests) );
error_results results{static_cast<uint16_t>(http::status::service_unavailable), "Busy", ei};
send_response( fc::json::to_string( results, fc::time_point::maximum() ), static_cast<unsigned int>(http::status::service_unavailable) );
return false;
}
return true;
Expand Down

0 comments on commit 5b0eba2

Please sign in to comment.