Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Упоминание Аркадии #7

Closed
wants to merge 125 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
d48b212
Create stable-22-2 branch.
Feb 22, 2022
c138290
22-2: Coordinator readstep subscription support, KIKIMR-13910
snaury Feb 23, 2022
ce558ec
merge from trunk: support of pqv0, remove old read-rules LOGBROKER-7163
alexnick88 Feb 23, 2022
746834c
merge from trunk: fix for tests KIKIMR-14230 MONSUPPORT-599
alexnick88 Feb 23, 2022
a12930f
Remove unnecessary metadata update KIKIMR-9812
alexvru Feb 23, 2022
f329578
22-2: Use separate activities for mediator-related actors, KIKIMR-14419
snaury Feb 23, 2022
0ba9549
KIKIMR-13928: compatibility fix
imakunin Feb 23, 2022
e57c847
fix default schemeshard tablet ids KIKIMR-13998
gridnevvvit Feb 24, 2022
d552a8f
KIKIMR-14189 ColumnShard tiered recompaction (Cherry pick commit r917…
4ertus2 Feb 24, 2022
4531da9
fix fail of follower promotion KIKIMR-14429
adameat Feb 28, 2022
e7de311
Backport PQ fixes from 21-4
Feb 28, 2022
384afaa
[merge to 22-2] Add tests on pqv0/1 counters
c4pQ Mar 1, 2022
5cb5fec
Merge from trunk: r9189705
UgnineSirdis Mar 1, 2022
18379aa
KIKIMR-14436: log error in case of fallback
imakunin Mar 1, 2022
959d0e2
Fix blob leakage KIKIMR-14427
alexvru Mar 1, 2022
4375f37
KIKIMR-14387: YDB_KQP_FORCE_NEW_ENGINE env
imakunin Mar 23, 2022
3e23bef
merge from trunk: r9195099; bring back creating of messagebus proxy
alexnick88 Mar 23, 2022
c8c2d94
KIKIMR-14450: don't fallback on OldEngine in case of UNAVAILABLE or U…
imakunin Mar 23, 2022
99d06da
KIKIMR-14445: fix memory corruption at TUnboxedValue to TCell convertion
imakunin Mar 23, 2022
1856fe1
KIKIMR-14434: provide more debug info on ENSURE error
imakunin Mar 23, 2022
f66997e
Enhance group resolver logic KIKIMR-13568
alexvru Mar 23, 2022
d95570e
Reset ClockSkew on disconnect KIKIMR-14460
alexvru Mar 23, 2022
36ead1a
22-2: Ignore undelivery notifications for TEvConnect after a successf…
snaury Mar 23, 2022
2c02895
KIKIMR-14230 Fix crashes on empty topic names
Mar 23, 2022
9494250
KIKIMR-0000: fix log level
imakunin Mar 23, 2022
0b7a4ac
Fix NW configuration delivery bug KIKIMR-14473
alexvru Mar 23, 2022
335177f
Improve VDisks internal table in BSC monitoring KIKIMR-9812
alexvru Mar 23, 2022
a08f4a1
Fix NodeWarden pipe connect race KIKIMR-13568
alexvru Mar 23, 2022
8b52090
KIKIMR-14488. Merge to 22-2 fix for total_duration.
Mar 23, 2022
7dfc7f2
PR from branch users/spuchin/KIKIMR-14484-2
spuchin Mar 23, 2022
a5a9c73
PR from branch users/alexvru/merge/22-2/KIKIMR-14494
alexvru Mar 23, 2022
77e3978
PR from branch users/imakunin/merge/KIKIMR-14379
imakunin Mar 23, 2022
f5c7261
use KQP instead of driver LOGBROKER-7358
alexnick88 Mar 23, 2022
b1101ba
KIKIMR-14496: drop redundant precompute stage over parameter
imakunin Mar 23, 2022
3e3dca4
KIKIMR-14480: fix crash, that can occurs while swithing KqpForceNewEn…
imakunin Mar 23, 2022
f150c86
22-2: CopyTable + TTL = <3 KIKIMR-14491
CyberROFL Mar 23, 2022
8a3ca10
PR from branch users/eivanov89/KIKIMR-5850-tablet-flat-minor-cleanup
eivanov89 Mar 23, 2022
de5efc9
Fix location issue KIKIMR-14513
alexvru Mar 23, 2022
115cc73
Improve issue message. KIKIMR-13277
dcherednik Mar 23, 2022
1856e41
PR from branch users/eivanov89/KIKIMR-9748-background-compaction-fixe…
eivanov89 Mar 23, 2022
7df716a
Support template for cache file path KIKIMR-14384
alexvru Mar 23, 2022
a9497f0
KIKIMR-14503 control requests count to tx-allocator
Mar 23, 2022
e214a00
22-2: Specify path to failed item YDB-1562
CyberROFL Mar 23, 2022
0714826
22-2: Handle schema change in immediate kqp data transactions, KIKIMR…
snaury Mar 23, 2022
5e5b2d9
22-2: Avoid crashing in tablet resolver on follower update, KIKIMR-14514
snaury Mar 23, 2022
b2df79e
KIKIMR-13409: support int8, int16, uint16 types for query parameters
Mar 23, 2022
248aeb9
KIKIMR-14499: dont precompute literal keys for ReadTable
imakunin Mar 23, 2022
9516725
fix issues in balancing algorithms KIKIMR-11464
gridnevvvit Mar 23, 2022
d5b6282
Allow request without database for static node. KIKIMR-14509
dcherednik Mar 23, 2022
bb3f862
KIKIMR-5850: tablet cleanup and extra comments
eivanov89 Mar 23, 2022
f72364a
KIKIMR-14457: send request directly to executer if TxId is not needed
Mar 23, 2022
e0e3a25
PR from branch users/eivanov89/KIKIMR-9748-background-compaction-fixe…
eivanov89 Mar 23, 2022
303c6c9
YDBOPS-4341 move is on by default
Mar 23, 2022
64115b3
22-2: Check counters in unit-test KIKIMR-14491
CyberROFL Mar 23, 2022
4b41f2e
KIKIMR-14527: dont run exctract predicates on trivial ranges
imakunin Mar 23, 2022
3625b42
KIKIMR-0000: fix comptatible queries count
imakunin Mar 23, 2022
5962f8c
merge to stable-22-2
Mar 23, 2022
177955f
kill write session asap LOGBROKER-7372
alexnick88 Mar 23, 2022
4492b52
PR from branch users/eivanov89/KIKIMR-5850-tablet-flat-cleanup
eivanov89 Mar 23, 2022
920beb8
KIKIMR-14541: validate keys at the execution unit
imakunin Mar 23, 2022
edf489b
forward PQReadSessionsInfoWorkerFactory LOGBROKER-7376
alexnick88 Mar 23, 2022
4932f6b
PR from branch users/qkrorlqr/users/qkrorlqr/NBS-1670-NBS-2891/22-2
qkrorlqr Mar 23, 2022
6afd284
PR from branch users/xenoxeno/merge-to-22-2
adameat Mar 23, 2022
aa0804e
PR from branch users/xenoxeno/merge-KIKIMR-14545
adameat Mar 23, 2022
26ea6d6
KIKIMR-14547: fix memory management
imakunin Mar 23, 2022
9ec86d2
PR from branch users/evgeniy-kozev/merge_to_22
EvgeniyKozev Mar 23, 2022
38cdcf2
reduce number of sensors in dsproxy KIKIMR-9501
Mar 23, 2022
3170e08
merge 22-2: easy forwarding of PQReadSessionsInfoWorkerFactory
BogolyubskiyAlexey Apr 18, 2022
e3662b1
add sensor label KIKIMR-12474
Apr 18, 2022
a082789
[merge to 22-2] Fix VERIFY root cause in YDS GetRecords
c4pQ Apr 18, 2022
a29b2dd
add name_label page parameter for prometheus format KIKIMR-14564
Apr 18, 2022
ce5c543
add setting CheckMoveExpediency KIKIMR-14538
adameat Apr 18, 2022
04fc870
DEPLOY-5331: column-table python sdk (Cherry pick commit r9273695)
4ertus2 Apr 18, 2022
8329eed
KIKIMR-14553: fix column table description in cli (Cherry pick commit…
4ertus2 Apr 18, 2022
8dfd0a0
[kqp] increase lookup interval and introduce new config option KIKIMR…
gridnevvvit Apr 18, 2022
63e875f
PR from branch users/ildar-khisam/KIKIMR-14475-release
Apr 18, 2022
7b1f3c9
fix BS_QUEUE log messages KIKIMR-9989
Apr 18, 2022
ab0f872
KIKIMR-14582: provide more info on fail
imakunin Apr 18, 2022
318ac23
[merge to 22-2] Fix typos in yds permissions
c4pQ Apr 18, 2022
7911fa0
22-2: Validate cell sizes for columns, KIKIMR-14609
snaury Apr 18, 2022
271f3df
[merge to 22-2] Add list of non chargeable users for YDS
c4pQ Apr 18, 2022
b3825bd
PR from branch users/spuchin/KIKIMR-14325
spuchin Apr 18, 2022
12328e5
22-2: Batch processing of sending notifications upon commit KIKIMR-14597
CyberROFL Apr 18, 2022
7fadb6e
KIKIMR-14596: dont precompute parameter
imakunin Apr 18, 2022
543e252
PR from branch users/yegorskii/merge-22-2
Apr 18, 2022
278de3e
make available size filter exclusive KIKIMR-14624
adameat Apr 18, 2022
772bd26
PR from branch users/eivanov89/KIKIMR-9748-compaction-fixes-22-2
eivanov89 Apr 18, 2022
7bd7524
KIKIMR-9748: safer default background compaction config
eivanov89 Apr 18, 2022
1670819
KIKIMR-14630: get rid of separate phase for parameters repack for sql…
imakunin Apr 18, 2022
9da6203
dirty workaround for test KIKIMR-14624
adameat Apr 18, 2022
9fc8a71
KIKIMR-14636 split after move
Apr 18, 2022
eb2ade2
Avoid compute results tx for simple scalar expressions + more efficie…
spuchin Apr 18, 2022
10b7298
[NBS] merge to stable 22-2
Apr 18, 2022
f726434
KIKIMR-14636 write more data in order to trigger split
Apr 18, 2022
df455b9
[merge to stable-22-2] Fix a segfault in debug mode when the allocate…
Apr 18, 2022
588fc4b
merge: enable logs in mirrorer and some fixes
BogolyubskiyAlexey Apr 18, 2022
86304e3
KIKIMR-14565: fix CSV load with --header option in cli (Cherry pick c…
4ertus2 Apr 18, 2022
9ada39f
22-2: Snapshot isolation with prioritized reads, KIKIMR-13910
snaury Apr 18, 2022
4c8564f
added embedded ui built from github repo to a stable-22 YDB-1501
ydbdev Apr 18, 2022
08cfedb
Better snapshot handling in defrag code KIKIMR-14651
alexvru Apr 18, 2022
d76a971
22-2: Prepare to disallow downgrades below 22-2-20 in the future, KIK…
snaury Apr 18, 2022
f36b0de
KIKIMR-14632 fix split/merge shards registration at reboots
Apr 18, 2022
71cda95
bugfixes in pqlib YC-1022
alexnick88 Apr 18, 2022
0ac452f
22-2: Drop index info at main table upon cancellation KIKIMR-14664
CyberROFL Apr 18, 2022
371f131
22-2: Fix unprotected read commit flag check, KIKIMR-13910
snaury Apr 18, 2022
36b7a2c
remove usage scope validations for tenant and node type KIKIMR-14276
gridnevvvit Apr 18, 2022
556795d
support of http kinesis proxy inside ydb KIKIMR-14665 KIKIMR-14218
alexnick88 Apr 18, 2022
ca2df77
correct kinesis error codes in datastreams
alexnick88 Apr 18, 2022
8ac7e09
22-2: Reduce queue_restore to 2 threads by default, KIKIMR-14692
snaury Apr 18, 2022
92cbd33
fix relations
alexnick88 Apr 18, 2022
963d8da
fixing storage and nodes handlers YDB-1595
adameat Apr 18, 2022
d0c255e
PR from branch users/xenoxeno/merge-viewer-22-2
adameat Apr 18, 2022
e041f46
merge 22-2: lb mirrorer: additional wakeup reader every 5sec
BogolyubskiyAlexey Apr 18, 2022
bc25b67
merge from trunk: r9340745; Fix race of collecting garbage in KV tabl…
kruall Apr 18, 2022
ba954a5
refactor read sessions actor in pqv0
alexnick88 Apr 18, 2022
86aefe3
22-2: Check RejectProbability, store data along with state KIKIMR-146…
CyberROFL Apr 18, 2022
3b63569
do not finish restart on reaching boot inflight KIKIMR-14723
adameat Apr 18, 2022
9cbd7da
22-2: Request additional data, buffer expansion, improved logging KIK…
CyberROFL Apr 18, 2022
32a2b16
support per database grpc proxy counters KIKIMR-13269
Apr 18, 2022
07f5097
22-2: Fix incorrectly renamed counters, KIKIMR-14724
snaury Apr 18, 2022
1bc965c
reverse order in operation log; added page for one log record KIKIMR-…
Apr 18, 2022
fd2f07b
KIKIMR-14665 add new config id; fix blocking TDatastreamsClient const…
alexnick88 Apr 18, 2022
1f95c28
fix sensor names in vdisks KIKIMR-14635
Apr 18, 2022
66efb96
22-2: Borrowed storage pools KIKIMR-14506
CyberROFL Apr 18, 2022
e9924b0
[YQL-8804] Fix top UDF on duplicate keys
spuchin Apr 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
7 changes: 5 additions & 2 deletions library/cpp/actors/core/interconnect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ namespace NActors {
return res;
}

void TNodeLocation::Serialize(NActorsInterconnect::TNodeLocation *pb) const {
void TNodeLocation::Serialize(NActorsInterconnect::TNodeLocation *pb, bool compatibleWithOlderVersions) const {
const NProtoBuf::Descriptor *descriptor = NActorsInterconnect::TNodeLocation::descriptor();
const NProtoBuf::Reflection *reflection = pb->GetReflection();
NProtoBuf::UnknownFieldSet *unknown = pb->mutable_unknown_fields();
Expand All @@ -117,11 +117,14 @@ namespace NActors {
unknown->AddLengthDelimited(key)->assign(value);
}
}
if (compatibleWithOlderVersions) {
GetLegacyValue().Serialize(pb);
}
}

TString TNodeLocation::GetSerializedLocation() const {
NActorsInterconnect::TNodeLocation pb;
Serialize(&pb);
Serialize(&pb, false);
TString s;
const bool success = pb.SerializeToString(&s);
Y_VERIFY(success);
Expand Down
3 changes: 2 additions & 1 deletion library/cpp/actors/core/interconnect.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ namespace NActors {
TNodeLocation& operator =(const TNodeLocation&) = default;
TNodeLocation& operator =(TNodeLocation&&) = default;

void Serialize(NActorsInterconnect::TNodeLocation *pb) const;
// compatibleWithOlderVersions should be set to true when this protobuf is possibly going to be delivered to 21-4
void Serialize(NActorsInterconnect::TNodeLocation *pb, bool compatibleWithOlderVersions) const;
TString GetSerializedLocation() const;

TString GetDataCenterId() const { return ToStringUpTo(TKeys::DataCenter); }
Expand Down
16 changes: 16 additions & 0 deletions library/cpp/actors/core/monotonic_provider.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#include "monotonic_provider.h"

namespace NActors {

class TDefaultMonotonicTimeProvider : public IMonotonicTimeProvider {
public:
TMonotonic Now() override {
return TMonotonic::Now();
}
};

TIntrusivePtr<IMonotonicTimeProvider> CreateDefaultMonotonicTimeProvider() {
return TIntrusivePtr<IMonotonicTimeProvider>(new TDefaultMonotonicTimeProvider);
}

} // namespace NActors
14 changes: 14 additions & 0 deletions library/cpp/actors/core/monotonic_provider.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#pragma once

#include "monotonic.h"

namespace NActors {

class IMonotonicTimeProvider : public TThrRefBase {
public:
virtual TMonotonic Now() = 0;
};

TIntrusivePtr<IMonotonicTimeProvider> CreateDefaultMonotonicTimeProvider();

} // namespace NActors
51 changes: 50 additions & 1 deletion library/cpp/actors/core/process_stats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,6 @@ namespace {
NMonitoring::TDynamicCounters::TCounterPtr SystemUptimeSeconds;
};


class TRegistryCollector: public TProcStatCollectingActor<TRegistryCollector> {
using TBase = TProcStatCollectingActor<TRegistryCollector>;
public:
Expand Down Expand Up @@ -291,6 +290,52 @@ namespace {
NMonitoring::TIntGauge* NumThreads;
NMonitoring::TIntGauge* SystemUptimeSeconds;
};

class TRegistryCollectorShared: public TProcStatCollectingActor<TRegistryCollectorShared> {
using TBase = TProcStatCollectingActor<TRegistryCollectorShared>;
public:
TRegistryCollectorShared(TDuration interval, std::weak_ptr<NMonitoring::TMetricRegistry> registry)
: TBase{interval}
, Registry(std::move(registry))
{
}

void UpdateCounters(const TProcStat& procStat) {
std::shared_ptr<NMonitoring::TMetricRegistry> registry = Registry.lock();
if (registry) {
registry->IntGauge({{"sensor", "process.VmSize"}})->Set(procStat.Vsize);
registry->IntGauge({{"sensor", "process.AnonRssSize"}})->Set(procStat.AnonRss);
registry->IntGauge({{"sensor", "process.FileRssSize"}})->Set(procStat.FileRss);
registry->IntGauge({{"sensor", "process.CGroupMemLimit"}})->Set(procStat.CGroupMemLim);
registry->IntGauge({{"sensor", "process.UptimeSeconds"}})->Set(procStat.Uptime.Seconds());
registry->IntGauge({{"sensor", "process.NumThreads"}})->Set(procStat.NumThreads);
registry->IntGauge({{"sensor", "system.UptimeSeconds"}})->Set(procStat.SystemUptime.Seconds());

// it is ok here to reset and add metric value, because mutation
// is performed in siglethreaded context

NMonitoring::TRate* userTime = registry->Rate({{"sensor", "process.UserTime"}});
NMonitoring::TRate* sysTime = registry->Rate({{"sensor", "process.SystemTime"}});
NMonitoring::TRate* minorPageFaults = registry->Rate({{"sensor", "process.MinorPageFaults"}});
NMonitoring::TRate* majorPageFaults = registry->Rate({{"sensor", "process.MajorPageFaults"}});

userTime->Reset();
userTime->Add(procStat.Utime);

sysTime->Reset();
sysTime->Add(procStat.Stime);

minorPageFaults->Reset();
minorPageFaults->Add(procStat.MinFlt);

majorPageFaults->Reset();
majorPageFaults->Add(procStat.MajFlt);
}
}

private:
std::weak_ptr<NMonitoring::TMetricRegistry> Registry;
};
} // namespace

IActor* CreateProcStatCollector(ui32 intervalSec, NMonitoring::TDynamicCounterPtr counters) {
Expand All @@ -300,4 +345,8 @@ namespace {
IActor* CreateProcStatCollector(TDuration interval, NMonitoring::TMetricRegistry& registry) {
return new TRegistryCollector(interval, registry);
}

IActor* CreateProcStatCollector(TDuration interval, std::weak_ptr<NMonitoring::TMetricRegistry> registry) {
return new TRegistryCollectorShared(interval, std::move(registry));
}
}
1 change: 1 addition & 0 deletions library/cpp/actors/core/process_stats.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,5 @@ namespace NActors {

IActor* CreateProcStatCollector(ui32 intervalSec, NMonitoring::TDynamicCounterPtr counters);
IActor* CreateProcStatCollector(TDuration interval, NMonitoring::TMetricRegistry& registry);
IActor* CreateProcStatCollector(TDuration interval, std::weak_ptr<NMonitoring::TMetricRegistry> registry);
}
2 changes: 2 additions & 0 deletions library/cpp/actors/core/ya.make
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ SRCS(
mon_stats.h
monotonic.cpp
monotonic.h
monotonic_provider.cpp
monotonic_provider.h
worker_context.cpp
worker_context.h
probes.cpp
Expand Down
Empty file.
62 changes: 34 additions & 28 deletions library/cpp/actors/http/http_proxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ class THttpProxy : public NActors::TActorBootstrapped<THttpProxy>, public THttpC
Become(&THttpProxy::StateWork);
}

THttpProxy(NMonitoring::TMetricRegistry& sensors)
: Sensors(sensors)
THttpProxy(std::weak_ptr<NMonitoring::TMetricRegistry> registry)
: Registry(std::move(registry))
{}

protected:
Expand Down Expand Up @@ -175,29 +175,35 @@ class THttpProxy : public NActors::TActorBootstrapped<THttpProxy>, public THttpC
const static TString urlNotFound = "not-found";
const TString& url = (sensors.Status == "404" ? urlNotFound : sensors.Url);

Sensors.Rate({
{"sensor", "count"},
{"direction", sensors.Direction},
{"peer", sensors.Host},
{"url", url},
{"status", sensors.Status}
})->Inc();
Sensors.HistogramRate({
{"sensor", "time_us"},
{"direction", sensors.Direction},
{"peer", sensors.Host},
{"url", url},
{"status", sensors.Status}
},
NMonitoring::ExplicitHistogram({1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 30000, 60000}))->Record(sensors.Time.MicroSeconds());
Sensors.HistogramRate({
{"sensor", "time_ms"},
{"direction", sensors.Direction},
{"peer", sensors.Host},
{"url", url},
{"status", sensors.Status}
},
NMonitoring::ExplicitHistogram({1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 30000, 60000}))->Record(sensors.Time.MilliSeconds());
std::shared_ptr<NMonitoring::TMetricRegistry> registry = Registry.lock();
if (registry) {
registry->Rate(
{
{"sensor", "count"},
{"direction", sensors.Direction},
{"peer", sensors.Host},
{"url", url},
{"status", sensors.Status}
})->Inc();
registry->HistogramRate(
{
{"sensor", "time_us"},
{"direction", sensors.Direction},
{"peer", sensors.Host},
{"url", url},
{"status", sensors.Status}
},
NMonitoring::ExplicitHistogram({1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 30000, 60000}))->Record(sensors.Time.MicroSeconds());
registry->HistogramRate(
{
{"sensor", "time_ms"},
{"direction", sensors.Direction},
{"peer", sensors.Host},
{"url", url},
{"status", sensors.Status}
},
NMonitoring::ExplicitHistogram({1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 30000, 60000}))->Record(sensors.Time.MilliSeconds());
}
}

void Handle(NActors::TEvents::TEvPoison::TPtr, const NActors::TActorContext&) {
Expand All @@ -217,7 +223,7 @@ class THttpProxy : public NActors::TActorBootstrapped<THttpProxy>, public THttpC
THashMap<TString, THostEntry> Hosts;
THashMap<TString, TActorId> Handlers;
THashSet<TActorId> Connections; // outgoing
NMonitoring::TMetricRegistry& Sensors;
std::weak_ptr<NMonitoring::TMetricRegistry> Registry;
};

TEvHttpProxy::TEvReportSensors* BuildOutgoingRequestSensors(const THttpOutgoingRequestPtr& request, const THttpIncomingResponsePtr& response) {
Expand All @@ -240,8 +246,8 @@ TEvHttpProxy::TEvReportSensors* BuildIncomingRequestSensors(const THttpIncomingR
);
}

NActors::IActor* CreateHttpProxy(NMonitoring::TMetricRegistry& sensors) {
return new THttpProxy(sensors);
NActors::IActor* CreateHttpProxy(std::weak_ptr<NMonitoring::TMetricRegistry> registry) {
return new THttpProxy(std::move(registry));
}

bool IsIPv6(const TString& host) {
Expand Down
2 changes: 1 addition & 1 deletion library/cpp/actors/http/http_proxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ struct TEndpointInfo {
TSslHelpers::TSslHolder<SSL_CTX> SecureContext;
};

NActors::IActor* CreateHttpProxy(NMonitoring::TMetricRegistry& sensors);
NActors::IActor* CreateHttpProxy(std::weak_ptr<NMonitoring::TMetricRegistry> registry = NMonitoring::TMetricRegistry::SharedInstance());
NActors::IActor* CreateHttpAcceptorActor(const TActorId& owner, const TActorId& poller);
NActors::IActor* CreateOutgoingConnectionActor(const TActorId& owner, const TString& host, bool secure, const TActorId& poller);
NActors::IActor* CreateIncomingConnectionActor(
Expand Down
9 changes: 3 additions & 6 deletions library/cpp/actors/http/http_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -180,9 +180,8 @@ Y_UNIT_TEST_SUITE(HttpProxy) {
TIpPort port = portManager.GetTcpPort();
TAutoPtr<NActors::IEventHandle> handle;
actorSystem.Initialize();
NMonitoring::TMetricRegistry sensors;

NActors::IActor* proxy = NHttp::CreateHttpProxy(sensors);
NActors::IActor* proxy = NHttp::CreateHttpProxy();
NActors::TActorId proxyId = actorSystem.Register(proxy);
actorSystem.Send(new NActors::IEventHandle(proxyId, TActorId(), new NHttp::TEvHttpProxy::TEvAddListeningPort(port)), 0, true);
actorSystem.DispatchEvents();
Expand Down Expand Up @@ -213,7 +212,6 @@ Y_UNIT_TEST_SUITE(HttpProxy) {
TIpPort port = portManager.GetTcpPort();
TAutoPtr<NActors::IEventHandle> handle;
actorSystem.Initialize();
NMonitoring::TMetricRegistry sensors;

TString certificateContent = R"___(-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCzRZjodO7Aqe1w
Expand Down Expand Up @@ -272,7 +270,7 @@ CRA/5XcX13GJwHHj6LCoc3sL7mt8qV9HKY2AOZ88mpObzISZxgPpdKCfjsrdm63V

certificateFile.Write(certificateContent.data(), certificateContent.size());

NActors::IActor* proxy = NHttp::CreateHttpProxy(sensors);
NActors::IActor* proxy = NHttp::CreateHttpProxy();
NActors::TActorId proxyId = actorSystem.Register(proxy);

THolder<NHttp::TEvHttpProxy::TEvAddListeningPort> add = MakeHolder<NHttp::TEvHttpProxy::TEvAddListeningPort>(port);
Expand Down Expand Up @@ -332,9 +330,8 @@ CRA/5XcX13GJwHHj6LCoc3sL7mt8qV9HKY2AOZ88mpObzISZxgPpdKCfjsrdm63V
TIpPort port = portManager.GetTcpPort();
TAutoPtr<NActors::IEventHandle> handle;
actorSystem.Initialize();
NMonitoring::TMetricRegistry sensors;

NActors::IActor* proxy = NHttp::CreateHttpProxy(sensors);
NActors::IActor* proxy = NHttp::CreateHttpProxy();
NActors::TActorId proxyId = actorSystem.Register(proxy);
actorSystem.Send(new NActors::IEventHandle(proxyId, TActorId(), new NHttp::TEvHttpProxy::TEvAddListeningPort(port)), 0, true);
actorSystem.DispatchEvents();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,11 @@ namespace NActors {
Socket.Reset();
}

void TInputSessionTCP::PassAway() {
Metrics->SetClockSkewMicrosec(0);
TActorBootstrapped::PassAway();
}

void TInputSessionTCP::HandleCheckDeadPeer() {
const TInstant now = TActivationContext::Now();
if (now >= LastReceiveTimestamp + DeadPeerTimeout) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ namespace NActors {

void ReestablishConnection(TDisconnectReason reason);
void DestroySession(TDisconnectReason reason);
void PassAway() override;

TDeque<TIntrusivePtr<TRopeAlignedBuffer>> Buffers;

Expand Down
26 changes: 26 additions & 0 deletions library/cpp/actors/testlib/test_runtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,20 @@ namespace NActors {
TTestActorRuntimeBase& Runtime;
};

class TTestActorRuntimeBase::TMonotonicTimeProvider : public IMonotonicTimeProvider {
public:
TMonotonicTimeProvider(TTestActorRuntimeBase& runtime)
: Runtime(runtime)
{ }

TMonotonic Now() override {
return Runtime.GetCurrentMonotonicTime();
}

private:
TTestActorRuntimeBase& Runtime;
};

class TTestActorRuntimeBase::TSchedulerThreadStub : public ISchedulerThread {
public:
TSchedulerThreadStub(TTestActorRuntimeBase* runtime, TTestActorRuntimeBase::TNodeDataBase* node)
Expand Down Expand Up @@ -470,6 +484,7 @@ namespace NActors {
, NeedMonitoring(false)
, RandomProvider(CreateDeterministicRandomProvider(DefaultRandomSeed))
, TimeProvider(new TTimeProvider(*this))
, MonotonicTimeProvider(new TMonotonicTimeProvider(*this))
, ShouldContinue()
, CurrentTimestamp(0)
, DispatchTimeout(DEFAULT_DISPATCH_TIMEOUT)
Expand Down Expand Up @@ -797,6 +812,12 @@ namespace NActors {
return TInstant::MicroSeconds(CurrentTimestamp);
}

TMonotonic TTestActorRuntimeBase::GetCurrentMonotonicTime() const {
TGuard<TMutex> guard(Mutex);
Y_VERIFY(!UseRealThreads);
return TMonotonic::MicroSeconds(CurrentTimestamp);
}

void TTestActorRuntimeBase::UpdateCurrentTime(TInstant newTime) {
static int counter = 0;
++counter;
Expand All @@ -823,6 +844,11 @@ namespace NActors {
return TimeProvider;
}

TIntrusivePtr<IMonotonicTimeProvider> TTestActorRuntimeBase::GetMonotonicTimeProvider() {
Y_VERIFY(!UseRealThreads);
return MonotonicTimeProvider;
}

ui32 TTestActorRuntimeBase::GetNodeId(ui32 index) const {
Y_VERIFY(index < NodeCount);
return FirstNodeId + index;
Expand Down
5 changes: 5 additions & 0 deletions library/cpp/actors/testlib/test_runtime.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <library/cpp/actors/core/events.h>
#include <library/cpp/actors/core/executor_thread.h>
#include <library/cpp/actors/core/mailbox.h>
#include <library/cpp/actors/core/monotonic_provider.h>
#include <library/cpp/actors/util/should_continue.h>
#include <library/cpp/actors/interconnect/poller_tcp.h>
#include <library/cpp/actors/interconnect/mock/ic_mock.h>
Expand Down Expand Up @@ -188,6 +189,7 @@ namespace NActors {
class TSchedulerThreadStub;
class TExecutorPoolStub;
class TTimeProvider;
class TMonotonicTimeProvider;

enum class EEventAction {
PROCESS,
Expand Down Expand Up @@ -229,7 +231,9 @@ namespace NActors {
void SetLogBackend(const TAutoPtr<TLogBackend> logBackend);
void SetLogPriority(NActors::NLog::EComponent component, NActors::NLog::EPriority priority);
TIntrusivePtr<ITimeProvider> GetTimeProvider();
TIntrusivePtr<IMonotonicTimeProvider> GetMonotonicTimeProvider();
TInstant GetCurrentTime() const;
TMonotonic GetCurrentMonotonicTime() const;
void UpdateCurrentTime(TInstant newTime);
void AdvanceCurrentTime(TDuration duration);
void AddLocalService(const TActorId& actorId, const TActorSetupCmd& cmd, ui32 nodeIndex = 0);
Expand Down Expand Up @@ -534,6 +538,7 @@ namespace NActors {

TIntrusivePtr<IRandomProvider> RandomProvider;
TIntrusivePtr<ITimeProvider> TimeProvider;
TIntrusivePtr<IMonotonicTimeProvider> MonotonicTimeProvider;

protected:
struct TNodeDataBase: public TThrRefBase {
Expand Down
Loading