diff options
| author | alexnick <[email protected]> | 2022-04-08 15:41:37 +0300 |
|---|---|---|
| committer | alexnick <[email protected]> | 2022-04-08 15:41:37 +0300 |
| commit | 330b5b45d1b510c041ca86a3b9ff4c7d8b50e745 (patch) | |
| tree | 3d278ac2bdf1321d8db30b787835c2d46344104f | |
| parent | 1cef2c035e2514f5d8790fe7d01ef0f651bac037 (diff) | |
fix for empty messages
Note: mandatory check (NEED_CHECK) was skipped
ref:395247f25c483c5957b7794173d40078cdb87d22
| -rw-r--r-- | ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp index 38d3b3a2f42..a3a0a2132b0 100644 --- a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp +++ b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp @@ -1398,7 +1398,9 @@ void TSingleClusterReadSessionImpl::OnDataDecompressed(i64 sourceSize, i64 estim CompressedDataSize -= sourceSize; DecompressedDataSize += decompressedSize - estimatedDecompressedSize; constexpr double weight = 0.6; - AverageCompressionRatio = weight * static_cast<double>(decompressedSize) / static_cast<double>(sourceSize) + (1 - weight) * AverageCompressionRatio; + if (sourceSize > 0) { + AverageCompressionRatio = weight * static_cast<double>(decompressedSize) / static_cast<double>(sourceSize) + (1 - weight) * AverageCompressionRatio; + } if (Aborting) { return; } @@ -2055,6 +2057,9 @@ i64 TDataDecompressionInfo::StartDecompressionTasks(const IExecutor::TPtr& execu const i64 size = static_cast<i64>(messageData.data().size()); const i64 estimatedDecompressedSize = messageData.uncompressed_size() ? static_cast<i64>(messageData.uncompressed_size()) : static_cast<i64>(size * averageCompressionRatio); + + Y_VERIFY(estimatedDecompressedSize >= 0); + task.Add(CurrentDecompressingMessage.first, CurrentDecompressingMessage.second, size, estimatedDecompressedSize); used += estimatedDecompressedSize; availableMemory -= estimatedDecompressedSize; |
