Skip to content

Commit

Permalink
YT-22072: Drop only heavy request during memory overcommit
Browse files Browse the repository at this point in the history
* Changelog entry

Type: fix

Component: http-proxy

Drop only heavy request during memory overcommit.
commit_hash:9ce1601d749f397b773f9e5daba45f7ae33ec26b
  • Loading branch information
nadya002 committed Oct 16, 2024
1 parent 529a340 commit 1beda4f
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 38 deletions.
28 changes: 2 additions & 26 deletions yt/yt/core/http/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include <yt/yt/core/concurrency/thread_pool_poller.h>

#include <yt/yt/core/misc/finally.h>
#include <yt/yt/core/misc/memory_usage_tracker.h>
#include <yt/yt/core/misc/public.h>

#include <yt/yt/core/ytree/convert.h>
Expand Down Expand Up @@ -63,15 +62,13 @@ class TServer
IPollerPtr poller,
IPollerPtr acceptor,
IInvokerPtr invoker,
IMemoryUsageTrackerPtr memoryUsageTracker,
IRequestPathMatcherPtr requestPathMatcher,
bool ownPoller = false)
: Config_(std::move(config))
, Listener_(std::move(listener))
, Poller_(std::move(poller))
, Acceptor_(std::move(acceptor))
, Invoker_(std::move(invoker))
, MemoryUsageTracker_(std::move(memoryUsageTracker))
, OwnPoller_(ownPoller)
, RequestPathMatcher_(std::move(requestPathMatcher))
{ }
Expand Down Expand Up @@ -126,7 +123,6 @@ class TServer
const IPollerPtr Poller_;
const IPollerPtr Acceptor_;
const IInvokerPtr Invoker_;
const IMemoryUsageTrackerPtr MemoryUsageTracker_;
const bool OwnPoller_ = false;

IRequestPathMatcherPtr RequestPathMatcher_;
Expand Down Expand Up @@ -224,15 +220,6 @@ class TServer

SetRequestId(response, request->GetRequestId());

if (MemoryUsageTracker_ && MemoryUsageTracker_->IsExceeded()) {
// We use Unavailable code here, as it is already retryable in all clients.
THROW_ERROR_EXCEPTION(
NRpc::EErrorCode::Unavailable,
"Request is dropped due to high memory pressure")
<< TErrorAttribute("total_memory_limit", MemoryUsageTracker_->GetLimit())
<< TErrorAttribute("memory_usage", MemoryUsageTracker_->GetUsed());
}

handler->HandleRequest(request, response);

NTracing::FlushCurrentTraceContextElapsedTime();
Expand Down Expand Up @@ -394,7 +381,6 @@ IServerPtr CreateServer(
IPollerPtr poller,
IPollerPtr acceptor,
IInvokerPtr invoker,
IMemoryUsageTrackerPtr memoryUsageTracker,
bool ownPoller)
{
auto handlers = New<TRequestPathMatcher>();
Expand All @@ -404,7 +390,6 @@ IServerPtr CreateServer(
std::move(poller),
std::move(acceptor),
std::move(invoker),
std::move(memoryUsageTracker),
std::move(handlers),
ownPoller);
}
Expand All @@ -414,7 +399,6 @@ IServerPtr CreateServer(
IPollerPtr poller,
IPollerPtr acceptor,
IInvokerPtr invoker,
IMemoryUsageTrackerPtr memoryUsageTracker,
bool ownPoller)
{
auto address = TNetworkAddress::CreateIPv6Any(config->Port);
Expand All @@ -427,7 +411,6 @@ IServerPtr CreateServer(
std::move(poller),
std::move(acceptor),
std::move(invoker),
std::move(memoryUsageTracker),
ownPoller);
} catch (const std::exception& ex) {
if (i + 1 == config->BindRetryCount) {
Expand Down Expand Up @@ -457,16 +440,14 @@ IServerPtr CreateServer(
std::move(poller),
std::move(acceptor),
std::move(invoker),
/*memoryUsageTracker*/ GetNullMemoryUsageTracker(),
/*ownPoller*/ false);
}

IServerPtr CreateServer(
TServerConfigPtr config,
IListenerPtr listener,
IPollerPtr poller,
IPollerPtr acceptor,
IMemoryUsageTrackerPtr memoryUsageTracker)
IPollerPtr acceptor)
{
auto invoker = poller->GetInvoker();
return CreateServer(
Expand All @@ -475,23 +456,20 @@ IServerPtr CreateServer(
std::move(poller),
std::move(acceptor),
std::move(invoker),
std::move(memoryUsageTracker),
/*ownPoller*/ false);
}

IServerPtr CreateServer(
TServerConfigPtr config,
IPollerPtr poller,
IPollerPtr acceptor,
IMemoryUsageTrackerPtr memoryUsageTracker)
IPollerPtr acceptor)
{
auto invoker = poller->GetInvoker();
return CreateServer(
std::move(config),
std::move(poller),
std::move(acceptor),
std::move(invoker),
std::move(memoryUsageTracker),
/*ownPoller*/ false);
}

