diff options
author | Alexander Smirnov <alex@ydb.tech> | 2025-02-24 18:38:30 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2025-02-24 18:38:30 +0000 |
commit | a674a8f6c0a31e5a5c3b28333d533ae31797ecaa (patch) | |
tree | d0743df9a014a294168c54e417a4565186a904ca /yt | |
parent | 4b706240f28681a5580e79e1b333a695a628f719 (diff) | |
parent | 528c4caecb8037bbb191b114717af75bc26dbbea (diff) | |
download | ydb-a674a8f6c0a31e5a5c3b28333d533ae31797ecaa.tar.gz |
Merge pull request #14964 from ydb-platform/merge-libs-250224-1527
Diffstat (limited to 'yt')
-rw-r--r-- | yt/yql/providers/yt/codec/yt_codec_io.cpp | 3 | ||||
-rw-r--r-- | yt/yt/client/api/distributed_table_session.cpp | 3 | ||||
-rw-r--r-- | yt/yt/client/driver/distributed_table_commands.cpp | 2 | ||||
-rw-r--r-- | yt/yt/client/signature/generator.cpp | 4 | ||||
-rw-r--r-- | yt/yt/client/signature/generator.h | 2 | ||||
-rw-r--r-- | yt/yt/client/signature/signature.cpp | 12 | ||||
-rw-r--r-- | yt/yt/client/signature/signature.h | 4 | ||||
-rw-r--r-- | yt/yt/client/signature/unittests/dummy_ut.cpp | 4 | ||||
-rw-r--r-- | yt/yt/client/signature/unittests/signature_ut.cpp | 2 | ||||
-rw-r--r-- | yt/yt/core/misc/ema_counter-inl.h | 5 | ||||
-rw-r--r-- | yt/yt/core/misc/unittests/ema_counter_ut.cpp | 4 |
11 files changed, 27 insertions, 18 deletions
diff --git a/yt/yql/providers/yt/codec/yt_codec_io.cpp b/yt/yql/providers/yt/codec/yt_codec_io.cpp index 459602d9cf..0bc03184aa 100644 --- a/yt/yql/providers/yt/codec/yt_codec_io.cpp +++ b/yt/yql/providers/yt/codec/yt_codec_io.cpp @@ -1752,6 +1752,9 @@ void TMkqlReaderImpl::Next() { } catch (const TYqlPanic& e) { ythrow TYqlPanic() << "Failed to read row, table index: " << Decoder_->TableIndex_ << ", row index: " << (Decoder_->RowIndex_.Defined() ? ToString(*Decoder_->RowIndex_) : "?") << "\n" << e.what(); + } catch (const TMemoryLimitExceededException&) { + ythrow TYqlPanic() << "Failed to read row, table index: " << Decoder_->TableIndex_ << ", row index: " << + (Decoder_->RowIndex_.Defined() ? ToString(*Decoder_->RowIndex_) : "?") << ". Memory limit exceeded in MKQL runtime"; } catch (const TTimeoutException&) { throw; } catch (const yexception& e) { diff --git a/yt/yt/client/api/distributed_table_session.cpp b/yt/yt/client/api/distributed_table_session.cpp index 555c5f6812..24e1a4a741 100644 --- a/yt/yt/client/api/distributed_table_session.cpp +++ b/yt/yt/client/api/distributed_table_session.cpp @@ -15,6 +15,7 @@ using namespace NTransactionClient; using namespace NYTree; using namespace NCypressClient; using namespace NChunkClient; +using namespace NYson; //////////////////////////////////////////////////////////////////////////////// @@ -124,7 +125,7 @@ TFuture<void> PingDistributedWriteSession( const TSignedDistributedWriteSessionPtr& session, const IClientPtr& client) { - auto concreteSession = ConvertTo<TDistributedWriteSession>(session.Underlying()->Payload()); + auto concreteSession = ConvertTo<TDistributedWriteSession>(TYsonStringBuf(session.Underlying()->Payload())); // NB(arkady-e1ppa): AutoAbort = false by default. auto mainTx = client->AttachTransaction(concreteSession.MainTransactionId); diff --git a/yt/yt/client/driver/distributed_table_commands.cpp b/yt/yt/client/driver/distributed_table_commands.cpp index 80812a03af..4942408318 100644 --- a/yt/yt/client/driver/distributed_table_commands.cpp +++ b/yt/yt/client/driver/distributed_table_commands.cpp @@ -117,7 +117,7 @@ NApi::ITableWriterPtr TWriteTableFragmentCommand::CreateTableWriter( .ValueOrThrow(); if (!validationSuccessful) { - auto concreteCookie = ConvertTo<TWriteFragmentCookie>(signedCookie.Underlying()->Payload()); + auto concreteCookie = ConvertTo<TWriteFragmentCookie>(TYsonStringBuf(signedCookie.Underlying()->Payload())); THROW_ERROR_EXCEPTION( "Signature validation failed for write table fragment") diff --git a/yt/yt/client/signature/generator.cpp b/yt/yt/client/signature/generator.cpp index 5687cd2b05..71c12d6ae2 100644 --- a/yt/yt/client/signature/generator.cpp +++ b/yt/yt/client/signature/generator.cpp @@ -10,10 +10,10 @@ using namespace NYson; //////////////////////////////////////////////////////////////////////////////// -TSignaturePtr ISignatureGenerator::Sign(TYsonString data) +TSignaturePtr ISignatureGenerator::Sign(std::string payload) { auto signature = New<TSignature>(); - signature->Payload_ = std::move(data); + signature->Payload_ = std::move(payload); Sign(signature); return signature; } diff --git a/yt/yt/client/signature/generator.h b/yt/yt/client/signature/generator.h index 6dc12eef9f..6574128736 100644 --- a/yt/yt/client/signature/generator.h +++ b/yt/yt/client/signature/generator.h @@ -15,7 +15,7 @@ struct ISignatureGenerator //! based on its payload. virtual void Sign(const TSignaturePtr& signature) = 0; - [[nodiscard]] TSignaturePtr Sign(NYson::TYsonString data); + [[nodiscard]] TSignaturePtr Sign(std::string payload); }; DEFINE_REFCOUNTED_TYPE(ISignatureGenerator) diff --git a/yt/yt/client/signature/signature.cpp b/yt/yt/client/signature/signature.cpp index 0a71e0a02c..b7b26d25ec 100644 --- a/yt/yt/client/signature/signature.cpp +++ b/yt/yt/client/signature/signature.cpp @@ -14,7 +14,7 @@ using namespace NYTree; //////////////////////////////////////////////////////////////////////////////// -const TYsonString& TSignature::Payload() const +const std::string& TSignature::Payload() const { return Payload_; } @@ -26,8 +26,8 @@ void Serialize(const TSignature& signature, IYsonConsumer* consumer) consumer->OnBeginMap(); BuildYsonMapFragmentFluently(consumer) .Item("header").Value(signature.Header_.ToString()) - .Item("payload").Value(signature.Payload_.ToString()) - .Item("signature").Value(TString( + .Item("payload").Value(signature.Payload_) + .Item("signature").Value(TStringBuf( reinterpret_cast<const char*>(signature.Signature_.data()), signature.Signature_.size())); consumer->OnEndMap(); @@ -39,10 +39,10 @@ void Deserialize(TSignature& signature, INodePtr node) { auto mapNode = node->AsMap(); signature.Header_ = TYsonString(mapNode->GetChildValueOrThrow<TString>("header")); - signature.Payload_ = TYsonString(mapNode->GetChildValueOrThrow<TString>("payload")); + signature.Payload_ = mapNode->GetChildValueOrThrow<std::string>("payload"); - auto signatureString = mapNode->GetChildValueOrThrow<TString>("signature"); - auto signatureBytes = std::as_bytes(std::span(TStringBuf(signatureString))); + auto signatureString = mapNode->GetChildValueOrThrow<std::string>("signature"); + auto signatureBytes = std::as_bytes(std::span(signatureString)); signature.Signature_.resize(signatureBytes.size()); std::copy(signatureBytes.begin(), signatureBytes.end(), signature.Signature_.begin()); diff --git a/yt/yt/client/signature/signature.h b/yt/yt/client/signature/signature.h index ea74bb8192..a9bbaf8660 100644 --- a/yt/yt/client/signature/signature.h +++ b/yt/yt/client/signature/signature.h @@ -20,11 +20,11 @@ public: //! Constructs an empty TSignature. TSignature() = default; - [[nodiscard]] const NYson::TYsonString& Payload() const; + [[nodiscard]] const std::string& Payload() const; private: NYson::TYsonString Header_; - NYson::TYsonString Payload_; + std::string Payload_; std::vector<std::byte> Signature_; friend struct ISignatureGenerator; diff --git a/yt/yt/client/signature/unittests/dummy_ut.cpp b/yt/yt/client/signature/unittests/dummy_ut.cpp index eba593ad3c..364717473e 100644 --- a/yt/yt/client/signature/unittests/dummy_ut.cpp +++ b/yt/yt/client/signature/unittests/dummy_ut.cpp @@ -24,7 +24,7 @@ const auto YsonSignature = TYsonString( TEST(TDummySignatureGeneratorTest, Generate) { auto generator = CreateDummySignatureGenerator(); - auto signature = generator->Sign(TYsonString("payload"_sb)); + auto signature = generator->Sign("payload"); EXPECT_EQ(ConvertToYsonString(signature, EYsonFormat::Text), YsonSignature); generator->Sign(signature); EXPECT_EQ(ConvertToYsonString(signature, EYsonFormat::Text), YsonSignature); @@ -45,7 +45,7 @@ TEST(TDummySignatureValidatorTest, GenerateValidate) { auto generator = CreateDummySignatureGenerator(); auto validator = CreateDummySignatureValidator(); - auto signature = generator->Sign(TYsonString("payload"_sb)); + auto signature = generator->Sign("payload"); EXPECT_TRUE(validator->Validate(signature).Get().Value()); } diff --git a/yt/yt/client/signature/unittests/signature_ut.cpp b/yt/yt/client/signature/unittests/signature_ut.cpp index 2639715746..a570042370 100644 --- a/yt/yt/client/signature/unittests/signature_ut.cpp +++ b/yt/yt/client/signature/unittests/signature_ut.cpp @@ -23,7 +23,7 @@ TEST(TSignatureTest, DeserializeSerialize) TSignaturePtr signature; EXPECT_NO_THROW(signature = ConvertTo<TSignaturePtr>(ysonOK)); - EXPECT_EQ(signature->Payload().ToString(), "payload"); + EXPECT_EQ(signature->Payload(), "payload"); EXPECT_EQ(ConvertToYsonString(signature, EYsonFormat::Text).ToString(), ysonOK.ToString()); } diff --git a/yt/yt/core/misc/ema_counter-inl.h b/yt/yt/core/misc/ema_counter-inl.h index 05a0aec6ef..eced52e06d 100644 --- a/yt/yt/core/misc/ema_counter-inl.h +++ b/yt/yt/core/misc/ema_counter-inl.h @@ -59,7 +59,10 @@ std::optional<double> TEmaCounter<T, WindowCount>::GetRate(int windowIndex, TIns return {}; } - return WindowRates[windowIndex]; + YT_ASSERT(LastTimestamp.has_value()); + auto timeDelta = (currentTimestamp - *LastTimestamp).SecondsFloat(); + auto exp = std::exp(-timeDelta / (WindowDurations[windowIndex].SecondsFloat() / 2.0)); + return WindowRates[windowIndex] * exp; } template <typename T, int WindowCount> diff --git a/yt/yt/core/misc/unittests/ema_counter_ut.cpp b/yt/yt/core/misc/unittests/ema_counter_ut.cpp index e7fcbb5602..dc5d23931d 100644 --- a/yt/yt/core/misc/unittests/ema_counter_ut.cpp +++ b/yt/yt/core/misc/unittests/ema_counter_ut.cpp @@ -67,7 +67,9 @@ TEST(TEmaCounterTest, MockTime) // Result should be almost 1 (recall that the initial rate value of 0 // is remembered by EMA for some time). EXPECT_NEAR(1.0, counter.WindowRates[0], 1e-3); - EXPECT_TRUE(counter.GetRate(0, currentTimestamp)); + ASSERT_TRUE(counter.GetRate(0, currentTimestamp)); + EXPECT_NEAR(1.0, *counter.GetRate(0, currentTimestamp - sec), 1e-3); + EXPECT_NEAR(1e-3, *counter.GetRate(0, currentTimestamp + 5 * min), 1e-3); // log2(1e-3) ~ -10. Window is doubled half-decay period. for (int index = 300; index < 360; ++index, currentTimestamp += sec) { currentCount += actualRate; |