Expand Down Expand Up @@ -521,7 +499,6 @@ IServerPtr CreateServer(TServerConfigPtr config, int pollerThreadCount)
std::move(poller),
std::move(acceptor),
std::move(invoker),
/*memoryUsageTracker*/ GetNullMemoryUsageTracker(),
/*ownPoller*/ true);
}

Expand All @@ -536,7 +513,6 @@ IServerPtr CreateServer(
std::move(poller),
std::move(acceptor),
std::move(invoker),
/*memoryUsageTracker*/ GetNullMemoryUsageTracker(),
/*ownPoller*/ false);
}

Expand Down
6 changes: 2 additions & 4 deletions yt/yt/core/http/server.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,14 @@ IServerPtr CreateServer(
TServerConfigPtr config,
NNet::IListenerPtr listener,
NConcurrency::IPollerPtr poller,
NConcurrency::IPollerPtr acceptor,
IMemoryUsageTrackerPtr memoryTracker = GetNullMemoryUsageTracker());
NConcurrency::IPollerPtr acceptor);
IServerPtr CreateServer(
TServerConfigPtr config,
NConcurrency::IPollerPtr poller);
IServerPtr CreateServer(
TServerConfigPtr config,
NConcurrency::IPollerPtr poller,
NConcurrency::IPollerPtr acceptor,
IMemoryUsageTrackerPtr memoryTracker = GetNullMemoryUsageTracker());
NConcurrency::IPollerPtr acceptor);
IServerPtr CreateServer(
int port,
NConcurrency::IPollerPtr poller);
Expand Down
6 changes: 2 additions & 4 deletions yt/yt/core/https/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,7 @@ IServerPtr CreateServer(
const TServerConfigPtr& config,
const IPollerPtr& poller,
const IPollerPtr& acceptor,
const IInvokerPtr& controlInvoker,
const IMemoryUsageTrackerPtr& memoryTracker)
const IInvokerPtr& controlInvoker)
{
auto sslContext = New<TSslContext>();
ApplySslConfig(sslContext, config->Credentials);
Expand Down Expand Up @@ -165,8 +164,7 @@ IServerPtr CreateServer(
configCopy,
tlsListener,
poller,
acceptor,
memoryTracker);
acceptor);

return New<TServer>(std::move(httpServer), std::move(certificateUpdater));
}
Expand Down
5 changes: 1 addition & 4 deletions yt/yt/core/https/server.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@

#include <yt/yt/core/http/public.h>

#include <yt/yt/core/misc/memory_usage_tracker.h>

namespace NYT::NHttps {

////////////////////////////////////////////////////////////////////////////////
Expand All @@ -28,8 +26,7 @@ NHttp::IServerPtr CreateServer(
const TServerConfigPtr& config,
const NConcurrency::IPollerPtr& poller,
const NConcurrency::IPollerPtr& acceptor,
const IInvokerPtr& controlInvoker,
const IMemoryUsageTrackerPtr& memoryTracker = GetNullMemoryUsageTracker());
const IInvokerPtr& controlInvoker);

////////////////////////////////////////////////////////////////////////////////

Expand Down

0 comments on commit 1beda4f

Please sign in to comment.