summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/CODEOWNERS2
-rw-r--r--.github/config/muted_ya.txt9
-rw-r--r--.github/config/muted_ya_asan.txt38
-rw-r--r--.github/config/muted_ya_msan.txt135
-rw-r--r--.github/config/muted_ya_tsan.txt6
-rw-r--r--ydb/core/base/fulltext.cpp2
-rw-r--r--ydb/core/base/ut/fulltext_ut.cpp33
-rw-r--r--ydb/core/blobstorage/nodewarden/distconf.h1
-rw-r--r--ydb/core/blobstorage/nodewarden/distconf_generate.cpp20
-rw-r--r--ydb/core/blobstorage/nodewarden/distconf_invoke_static_group.cpp1
-rw-r--r--ydb/core/blobstorage/nodewarden/distconf_ut.cpp68
-rw-r--r--ydb/core/kafka_proxy/ut/ut_protocol.cpp97
-rw-r--r--ydb/core/mind/bscontroller/cmds_storage_pool.cpp1
-rw-r--r--ydb/core/mind/bscontroller/self_heal.cpp1
-rw-r--r--ydb/core/persqueue/pqrb/read_balancer.cpp6
-rw-r--r--ydb/core/persqueue/pqrb/read_balancer__balancing.cpp4
-rw-r--r--ydb/core/persqueue/pqtablet/partition/autopartitioning_manager.cpp11
-rw-r--r--ydb/core/persqueue/pqtablet/partition/mlp/mlp_consumer.cpp16
-rw-r--r--ydb/core/persqueue/pqtablet/partition/partition_write.cpp2
-rw-r--r--ydb/core/persqueue/public/inflight_limiter.cpp9
-rw-r--r--ydb/core/persqueue/public/mlp/mlp_writer.cpp2
-rw-r--r--ydb/core/persqueue/writer/partition_chooser_impl__table_helper.h6
-rw-r--r--ydb/core/protos/blobstorage_config.proto1
-rw-r--r--ydb/core/protos/blobstorage_distributed_config.proto1
-rw-r--r--ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/table/table.h1
-rw-r--r--ydb/public/sdk/cpp/src/client/table/out.cpp3
-rw-r--r--ydb/public/sdk/cpp/src/client/table/table.cpp4
-rw-r--r--ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/manager.cpp4
-rw-r--r--ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/object.cpp2
-rw-r--r--ydb/services/workload_manager/ut/common/query_classifier_ut_common.h2
30 files changed, 257 insertions, 231 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 75a91de29de..0e0a2082035 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -63,6 +63,8 @@
/ydb/library/yql/udfs/common/clickhouse/client @ydb-platform/fq
/ydb/library/yql/udfs/common/knn @ydb-platform/datashard
/ydb/services/fq/ @ydb-platform/fq
+/ydb/services/workload_manager @ydb-platform/fq
+/ydb/core/resource_pools @ydb-platform/fq
/ydb/core/http_proxy @ydb-platform/Topics
/ydb/core/kafka_proxy @ydb-platform/Topics
diff --git a/.github/config/muted_ya.txt b/.github/config/muted_ya.txt
index 248f5e99426..54cd989bd70 100644
--- a/.github/config/muted_ya.txt
+++ b/.github/config/muted_ya.txt
@@ -1,7 +1,4 @@
ydb/core/blobstorage/dsproxy/ut TBlobStorageProxySequenceTest.TestBlock42PutWithChangingSlowDisk
-ydb/core/blobstorage/pdisk/ut RDMA.TestChunkReadWithRdmaAllocatorEncryptedChunks
-ydb/core/blobstorage/pdisk/ut RDMA.TestChunkReadWithRdmaAllocatorPlainChunks
-ydb/core/blobstorage/pdisk/ut RDMA.TestRcBuf
ydb/core/blobstorage/ut_blobstorage BlobPatching.PatchBlock42
ydb/core/blobstorage/ut_blobstorage Get.TestRdmaRegiseredMemory
ydb/core/blobstorage/ut_blobstorage NodeDisconnected.BsQueueRetries
@@ -35,19 +32,20 @@ ydb/core/kqp/ut/query KqpAnalyzeOperations.AnalyzeOperationsLifecycle
ydb/core/kqp/ut/scheme KqpScheme.CreateDropTableMultipleTime
ydb/core/load_test/ut GroupWriteTest.SimpleRdma
ydb/core/mind/ut TDynamicNameserverTest.OnlyAliveDynamicNodesStaticNodeChangeSubscribers
-ydb/core/tx/columnshard/backup/iscan/ut unittest.sole chunk
ydb/core/tx/schemeshard/ut_background_cleaning TSchemeshardBackgroundCleaningTest.SchemeshardBackgroundCleaningTestCreateCleanManyTables
ydb/core/tx/schemeshard/ut_compaction_reboots SchemeshardForcedCompactionTestReboots.ForceCompactWithIndexCreation[TabletRebootsBucket0]
ydb/core/tx/schemeshard/ut_compaction_reboots unittest.[*/*] chunk
ydb/library/actors/core/ut TestThreadContextQueueTimestamps.CurrentQueueTimestamps
ydb/library/actors/http/ut Http2Integration.Http2UpgradeFrom101
ydb/library/actors/interconnect/ut InterconnectDirectSession.UnregisterRestoresActorSystemDelivery
+ydb/library/actors/interconnect/ut InterconnectSessionV2.ActorSystemTeardownIdleSessions
ydb/library/actors/interconnect/ut InterconnectSessionV2.FallbackWithoutBufRing
ydb/library/actors/interconnect/ut InterconnectSessionV2.LargePayloadRoundTrip
ydb/public/sdk/cpp/tests/integration/topic gtest.[*/*] chunk
ydb/public/sdk/cpp/tests/integration/topic/with_direct_read gtest.[*/*] chunk
ydb/services/persqueue_v1/ut TPersQueueTest.TopicServiceCommitOffset
ydb/services/persqueue_v1/ut unittest.[*/*] chunk
+ydb/tests/compatibility/common test_system_views.py.TestSystemViewsRegistry.test_domain_sys_dir[restart_stable-26-3-1_to_prestable-26-4]
ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_prestable-26-4_to_prestable-26-4]
ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_prestable-26-4_to_stable-26-3-1]
ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_stable-26-2-1_to_stable-26-3-1]
@@ -64,11 +62,11 @@ ydb/tests/compatibility/udf test_datetime2.py.TestDatetime2.test_all[mixed_stabl
ydb/tests/fq/streaming py3test.[*/*] chunk
ydb/tests/fq/streaming test_streaming.py.TestStreamingInYdb.test_read_topic_shared_reading_limit[False]
ydb/tests/functional/blobstorage test_node_warden_cache.py.TestNodeWardenCacheFile.test_cache_file_lifecycle_and_restart
-ydb/tests/functional/nbs py3test.sole chunk
ydb/tests/functional/nbs test_nbs.py.TestNbs.test_nbs_disk_creation
ydb/tests/functional/nbs test_nbs.py.TestNbs.test_nbs_disk_creation_name_with_symbols
ydb/tests/functional/nbs test_nbs.py.TestNbs.test_nbs_multiple_disks_creation
ydb/tests/functional/query_cache/warmup test_warmup.py.TestCompileCacheViewPeerWarnings.test_peer_scan_warnings_increment_on_dead_peer
+ydb/tests/functional/query_cache/warmup test_warmup.py.TestWarmupRestart.test_warmup_basic
ydb/tests/functional/security/mon/canonical test_mon_endpoints_auth.py.test[require_healthcheck_authentication-with_schema_grants]
ydb/tests/functional/sqs/cloud test_yandex_cloud_mode.py.TestSqsYandexCloudMode.test_dlq_mechanics_in_cloud[fifo]
ydb/tests/functional/sqs/migration/compatibility/common ydb.tests.functional.sqs.common.test_queue_counters.py.TestSqsGettingCounters.test_sqs_action_counters
@@ -86,7 +84,6 @@ ydb/tests/stress/testshard_workload/tests test_workload.py.TestYdbTestShardWorkl
ydb/tests/stress/topic/tests test_workload_topic.py.TestYdbTopicWorkload.test_0
ydb/tests/stress/topic_sqs/tests test_workload.py.TestYdbTopicSqsWorkload.test
ydb/tools/mnc/viewer/ut py3test.sole chunk
-ydb/tools/mnc/viewer/ut test_cluster_config_validation.py.ClusterConfigSelectionStateTest.test_operations_tab_shows_running_steps_and_final_output
ydb/tools/mnc/viewer/ut test_navigation.py.ViewerTabNavigationTest.test_operation_tab_navigation_matches_state_machine
ydb/tools/mnc/viewer/ut test_navigation.py.ViewerTabNavigationTest.test_tab_navigation_matches_state_machine_for_core_command_sequences
ydb/tools/stress_tool/ut TDeviceTestTool.PDiskTestLogWrite
diff --git a/.github/config/muted_ya_asan.txt b/.github/config/muted_ya_asan.txt
index ba8f6a44505..f394756449e 100644
--- a/.github/config/muted_ya_asan.txt
+++ b/.github/config/muted_ya_asan.txt
@@ -1,5 +1,4 @@
ydb/apps/ydb/ut YdbWorkloadTransferTopicToTable.Default_Run
-ydb/core/blobstorage/ddisk/ut TDDiskActorPDiskTest.PDiskRestartWithReservedChunks_DDiskZombie_Uring
ydb/core/blobstorage/ddisk/ut TDDiskActorTest.LateOutdatedSyncReadResultDoesNotLogUnknownSync
ydb/core/blobstorage/ddisk/ut_large TDDiskActorPDiskSyncTest.Large_4Tablets_32VChunks_FullBlocks_16Segments
ydb/core/blobstorage/ddisk/ut_large TDDiskActorPDiskSyncTest.Large_4Tablets_32VChunks_FullBlocks_1Segment
@@ -46,8 +45,6 @@ ydb/core/blobstorage/ut_blobstorage/ut_replication ReplicationSpace.HugeBlobsWit
ydb/core/blobstorage/ut_blobstorage/ut_replication ReplicationSpace.SmallBlobsNoDonor
ydb/core/blobstorage/ut_blobstorage/ut_replication ReplicationSpace.SmallBlobsWithDonor
ydb/core/blobstorage/ut_blobstorage/ut_replication unittest.[*/*] chunk
-ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk BSCRestartPDisk.RestartOneByOneWithReconnects
-ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk unittest.[*/*] chunk
ydb/core/blobstorage/ut_vdisk unittest.[*/*] chunk
ydb/core/formats/arrow/accessor/sub_columns/ut SubColumnsSparsedBuilder.BinaryJsonMatchesPlain
ydb/core/graph/shard/ut unittest.sole chunk
@@ -471,7 +468,6 @@ ydb/core/kqp/ut/indexes/prefixed_vector unittest.[*/*] chunk
ydb/core/kqp/ut/join KqpJoinOrder.Chain65Nodes
ydb/core/kqp/ut/olap KqpOlapOptimizer.SpecialSliceToOneLayer
ydb/core/kqp/ut/olap KqpOlapOptimizer.TilingPlusPlusTtlDeletion
-ydb/core/kqp/ut/olap/types KqpOlapJson.BloomMixIndexesOldSyntaxVariants[false,true,1024,0,0,0.5,BLOOM_FILTER]
ydb/core/kqp/ut/olap/types KqpOlapJson.QuotedFilterVariants[10,false,1,0,100,0.5]
ydb/core/kqp/ut/olap/types KqpOlapJson.SimpleExistsVariants[10,false,0,10,100,0.5]
ydb/core/kqp/ut/query KqpLimits.OutOfSpaceYQLUpsertFail
@@ -485,8 +481,6 @@ ydb/core/kqp/ut/rbo KqpRboOlap.DisableBlocksOnColumnsLimit
ydb/core/kqp/ut/rbo KqpRboOlap.DoubleOutOfRangeInJson
ydb/core/kqp/ut/rbo KqpRboOlap.OlapFilterPeephole
ydb/core/kqp/ut/rbo KqpRboOlap.PredicatePushdownCastErrors
-ydb/core/kqp/ut/rbo KqpRboYql.AggregateKeyColumnsNotLeakedToInputMap
-ydb/core/kqp/ut/rbo KqpRboYql.Aggregation-ColumnStore
ydb/core/kqp/ut/rbo KqpRboYql.AliasesRenames
ydb/core/kqp/ut/rbo KqpRboYql.BasicHashJoin-UseBlockHashJoin
ydb/core/kqp/ut/rbo KqpRboYql.ColumnStatistics+ColumnStore
@@ -555,7 +549,6 @@ ydb/core/nbs/cloud/blockstore/libs/storage/partition_direct/ut TVChunkTest.Shoul
ydb/core/nbs/cloud/blockstore/libs/storage/partition_direct/ut TWriteRequestWithPBufferReplicationTest.ShouldWorkWithMultipleResponsesAndHedge
ydb/core/nbs/cloud/blockstore/libs/storage/partition_direct/ut unittest.sole chunk
ydb/core/persqueue/pqtablet/partition/mlp/ut TMLPCountersTests.SimpleCounters
-ydb/core/persqueue/pqtablet/partition/mlp/ut TMLPCountersTests.SimpleCountersWithKeepMessageOrder
ydb/core/persqueue/pqtablet/quota/ut TWriteQuoterTests.WaitMessagesQuota
ydb/core/persqueue/pqtablet/quota/ut unittest.sole chunk
ydb/core/persqueue/public/describer/ut TDescriberTests.CDC
@@ -579,13 +572,11 @@ ydb/core/transfer/ut/column_table unittest.sole chunk
ydb/core/transfer/ut/functional Transfer.CheckCommittedOffsetEmptyBatch_Remote
ydb/core/transfer/ut/functional Transfer.LocalTopic_BigMessage
ydb/core/transfer/ut/large TransferLarge.Transfer100KM_10P_LocalRead_TopicAutoPartitioning
-ydb/core/transfer/ut/large TransferLarge.Transfer100KM_10P_RowTable_TopicAutoPartitioning
ydb/core/tx/columnshard/backup/async_jobs/ut unittest.sole chunk
ydb/core/tx/columnshard/backup/iscan/ut IScan.ShouldRejectParquetExportWithEncryption
ydb/core/tx/columnshard/ut_rw TColumnShardTestReadWrite.CompactionSplitGranuleStrKey_PKUtf8
ydb/core/tx/columnshard/ut_rw TColumnShardTestReadWrite.CompactionSplitGranule_PKDatetime
ydb/core/tx/columnshard/ut_rw unittest.[*/*] chunk
-ydb/core/tx/datashard/build_index/ut TTxDataShardLocalKMeansScan.BuildToBuild_Ranges
ydb/core/tx/datashard/build_index/ut TTxDataShardLocalKMeansScan.EmptyEmbeddingSkipped
ydb/core/tx/datashard/build_index/ut TTxDataShardLocalKMeansScan.NullEmbedding
ydb/core/tx/datashard/build_index/ut TTxDataShardPrefixKMeansScan.BadRequest
@@ -625,7 +616,6 @@ ydb/core/tx/datashard/ut_stats DataShardStats.HasSchemaChanges_Families
ydb/core/tx/datashard/ut_stats unittest.sole chunk
ydb/core/tx/datashard/ut_validate_row_condition unittest.sole chunk
ydb/core/tx/schemeshard/ut_background_cleaning TSchemeshardBackgroundCleaningTest.SchemeshardBackgroundCleaningTestCreateCleanManyTables
-ydb/core/tx/schemeshard/ut_full_backup unittest.sole chunk
ydb/core/tx/schemeshard/ut_login TSchemeShardLoginTest.CheckThatLockedOutParametersIsRestoredFromLocalDb
ydb/core/tx/schemeshard/ut_metrics unittest.[*/*] chunk
ydb/core/tx/schemeshard/ut_olap TOlap.StoreStatsSmallBlobsVolumeQuota
@@ -662,7 +652,6 @@ ydb/public/sdk/cpp/src/client/topic/ut/with_direct_read_ut LocalPartition.Direct
ydb/public/sdk/cpp/src/client/topic/ut/with_direct_read_ut LocalPartition.WithoutPartitionWithRestart
ydb/public/sdk/cpp/src/client/topic/ut/with_direct_read_ut TxUsage.Sinks_Oltp_WriteToTopic_3_Query
ydb/public/sdk/cpp/src/client/topic/ut/with_direct_read_ut TxUsage.Sinks_Oltp_WriteToTopic_3_Table
-ydb/public/sdk/cpp/src/client/topic/ut/with_direct_read_ut TxUsage.Sinks_Oltp_WriteToTopics_2_Table
ydb/public/sdk/cpp/src/client/topic/ut/with_direct_read_ut TxUsage.WriteToTopic_Demo_27_Query
ydb/public/sdk/cpp/src/client/topic/ut/with_direct_read_ut unittest.[*/*] chunk
ydb/public/sdk/cpp/tests/integration/bulk_upsert BulkUpsert.RetryOverheadOnHappyPath
@@ -692,8 +681,7 @@ ydb/tests/compatibility/common test_data_type.py.TestDataType.test_parametrized_
ydb/tests/compatibility/common test_data_type.py.TestDataType.test_parametrized_data_type[restart_prestable-26-4_to_stable-26-3-1-COLUMN]
ydb/tests/compatibility/common test_data_type.py.TestDataType.test_parametrized_data_type[restart_stable-26-3-1_to_prestable-26-4-COLUMN]
ydb/tests/compatibility/common test_data_type.py.TestDataType.test_parametrized_data_type[restart_stable-26-3-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/common test_system_views.py.TestSystemViewsRegistry.test_domain_sys_dir[restart_stable-26-2-1_to_stable-26-3-1]
-ydb/tests/compatibility/common test_user_management.py.TestUserManagementRollingUpgrade.test_user_management[rolling_stable-26-2-1_to_stable-26-3-1]
+ydb/tests/compatibility/common test_system_views.py.TestSystemViewsRegistry.test_domain_sys_dir[restart_stable-26-3-1_to_prestable-26-4]
ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_prestable-26-4_to_prestable-26-4]
ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_prestable-26-4_to_stable-26-3-1]
ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_stable-26-2-1_to_stable-26-3-1]
@@ -705,48 +693,24 @@ ydb/tests/compatibility/olap test_encoding.py.TestEncoding.test_encoding[rolling
ydb/tests/compatibility/result_set_format py3test.[test_result_set_arrow.py */*] chunk
ydb/tests/compatibility/streaming test_streaming.py.TestStreamingRestartToAnotherVersion.test_restart_to_another_version[restart_stable-26-3-1_to_stable-26-2-1-False]
ydb/tests/compatibility/streaming test_streaming.py.TestStreamingRestartToAnotherVersion.test_restart_to_another_version[restart_stable-26-3-1_to_stable-26-2-1-True]
-ydb/tests/compatibility/topics test_kafka_topic.py.TestKafkaTopicMixedClusterFixture.test_workload[mixed_prestable-26-4]
ydb/tests/compatibility/topics test_kafka_topic.py.TestKafkaTopicMixedClusterFixture.test_workload[mixed_prestable-26-4_and_stable-26-3-1]
ydb/tests/compatibility/topics test_kafka_topic.py.TestKafkaTopicMixedClusterFixture.test_workload[mixed_stable-26-3-1_and_stable-26-2-1]
ydb/tests/compatibility/topics test_kafka_topic.py.TestKafkaTopicRestartToAnotherVersion.test_workload[restart_prestable-26-4_to_prestable-26-4]
-ydb/tests/compatibility/topics test_kafka_topic.py.TestKafkaTopicRestartToAnotherVersion.test_workload[restart_prestable-26-4_to_stable-26-3-1]
ydb/tests/compatibility/topics test_kafka_topic.py.TestKafkaTopicRestartToAnotherVersion.test_workload[restart_stable-26-2-1_to_stable-26-3-1]
ydb/tests/compatibility/udf test_datetime2.py.TestDatetime2.test_all[mixed_prestable-26-4_and_stable-26-3-1]
ydb/tests/compatibility/udf test_datetime2.py.TestDatetime2.test_all[mixed_stable-26-3-1_and_stable-26-2-1]
ydb/tests/datashard/truncate/concurrency py3test.[test_truncate_table_concurrency.py */*] chunk
ydb/tests/datashard/truncate/concurrency test_truncate_table_concurrency.py.TestTruncateTableConcurrency.test_truncate_with_concurrent_rw_operations
ydb/tests/fq/generic/streaming py3test.sole chunk
-ydb/tests/fq/generic/streaming test_join.py.TestJoinStreaming.test_streamlookup_watermarks[v1-6-False-1-1-fq_client0-mvp_external_ydb_endpoint0]
-ydb/tests/fq/generic/streaming test_join.py.TestJoinStreaming.test_streamlookup_watermarks[v1-6-False-1-2-fq_client0-mvp_external_ydb_endpoint0]
-ydb/tests/fq/generic/streaming test_join.py.TestJoinStreaming.test_streamlookup_watermarks[v1-6-False-2-1-fq_client0-mvp_external_ydb_endpoint0]
-ydb/tests/fq/generic/streaming test_join.py.TestJoinStreaming.test_streamlookup_watermarks[v1-6-False-2-2-fq_client0-mvp_external_ydb_endpoint0]
-ydb/tests/fq/generic/streaming test_join.py.TestJoinStreaming.test_streamlookup_watermarks[v1-6-True-1-1-fq_client0-mvp_external_ydb_endpoint0]
-ydb/tests/fq/generic/streaming test_join.py.TestJoinStreaming.test_streamlookup_watermarks[v1-6-True-1-2-fq_client0-mvp_external_ydb_endpoint0]
-ydb/tests/fq/generic/streaming test_join.py.TestJoinStreaming.test_streamlookup_watermarks[v1-6-True-2-1-fq_client0-mvp_external_ydb_endpoint0]
-ydb/tests/fq/generic/streaming test_join.py.TestJoinStreaming.test_streamlookup_watermarks[v1-6-True-2-2-fq_client0-mvp_external_ydb_endpoint0]
ydb/tests/fq/generic/streaming test_join.py.TestJoinStreaming.test_streamlookup_watermarks[v1-8-False-1-1-fq_client0-mvp_external_ydb_endpoint0]
ydb/tests/fq/http_api test_http_api.py.TestHttpApi.test_simple_analytics_query
-ydb/tests/fq/s3 test_streaming_join.py.TestStreamingJoin.test_grace_join[v1-client0]
-ydb/tests/fq/streaming test_scalar_topic_write.py.TestScalarTopicWriteInYdb.test_mixed_valid_invalid_statements[False]
-ydb/tests/fq/streaming test_scalar_topic_write.py.TestScalarTopicWriteInYdb.test_mixed_valid_invalid_statements[True]
ydb/tests/fq/streaming test_udfs.py.TestUdfsUsage.test_precompute_recovery[False]
ydb/tests/fq/streaming/streaming_large test_cluster_restarts.py.TestStreamingLarge.test_rolling_restart[kikimr0]
-ydb/tests/fq/streaming_optimize py3test.[test_sql_negative.py */*] chunk
-ydb/tests/fq/streaming_optimize py3test.[test_sql_streaming.py */*] chunk
ydb/tests/fq/streaming_optimize py3test.sole chunk
ydb/tests/fq/streaming_optimize test_sql_negative.py.test[hopping_window-GroupByHoppingWindowTimeLimitBad-default.txt]
ydb/tests/fq/streaming_optimize test_sql_negative.py.test[watermarks-bad_column-default.txt]
ydb/tests/fq/streaming_optimize test_sql_streaming.py.test[hop-GroupByHopByStringKey-default.txt]
ydb/tests/fq/streaming_optimize test_sql_streaming.py.test[hop-GroupByHopExprKey-default.txt]
-ydb/tests/fq/yds test_disposition.py.TestDisposition.test_disposition_fresh[v1-mvp_external_ydb_endpoint0]
-ydb/tests/fq/yds test_row_dispatcher.py.TestPqRowDispatcher.test_3_sessions
-ydb/tests/fq/yds test_row_dispatcher.py.TestPqRowDispatcher.test_start_new_query
-ydb/tests/fq/yds test_watermarks.py.TestWatermarks.test_idle_watermarks[1-no_shared]
-ydb/tests/fq/yds test_watermarks.py.TestWatermarks.test_idle_watermarks[1-shared]
-ydb/tests/fq/yds test_watermarks.py.TestWatermarks.test_idle_watermarks[2-no_shared]
-ydb/tests/fq/yds test_watermarks.py.TestWatermarks.test_idle_watermarks[2-shared]
-ydb/tests/fq/yds test_watermarks.py.TestWatermarks.test_watermarks[no_shared]
-ydb/tests/fq/yds test_watermarks.py.TestWatermarks.test_watermarks[shared]
ydb/tests/fq/yt/kqp_yt_file/part0 py3test.sole chunk
ydb/tests/fq/yt/kqp_yt_file/part0 test.py.test[aggregate-group_by_gs_and_having-default.txt]
ydb/tests/fq/yt/kqp_yt_file/part1 py3test.sole chunk
diff --git a/.github/config/muted_ya_msan.txt b/.github/config/muted_ya_msan.txt
index 322615d4946..c67698442af 100644
--- a/.github/config/muted_ya_msan.txt
+++ b/.github/config/muted_ya_msan.txt
@@ -41,125 +41,22 @@ ydb/library/actors/interconnect/ut Interconnect.RdmaXdcCatchReplayAfterPartialPa
ydb/library/actors/interconnect/ut Interconnect.RdmaXdcCatchReplayAfterPartialRdmaRead
ydb/library/actors/interconnect/ut Interconnect.RdmaXdcCatchReplayAfterPartialRdmaReadOnPeerSocketClose
ydb/library/actors/interconnect/ut Interconnect.SetupRdmaSession
-ydb/tests/compatibility/common test_data_type.py.TestDataType.test_parametrized_data_type[restart_prestable-26-4_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/common test_data_type.py.TestDataType.test_parametrized_data_type[restart_prestable-26-4_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/common test_data_type.py.TestDataType.test_parametrized_data_type[restart_stable-26-3-1_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/common test_data_type.py.TestDataType.test_parametrized_data_type[restart_stable-26-3-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/common test_system_views.py.TestSystemViewsRegistry.test_domain_sys_dir[restart_stable-26-2-1_to_stable-26-3-1]
-ydb/tests/compatibility/common test_user_management.py.TestUserManagementRollingUpgrade.test_user_management[rolling_stable-26-2-1_to_stable-26-3-1]
-ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_prestable-26-4_to_prestable-26-4]
-ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_prestable-26-4_to_stable-26-3-1]
-ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_stable-26-2-1_to_stable-26-3-1]
-ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_stable-26-3-1_to_prestable-26-4]
-ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_stable-26-3-1_to_stable-26-2-1]
-ydb/tests/compatibility/indexes test_bloom_filter_index.py.TestBloomFilterIndex.test_bloom_filter_survives_version_change[restart_stable-26-3-1_to_stable-26-3-1]
-ydb/tests/compatibility/result_set_format py3test.[test_result_set_arrow.py */*] chunk
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_column_alias[restart_prestable-26-4_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_column_alias[restart_prestable-26-4_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_column_alias[restart_stable-26-2-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_column_alias[restart_stable-26-3-1_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_column_alias[restart_stable-26-3-1_to_stable-26-2-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_column_alias[restart_stable-26-3-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_limit_ordered_columns[restart_prestable-26-4_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_limit_ordered_columns[restart_prestable-26-4_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_limit_ordered_columns[restart_stable-26-2-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_limit_ordered_columns[restart_stable-26-3-1_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_limit_ordered_columns[restart_stable-26-3-1_to_stable-26-2-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_limit_ordered_columns[restart_stable-26-3-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_types_mapping[restart_prestable-26-4_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_types_mapping[restart_prestable-26-4_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_types_mapping[restart_stable-26-2-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_types_mapping[restart_stable-26-3-1_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_types_mapping[restart_stable-26-3-1_to_stable-26-2-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_arrow.py.TestResultSetArrow.test_types_mapping[restart_stable-26-3-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_column_alias[restart_prestable-26-4_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_column_alias[restart_prestable-26-4_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_column_alias[restart_stable-26-2-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_column_alias[restart_stable-26-3-1_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_column_alias[restart_stable-26-3-1_to_stable-26-2-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_column_alias[restart_stable-26-3-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_limit_ordered_columns[restart_prestable-26-4_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_limit_ordered_columns[restart_prestable-26-4_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_limit_ordered_columns[restart_stable-26-2-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_limit_ordered_columns[restart_stable-26-3-1_to_prestable-26-4-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_limit_ordered_columns[restart_stable-26-3-1_to_stable-26-2-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_limit_ordered_columns[restart_stable-26-3-1_to_stable-26-3-1-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_prestable-26-4-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_prestable-26-4_to_stable-26-3-1-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-2-1_to_stable-26-3-1-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_prestable-26-4-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-2-1-2-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-0-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-0-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-1-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-1-8388608-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-2-2048-COLUMN]
-ydb/tests/compatibility/result_set_format test_result_set_value.py.TestResultSetValue.test_schema_inclusion_mode[restart_stable-26-3-1_to_stable-26-3-1-2-8388608-COLUMN]
-ydb/tests/compatibility/streaming test_streaming.py.TestStreamingRestartToAnotherVersion.test_restart_to_another_version[restart_stable-26-3-1_to_stable-26-2-1-False]
-ydb/tests/compatibility/streaming test_streaming.py.TestStreamingRestartToAnotherVersion.test_restart_to_another_version[restart_stable-26-3-1_to_stable-26-2-1-True]
-ydb/tests/compatibility/udf test_datetime2.py.TestDatetime2.test_all[mixed_prestable-26-4_and_stable-26-3-1]
-ydb/tests/compatibility/udf test_datetime2.py.TestDatetime2.test_all[mixed_stable-26-3-1_and_stable-26-2-1]
+ydb/library/actors/interconnect/ut InterconnectSessionV2.ActorSystemRoundTrip
+ydb/library/actors/interconnect/ut InterconnectSessionV2.ActorSystemTeardownIdleSessions
+ydb/library/actors/interconnect/ut InterconnectSessionV2.ActorSystemTeardownUnderLoad
+ydb/library/actors/interconnect/ut InterconnectSessionV2.ClosePeerSocketAndReconnect
+ydb/library/actors/interconnect/ut InterconnectSessionV2.DirectSessionRoundTrip
+ydb/library/actors/interconnect/ut InterconnectSessionV2.FallbackWithoutBufRing
+ydb/library/actors/interconnect/ut InterconnectSessionV2.ForcedSessionTeardownAndReconnect
+ydb/library/actors/interconnect/ut InterconnectSessionV2.LargePayloadRoundTrip
+ydb/library/actors/interconnect/ut InterconnectSessionV2.LoadLikeRoundTripFallback
+ydb/library/actors/interconnect/ut InterconnectSessionV2.LoadLikeRoundTripMultiChannel
+ydb/library/actors/interconnect/ut InterconnectSessionV2.LoadLikeRoundTripSharedShardFallbackManyPeers
+ydb/library/actors/interconnect/ut InterconnectSessionV2.LoadLikeRoundTripSharedShardManyPeers
+ydb/library/actors/interconnect/ut InterconnectSessionV2.LoadLikeRoundTripWithBackpressure
+ydb/library/actors/interconnect/ut InterconnectSessionV2.LoadLikeRoundTripWithPayload
+ydb/library/actors/interconnect/ut InterconnectSessionV2.PeerStopTriggersDisconnect
+ydb/library/actors/interconnect/ut InterconnectSessionV2.RepeatedDisconnectChurnUnderLoad
ydb/tests/functional/audit test_canonical_records.py.test_dstool_evict_vdisk_grpc
ydb/tests/functional/nbs py3test.sole chunk
ydb/tests/functional/nbs test_nbs.py.TestNbs.test_nbs_500gb_disk_read_write
diff --git a/.github/config/muted_ya_tsan.txt b/.github/config/muted_ya_tsan.txt
index b9acc861149..e02fd5be4a8 100644
--- a/.github/config/muted_ya_tsan.txt
+++ b/.github/config/muted_ya_tsan.txt
@@ -100,6 +100,7 @@ ydb/core/kqp/ut/runtime unittest.[*/*] chunk
ydb/core/kqp/ut/scheme KqpScheme.BuildingUniqIndexAllowsTableModificationsPublicApi+EnableIndexStreamWrite
ydb/core/kqp/ut/scheme KqpScheme.BuildingUniqIndexAllowsTableModificationsPublicApi-EnableIndexStreamWrite
ydb/core/kqp/ut/scheme KqpScheme.BuildingUniqIndexAllowsTableModificationsSql-EnableIndexStreamWrite
+ydb/core/kqp/ut/scheme KqpScheme.BuildingUniqIndexDeniesTableModificationsPublicApi-EnableIndexStreamWrite
ydb/core/kqp/ut/scheme KqpScheme.BuildingUniqIndexDeniesTableModificationsSql-EnableIndexStreamWrite
ydb/core/kqp/ut/scheme unittest.[*/*] chunk
ydb/core/kqp/ut/service KqpQueryService.FlowControllOnHugeRealTable-LongRow
@@ -647,7 +648,9 @@ ydb/tests/functional/tpc/medium test_diff_processing.py.TestTpcdsDiffProcessing.
ydb/tests/functional/tpc/medium test_diff_processing.py.TestTpcdsDiffProcessing.test_tpcds[CheckCanonicalPolicy.NO]
ydb/tests/functional/tpc/medium test_diff_processing.py.TestTpcdsDiffProcessing.test_tpcds[CheckCanonicalPolicy.WARNING]
ydb/tests/functional/tpc/medium test_diff_processing.py.TestTpchDiffProcessing.test_tpch[CheckCanonicalPolicy.ERROR]
+ydb/tests/functional/tpc/medium test_diff_processing.py.TestTpchDiffProcessing.test_tpch[CheckCanonicalPolicy.NO]
ydb/tests/functional/tpc/medium test_import_csv.py.TestExternalImportCsv.test
+ydb/tests/functional/tpc/medium test_import_csv.py.TestExternalImportCsvArrow.test
ydb/tests/functional/tpc/medium test_tpcc.py.TestTpccW10T4SdkCompaction.test
ydb/tests/functional/tpc/medium test_tpcc.py.TestTpccW5T4LegacyCompaction.test
ydb/tests/functional/tpc/medium test_upload.py.TestUploadTpchS0_1.test_tpch[12]
@@ -659,9 +662,12 @@ ydb/tests/functional/tpc/medium test_upload.py.TestUploadTpchS0_1.test_tpch[17]
ydb/tests/functional/tpc/medium test_upload.py.TestUploadTpchS0_1.test_tpch[18]
ydb/tests/functional/tpc/medium test_upload.py.TestUploadTpchS0_1.test_tpch[19]
ydb/tests/functional/tpc/medium test_upload.py.TestUploadTpchS0_1.test_tpch[21]
+ydb/tests/functional/tpc/medium test_upload.py.TestUploadTpchS0_1.test_tpch[4]
+ydb/tests/functional/tpc/medium test_upload.py.TestUploadTpchS0_1.test_tpch[5]
ydb/tests/functional/tpc/medium test_workload_manager.py.TestClickbenchWM.test
ydb/tests/functional/tpc/medium test_workload_manager.py.TestClickbenchWMComputeSchedulerP1T1.test
ydb/tests/functional/tpc/medium test_workload_manager.py.TestTpchWMS0_1.test
+ydb/tests/functional/tpc/medium test_workload_manager.py.TestWMOltpAdHoc.test
ydb/tests/functional/tpc/medium test_workload_manager.py.TestWMOltpTpchS0_1.test
ydb/tests/functional/tpc/medium/tpch py3test.[test_decimal.py */*] chunk
ydb/tests/functional/tpc/medium/tpch py3test.[test_duplicates.py */*] chunk
diff --git a/ydb/core/base/fulltext.cpp b/ydb/core/base/fulltext.cpp
index 7b46e938205..e866fea00db 100644
--- a/ydb/core/base/fulltext.cpp
+++ b/ydb/core/base/fulltext.cpp
@@ -339,7 +339,7 @@ namespace {
}
if (tryRead(q, c2, n2) && IsDecdigit(c2)) {
p = q + n2;
- prev = LETTER;
+ prev = DIGIT;
safeEnd = p;
} else {
break;
diff --git a/ydb/core/base/ut/fulltext_ut.cpp b/ydb/core/base/ut/fulltext_ut.cpp
index 15e510f9cfe..7d6c14df7a2 100644
--- a/ydb/core/base/ut/fulltext_ut.cpp
+++ b/ydb/core/base/ut/fulltext_ut.cpp
@@ -540,6 +540,39 @@ Y_UNIT_TEST_SUITE(NFulltext) {
(TVector<T>{{"foo bar", false}}));
}
+ Y_UNIT_TEST(MidNumberChainedStandard) {
+ // Regression test: after consuming a MidNumber separator + digit, prev was
+ // incorrectly set to LETTER instead of DIGIT, so a second separator would not
+ // satisfy the (prev == DIGIT || prev == MID_DIGIT) guard and the token was cut short.
+ Ydb::Table::FulltextIndexSettings::Analyzers analyzers;
+ analyzers.set_tokenizer(Ydb::Table::FulltextIndexSettings::STANDARD);
+
+ // Two separators: "1,2,3" must be one token.
+ UNIT_ASSERT_VALUES_EQUAL(Analyze("1,2,3", analyzers), (TVector<TString>{"1,2,3"}));
+
+ // Mix of MidNumber chars (comma and period).
+ UNIT_ASSERT_VALUES_EQUAL(Analyze("1,2.3", analyzers), (TVector<TString>{"1,2.3"}));
+
+ // Trailing separator does not join — "1," ends at safeEnd before the comma.
+ UNIT_ASSERT_VALUES_EQUAL(Analyze("1,2,", analyzers), (TVector<TString>{"1,2"}));
+
+ // Longer chain.
+ UNIT_ASSERT_VALUES_EQUAL(Analyze("1,2,3,4,5", analyzers), (TVector<TString>{"1,2,3,4,5"}));
+
+ // Multiple tokens separated by whitespace — each chained number is its own token.
+ UNIT_ASSERT_VALUES_EQUAL(Analyze("1,2,3 4,5,6", analyzers), (TVector<TString>{"1,2,3", "4,5,6"}));
+
+ // Mixed: a word token followed by a chained number token.
+ UNIT_ASSERT_VALUES_EQUAL(Analyze("price 1,234,567", analyzers), (TVector<TString>{"price", "1,234,567"}));
+
+ // Chained number token followed by a letter token.
+ UNIT_ASSERT_VALUES_EQUAL(Analyze("1,2,3 end", analyzers), (TVector<TString>{"1,2,3", "end"}));
+
+ // Punctuation breaks tokens: "1,2.foo" — the period before a letter is MidLetter territory,
+ // but here it follows digits so the chain stops at "1,2" and "foo" is separate.
+ UNIT_ASSERT_VALUES_EQUAL(Analyze("1,2.foo", analyzers), (TVector<TString>{"1,2", "foo"}));
+ }
+
Y_UNIT_TEST(WordBreakTest) {
// Generated from
// http://www.unicode.org/Public/12.1.0/ucd/auxiliary/WordBreakTest.txt
diff --git a/ydb/core/blobstorage/nodewarden/distconf.h b/ydb/core/blobstorage/nodewarden/distconf.h
index a194af1a701..dc8107b54a6 100644
--- a/ydb/core/blobstorage/nodewarden/distconf.h
+++ b/ydb/core/blobstorage/nodewarden/distconf.h
@@ -488,6 +488,7 @@ namespace NKikimr::NStorage {
bool ConvertToDonor = false;
bool IgnoreVSlotQuotaCheck = false;
bool AllowUnusableDisks = false;
+ bool SettleOnlyOnOperationalDisks = false;
bool IsSelfHealReasonDecommit = false;
TBridgePileId BridgePileId;
std::optional<TGroupId> BridgeProxyGroupId;
diff --git a/ydb/core/blobstorage/nodewarden/distconf_generate.cpp b/ydb/core/blobstorage/nodewarden/distconf_generate.cpp
index 9e99daffe52..b8dd9706aa9 100644
--- a/ydb/core/blobstorage/nodewarden/distconf_generate.cpp
+++ b/ydb/core/blobstorage/nodewarden/distconf_generate.cpp
@@ -179,6 +179,7 @@ namespace NKikimr::NStorage {
NKikimrBlobStorage::TNodeWardenServiceSet::TPDisk Record;
ui32 UsedSlots = 0;
bool Usable = true;
+ bool Operational = false;
TString WhyUnusable;
i64 SpaceAvailable = 0;
bool AdjustSpaceAvailable = false;
@@ -249,6 +250,12 @@ namespace NKikimr::NStorage {
if (params.BaseConfig) {
const auto& baseConfig = *params.BaseConfig;
+ THashSet<ui32> connectedNodes;
+ for (const auto& node : baseConfig.GetNode()) {
+ if (node.GetConnected()) {
+ connectedNodes.insert(node.GetNodeId());
+ }
+ }
std::optional<NKikimrBlobStorage::TPDiskSpaceColor::E> pdiskSpaceColorBorder;
ui32 pdiskSpaceMarginPromille = 150;
@@ -290,6 +297,8 @@ namespace NKikimr::NStorage {
if (pdisk.GetExpectedSlotSize()) {
pdiskMapperSettings[pdiskId].SlotSizeInBytes = pdisk.GetExpectedSlotSize();
}
+ pdiskInfo.Operational = connectedNodes.contains(pdiskId.NodeId) && (!pdisk.HasPDiskMetrics() || !pdisk.GetPDiskMetrics().HasState() ||
+ pdisk.GetPDiskMetrics().GetState() == NKikimrBlobStorage::TPDiskState::Normal);
// this 'usable' logic repeats the one in BS_CONTROLLER
if (pdisk.GetDriveStatus() != NKikimrBlobStorage::EDriveStatus::ACTIVE) {
@@ -534,7 +543,7 @@ namespace NKikimr::NStorage {
.SlotSizeInBytes = settings.SlotSizeInBytes,
.Groups{},
.SpaceAvailable = item.SpaceAvailable,
- .Operational = true,
+ .Operational = item.Operational,
.Decommitted = false,
.WhyUnusable = whyUnusable,
});
@@ -559,8 +568,13 @@ namespace NKikimr::NStorage {
NBsController::TGroupMapperError error;
const ui32 groupSizeInUnits = 1; // static groups are always single-unit
- if (!mapper.AllocateGroup(params.GroupId.GetRawId(), groupDefinition, replacedDisks,
- params.ForbiddenPDisks, groupSizeInUnits, params.RequiredSpace, false, {}, error)) {
+ bool allocated = mapper.AllocateGroup(params.GroupId.GetRawId(), groupDefinition, replacedDisks,
+ params.ForbiddenPDisks, groupSizeInUnits, params.RequiredSpace, true, {}, error);
+ if (!allocated && !params.SettleOnlyOnOperationalDisks) {
+ allocated = mapper.AllocateGroup(params.GroupId.GetRawId(), groupDefinition, replacedDisks,
+ params.ForbiddenPDisks, groupSizeInUnits, params.RequiredSpace, false, {}, error);
+ }
+ if (!allocated) {
throw TExConfigError() << "group allocation failed Error# " << error.ErrorMessage
<< " groupDefinition# " << dumpGroupDefinition();
}
diff --git a/ydb/core/blobstorage/nodewarden/distconf_invoke_static_group.cpp b/ydb/core/blobstorage/nodewarden/distconf_invoke_static_group.cpp
index 8710dc9eb78..6c2eb0cf1bd 100644
--- a/ydb/core/blobstorage/nodewarden/distconf_invoke_static_group.cpp
+++ b/ydb/core/blobstorage/nodewarden/distconf_invoke_static_group.cpp
@@ -251,6 +251,7 @@ namespace NKikimr::NStorage {
.ConvertToDonor = cmd.GetConvertToDonor(),
.IgnoreVSlotQuotaCheck = cmd.GetIgnoreVSlotQuotaCheck(),
.AllowUnusableDisks = cmd.GetAllowUnusableDisks(),
+ .SettleOnlyOnOperationalDisks = cmd.GetSettleOnlyOnOperationalDisks(),
.IsSelfHealReasonDecommit = cmd.GetIsSelfHealReasonDecommit(),
.BridgePileId = bridgePileId,
.BridgeProxyGroupId = bridgeProxyGroupId,
diff --git a/ydb/core/blobstorage/nodewarden/distconf_ut.cpp b/ydb/core/blobstorage/nodewarden/distconf_ut.cpp
index 044f7264bef..7f61fb5d6af 100644
--- a/ydb/core/blobstorage/nodewarden/distconf_ut.cpp
+++ b/ydb/core/blobstorage/nodewarden/distconf_ut.cpp
@@ -835,6 +835,10 @@ Y_UNIT_TEST_SUITE(TDistconfStaticGroupSelfHealTest) {
node->MutableLocation()->SetDataCenter(dataCenter);
node->MutableLocation()->SetRack(rack);
}
+
+ auto *baseNode = BaseConfig.AddNode();
+ baseNode->SetNodeId(nodeId);
+ baseNode->SetConnected(true);
}
void AddCandidatePDisk(ui32 nodeId, ui32 pdiskId) {
@@ -949,6 +953,26 @@ Y_UNIT_TEST_SUITE(TDistconfStaticGroupSelfHealTest) {
}
UNIT_FAIL("PDisk not found");
}
+
+ void SetNodeConnected(ui32 nodeId, bool connected) {
+ for (auto& node : *BaseConfig.MutableNode()) {
+ if (node.GetNodeId() == nodeId) {
+ node.SetConnected(connected);
+ return;
+ }
+ }
+ UNIT_FAIL("Node not found");
+ }
+
+ void SetPDiskState(ui32 nodeId, NKikimrBlobStorage::TPDiskState::E state) {
+ for (auto& pdisk : *BaseConfig.MutablePDisk()) {
+ if (pdisk.GetNodeId() == nodeId) {
+ pdisk.MutablePDiskMetrics()->SetState(state);
+ return;
+ }
+ }
+ UNIT_FAIL("PDisk not found");
+ }
};
NKikimrBlobStorage::TGroupGeometry Geometry(ui32 numFailDomains) {
@@ -960,7 +984,8 @@ Y_UNIT_TEST_SUITE(TDistconfStaticGroupSelfHealTest) {
}
void Reallocate(TSetup& s, const NProtoBuf::RepeatedField<ui32>& allowedNodeIds, bool applyNodeAllowList,
- i32 erasureSpecies = TBlobStorageGroupType::ErasureNone, ui32 numFailDomains = 1, bool allowUnusableDisks = false) {
+ i32 erasureSpecies = TBlobStorageGroupType::ErasureNone, ui32 numFailDomains = 1,
+ bool allowUnusableDisks = false, bool settleOnlyOnOperationalDisks = false) {
auto *selfManagementConfig = s.Config.MutableSelfManagementConfig();
selfManagementConfig->MutableGeometry()->CopyFrom(Geometry(numFailDomains));
selfManagementConfig->SetPDiskType(NKikimrBlobStorage::EPDiskType::ROT);
@@ -980,6 +1005,7 @@ Y_UNIT_TEST_SUITE(TDistconfStaticGroupSelfHealTest) {
.BaseConfig = &s.BaseConfig,
.IgnoreVSlotQuotaCheck = true,
.AllowUnusableDisks = allowUnusableDisks,
+ .SettleOnlyOnOperationalDisks = settleOnlyOnOperationalDisks,
.ApplySelfHealNodeAllowList = applyNodeAllowList,
});
}
@@ -1042,6 +1068,46 @@ Y_UNIT_TEST_SUITE(TDistconfStaticGroupSelfHealTest) {
UNIT_ASSERT_NO_EXCEPTION(Reallocate(s, NodeIds({}), /*applyNodeAllowList=*/ true));
}
+ Y_UNIT_TEST(PrefersOperationalPDisk) {
+ TSetup s = MakeSetup();
+ s.SetNodeConnected(2, false);
+ s.SetNodeConnected(4, false);
+ s.SetNodeConnected(5, false);
+ Reallocate(s, NodeIds({}), false);
+ UNIT_ASSERT_VALUES_EQUAL(s.GetGroupVDiskNode(), 3u);
+ }
+
+ Y_UNIT_TEST(FallsBackToNonOperationalPDiskByDefault) {
+ TSetup s = MakeSetup();
+ for (ui32 nodeId = 2; nodeId <= 5; ++nodeId) {
+ s.SetNodeConnected(nodeId, false);
+ }
+ UNIT_ASSERT_NO_EXCEPTION(Reallocate(s, NodeIds({}), false));
+ }
+
+ Y_UNIT_TEST(FailsWithoutOperationalPDiskWhenRequested) {
+ TSetup s = MakeSetup();
+ for (ui32 nodeId = 2; nodeId <= 5; ++nodeId) {
+ s.SetNodeConnected(nodeId, false);
+ }
+ UNIT_ASSERT_EXCEPTION(
+ Reallocate(s, NodeIds({}), false, TBlobStorageGroupType::ErasureNone, 1, false,
+ /*settleOnlyOnOperationalDisks=*/ true),
+ NKikimr::NStorage::TDistributedConfigKeeper::TExConfigError);
+ }
+
+ Y_UNIT_TEST(RejectsNonNormalPDiskWhenOperationalRequired) {
+ TSetup s = MakeSetup();
+ s.SetPDiskState(2, NKikimrBlobStorage::TPDiskState::OpenFileError);
+ for (ui32 nodeId = 3; nodeId <= 5; ++nodeId) {
+ s.SetNodeConnected(nodeId, false);
+ }
+ UNIT_ASSERT_EXCEPTION(
+ Reallocate(s, NodeIds({}), false, TBlobStorageGroupType::ErasureNone, 1, false,
+ /*settleOnlyOnOperationalDisks=*/ true),
+ NKikimr::NStorage::TDistributedConfigKeeper::TExConfigError);
+ }
+
Y_UNIT_TEST(Block42KeepsExistingVDisksOnNonAllowedNodes) {
TSetup s = MakeBlock42Setup();
Reallocate(s, NodeIds({10}), /*applyNodeAllowList=*/ true, TBlobStorageGroupType::Erasure4Plus2Block, /*numFailDomains=*/ 8);
diff --git a/ydb/core/kafka_proxy/ut/ut_protocol.cpp b/ydb/core/kafka_proxy/ut/ut_protocol.cpp
index 755671ad22e..9524560a77d 100644
--- a/ydb/core/kafka_proxy/ut/ut_protocol.cpp
+++ b/ydb/core/kafka_proxy/ut/ut_protocol.cpp
@@ -2824,52 +2824,73 @@ Y_UNIT_TEST_SUITE(KafkaProtocol) {
topicFullPath << "/Root/" << topic;
NYdb::NTopic::TTopicClient pqClient(*testServer.Driver);
- CreateTopic(pqClient, topicFullPath, 1, {"consumer1"}, /*retention_sec = */ 1);
+ CreateTopic(pqClient, topicFullPath, 1, {"consumer1"}, /*retention_sec = */ 1);
- NYdb::NTopic::TWriteSessionSettings wSSettings{topicFullPath, "producer1", ""};
- wSSettings.Codec(NTopic::ECodec::RAW);
- auto writeSession = pqClient.CreateSimpleBlockingWriteSession(wSSettings);
-
- WriteMessagesWithKeys(writeSession, {{"key-1", 7_MB}}, 3);
- WriteMessagesWithKeys(writeSession, {{"key-new", 100}}, 20);
- Sleep(TDuration::Seconds(15));
+ NYdb::NTopic::TWriteSessionSettings wSSettings{topicFullPath, "producer1", ""};
+ wSSettings.Codec(NTopic::ECodec::RAW);
+ auto writeSession = pqClient.CreateSimpleBlockingWriteSession(wSSettings);
- NYdb::NTopic::TReadSessionSettings rSSettings{.ConsumerName_ = "consumer1"};
- rSSettings.AppendTopics({topicFullPath});
- auto readSession = pqClient.CreateReadSession(rSSettings);
- for (ui32 triesCount = 3; triesCount != 0;) {
- auto results = Read(readSession, false);
- if (results.empty()) {
- triesCount--;
- Sleep(TDuration::MilliSeconds(250));
- continue;
- }
- for (auto& dataEvent : results) {
- for (const auto& msg : dataEvent.GetMessages()) {
- UNIT_ASSERT_GE(msg.GetOffset(), 1);
- break;
- }
+ auto waitStartOffsetAtLeast = [&](ui64 minStartOffset, TDuration timeout, const TString& stage) {
+ const auto deadline = TInstant::Now() + timeout;
+ std::optional<ui64> lastStartOffset;
+ while (TInstant::Now() < deadline) {
+ auto describe = pqClient.DescribeTopic(
+ topicFullPath,
+ NYdb::NTopic::TDescribeTopicSettings().IncludeStats(true)).GetValueSync();
+ UNIT_ASSERT_C(describe.IsSuccess(), describe.GetIssues().ToString());
+ const auto& partitions = describe.GetTopicDescription().GetPartitions();
+ UNIT_ASSERT_VALUES_EQUAL(partitions.size(), 1);
+ const auto& stats = partitions[0].GetPartitionStats();
+ UNIT_ASSERT(stats.has_value());
+ lastStartOffset = stats->GetStartOffset();
+ Cerr << "===[" << stage << "] startOffset=" << *lastStartOffset
+ << " endOffset=" << stats->GetEndOffset() << Endl;
+ if (*lastStartOffset >= minStartOffset) {
+ return;
}
+ Sleep(TDuration::MilliSeconds(500));
}
- auto msg = client.AlterConfigs(
- {TTopicConfig(topic, 1, std::nullopt, std::nullopt, {{"cleanup.policy", "compact"}})});
- UNIT_ASSERT_VALUES_EQUAL(msg->Responses[0].ErrorCode, NONE_ERROR);
- WriteMessagesWithKeys(writeSession, {{"key-1", 6_MB}}, 10);
- for (ui32 triesCount = 30; triesCount != 0;) {
- auto results = Read(readSession, false);
- if (results.empty()) {
- triesCount--;
- Sleep(TDuration::MilliSeconds(500));
- continue;
+ UNIT_ASSERT_C(
+ false,
+ TStringBuilder() << "Timed out waiting for startOffset >= " << minStartOffset
+ << " at stage " << stage
+ << ", last startOffset="
+ << (lastStartOffset ? ToString(*lastStartOffset) : "n/a"));
+ };
+
+ WriteMessagesWithKeys(writeSession, {{"key-1", 7_MB}}, 3);
+ WriteMessagesWithKeys(writeSession, {{"key-new", 100}}, 20);
+ waitStartOffsetAtLeast(1, TDuration::Seconds(60), "retention");
+
+ auto msg = client.AlterConfigs(
+ {TTopicConfig(topic, 1, std::nullopt, std::nullopt, {{"cleanup.policy", "compact"}})});
+ UNIT_ASSERT_VALUES_EQUAL(msg->Responses[0].ErrorCode, NONE_ERROR);
+ WriteMessagesWithKeys(writeSession, {{"key-1", 6_MB}}, 10);
+ waitStartOffsetAtLeast(2, TDuration::Seconds(60), "compaction");
+
+ NYdb::NTopic::TReadSessionSettings rSSettings{.ConsumerName_ = "consumer1"};
+ rSSettings.AppendTopics({topicFullPath});
+ auto readSession = pqClient.CreateReadSession(rSSettings);
+ bool seenMessage = false;
+ for (ui32 triesCount = 30; triesCount != 0 && !seenMessage; --triesCount) {
+ auto results = Read(readSession, false);
+ if (results.empty()) {
+ Sleep(TDuration::MilliSeconds(500));
+ continue;
+ }
+ for (auto& dataEvent : results) {
+ for (const auto& message : dataEvent.GetMessages()) {
+ UNIT_ASSERT_GT(message.GetOffset(), 1);
+ seenMessage = true;
+ break;
}
- for (auto& dataEvent : results) {
- for (const auto& msg : dataEvent.GetMessages()) {
- UNIT_ASSERT_GT(msg.GetOffset(), 1);
- break;
- }
+ if (seenMessage) {
+ break;
}
}
}
+ UNIT_ASSERT_C(seenMessage, "No messages read after compaction gap");
+ }
Y_UNIT_TEST(DescribeConfigsScenario) {
TInsecureTestServer testServer("2");
diff --git a/ydb/core/mind/bscontroller/cmds_storage_pool.cpp b/ydb/core/mind/bscontroller/cmds_storage_pool.cpp
index e5cb792503e..80b43b185d8 100644
--- a/ydb/core/mind/bscontroller/cmds_storage_pool.cpp
+++ b/ydb/core/mind/bscontroller/cmds_storage_pool.cpp
@@ -724,6 +724,7 @@ namespace NKikimr::NBsController {
node.SetLastDisconnectTimestamp(it->second.LastDisconnectTimestamp.GetValue());
node.SetLastSeenTimestamp(it->second.LastConnectTimestamp <= it->second.LastDisconnectTimestamp ?
it->second.LastDisconnectTimestamp.GetValue() : Timestamp.GetValue());
+ node.SetConnected(bool(it->second.ConnectedServerId));
}
auto *key = node.MutableHostKey();
key->SetFqdn(std::get<0>(hostId));
diff --git a/ydb/core/mind/bscontroller/self_heal.cpp b/ydb/core/mind/bscontroller/self_heal.cpp
index 4dfee75874b..276126666f0 100644
--- a/ydb/core/mind/bscontroller/self_heal.cpp
+++ b/ydb/core/mind/bscontroller/self_heal.cpp
@@ -182,6 +182,7 @@ namespace NKikimr::NBsController {
VDiskIDFromVDiskID(*VDiskToReplace, cmd->MutableVDiskId());
cmd->SetConvertToDonor(DonorMode);
cmd->SetAllowUnusableDisks(true);
+ cmd->SetSettleOnlyOnOperationalDisks(true);
cmd->SetIsSelfHealReasonDecommit(IsSelfHealReasonDecommit);
cmd->SetFromSelfHeal(true);
Send(MakeBlobStorageNodeWardenID(SelfId().NodeId()), ev.release());
diff --git a/ydb/core/persqueue/pqrb/read_balancer.cpp b/ydb/core/persqueue/pqrb/read_balancer.cpp
index a1bb23dbf10..7cf549b5738 100644
--- a/ydb/core/persqueue/pqrb/read_balancer.cpp
+++ b/ydb/core/persqueue/pqrb/read_balancer.cpp
@@ -920,7 +920,7 @@ void TPersQueueReadBalancer::Handle(TEvPQ::TEvMirrorTopicDescription::TPtr& ev,
}
void TPersQueueReadBalancer::BroadcastPartitionError(const TString& message, const NKikimrServices::EServiceKikimr service, const TActorContext& ctx) {
- const TInstant now = TInstant::Now();
+ const TInstant now = TAppData::TimeProvider->Now();
for (const auto& [_, pipeLocation] : TabletPipes) {
THolder<TEvPQ::TBroadcastPartitionError> ev{new TEvPQ::TBroadcastPartitionError(message, service, now)};
NTabletPipe::SendData(ctx, pipeLocation.PipeActor, ev.Release());
@@ -983,7 +983,7 @@ void TPersQueueReadBalancer::ProcessMLPGetPartitionRequests(const TActorContext&
}
TReceiveAttemptPartitionsWriteBatch batch;
- const auto now = TInstant::Now();
+ const auto now = TAppData::TimeProvider->Now();
while (!PendingMLPGetPartitionRequests.empty()) {
auto ev = std::move(PendingMLPGetPartitionRequests.front());
@@ -1053,7 +1053,7 @@ void TPersQueueReadBalancer::CleanupReceiveAttemptPartitions(const TActorContext
return;
}
- auto deletes = MLPBalancer->CollectExpiredReceiveAttemptPartitions(TInstant::Now());
+ auto deletes = MLPBalancer->CollectExpiredReceiveAttemptPartitions(TAppData::TimeProvider->Now());
if (deletes.empty()) {
return;
}
diff --git a/ydb/core/persqueue/pqrb/read_balancer__balancing.cpp b/ydb/core/persqueue/pqrb/read_balancer__balancing.cpp
index b91d5afe224..545eec84d69 100644
--- a/ydb/core/persqueue/pqrb/read_balancer__balancing.cpp
+++ b/ydb/core/persqueue/pqrb/read_balancer__balancing.cpp
@@ -1345,7 +1345,7 @@ void TConsumer::Balance(const TActorContext& ctx) {
return;
}
- auto startTime = TInstant::Now();
+ auto startTime = TAppData::TimeProvider->Now();
// We try to balance the partitions by sessions that clearly want to read them, even if the distribution is not uniform.
for (auto& [_, family] : Families) {
@@ -1502,7 +1502,7 @@ void TConsumer::Balance(const TActorContext& ctx) {
}
}
- auto duration = TInstant::Now() - startTime;
+ auto duration = TAppData::TimeProvider->Now() - startTime;
YDB_LOG_DEBUG("Balancing",
{"logPrefix", LogPrefix()},
{"duration", duration});
diff --git a/ydb/core/persqueue/pqtablet/partition/autopartitioning_manager.cpp b/ydb/core/persqueue/pqtablet/partition/autopartitioning_manager.cpp
index 5219570031e..b1704a5c22a 100644
--- a/ydb/core/persqueue/pqtablet/partition/autopartitioning_manager.cpp
+++ b/ydb/core/persqueue/pqtablet/partition/autopartitioning_manager.cpp
@@ -3,6 +3,7 @@
#include <memory>
#include <type_traits>
+#include <ydb/core/base/appdata_fwd.h>
#include <ydb/core/base/feature_flags.h>
#include <ydb/core/persqueue/common/last_counter.h>
#include <ydb/core/persqueue/common/partition_id.h>
@@ -12,6 +13,8 @@
#include <ydb/core/persqueue/public/utils.h>
#include <ydb/core/persqueue/writer/source_id_encoding.h> // TODO move to pubcli or common
+#include <library/cpp/time_provider/time_provider.h>
+
#include <util/generic/strbuf.h>
namespace NKikimr::NPQ {
@@ -20,7 +23,7 @@ using TSlidingWindow = NSlidingWindow::TSlidingWindow<NSlidingWindow::TSumOperat
namespace {
void DoCleanUp(std::unordered_map<TString, TSlidingWindow>& writtenBytes) {
- auto now = TInstant::Now();
+ auto now = TAppData::TimeProvider->Now();
for (auto it = writtenBytes.begin(); it != writtenBytes.end();) {
auto& counter = it->second;
@@ -111,7 +114,7 @@ protected:
}
auto key128 = NKikimr::NPQ::AsInt<TUint128>(key);
- auto now = TInstant::Now();
+ auto now = TAppData::TimeProvider->Now();
SumMetric->Update(delta, now);
@@ -182,7 +185,7 @@ protected:
return NKikimrPQ::EScaleStatus::NORMAL;
}
- auto now = TInstant::Now();
+ auto now = TAppData::TimeProvider->Now();
const auto usagePercent = SumMetric->GetValue() * 100.0 / Config.GetPartitionStrategy().GetScaleThresholdSeconds() / MaxUsagePerSec;
const auto sourceIdWindow = TDuration::Seconds(std::min<ui32>(5, Config.GetPartitionStrategy().GetScaleThresholdSeconds()));
const auto sourceIdCount = SourceIdCounter.Count(now - sourceIdWindow);
@@ -266,7 +269,7 @@ protected:
}
std::vector<std::pair<TString, ui64>> GetSerializedMetrics() {
- auto now = TInstant::Now();
+ auto now = TAppData::TimeProvider->Now();
std::vector<std::pair<TString, ui64>> result;
for (auto& [sourceIdHash, counter] : PerSourceMetrics) {
diff --git a/ydb/core/persqueue/pqtablet/partition/mlp/mlp_consumer.cpp b/ydb/core/persqueue/pqtablet/partition/mlp/mlp_consumer.cpp
index 8a4664092dd..27af489c8a8 100644
--- a/ydb/core/persqueue/pqtablet/partition/mlp/mlp_consumer.cpp
+++ b/ydb/core/persqueue/pqtablet/partition/mlp/mlp_consumer.cpp
@@ -649,7 +649,7 @@ void TConsumerActor::ScheduleProcessing() {
return;
}
- const bool force = NextForcedProcessingTime <= TInstant::Now();
+ const bool force = NextForcedProcessingTime <= TAppData::TimeProvider->Now();
const bool dlqEmptyOrAlreadyProcessing = DLQMoverActorId || Storage->DLQEmpty();
if (!force &&
ReadRequestsQueue.empty() &&
@@ -663,7 +663,7 @@ void TConsumerActor::ScheduleProcessing() {
return;
}
- auto now = TInstant::Now();
+ auto now = TAppData::TimeProvider->Now();
TDuration delay = NextProcessingTime > now && dlqEmptyOrAlreadyProcessing
? NextProcessingTime - now
: TDuration::Zero();
@@ -674,8 +674,8 @@ void TConsumerActor::ScheduleProcessing() {
void TConsumerActor::ProcessEventQueue() {
LOG_D("ProcessEventQueue");
- NextProcessingTime = TInstant::Now() + TDuration::MilliSeconds(AppData()->PQConfig.GetMLPBatchWindowMilliSeconds());
- NextForcedProcessingTime = TInstant::Now() + TDuration::Seconds(1);
+ NextProcessingTime = TAppData::TimeProvider->Now() + TDuration::MilliSeconds(AppData()->PQConfig.GetMLPBatchWindowMilliSeconds());
+ NextForcedProcessingTime = TAppData::TimeProvider->Now() + TDuration::Seconds(1);
for (auto& ev : CommitRequestsQueue) {
absl::flat_hash_map<ui64, EOperationResult> offsetResults;
@@ -743,7 +743,7 @@ void TConsumerActor::ProcessEventQueue() {
Storage->ProccessDeadlines();
LOG_T("AfterDeadlinesDump: " << Storage->DebugString());
- auto now = TInstant::Now();
+ auto now = TAppData::TimeProvider->Now();
TStorage::TPosition position;
std::deque<TEvPQ::TEvMLPReadRequest::TPtr> readRequestsQueue;
@@ -886,7 +886,7 @@ size_t TConsumerActor::RequiredToFetchMessageCount() const {
bool TConsumerActor::FetchMessagesIfNeeded() {
if (Storage->GetMessageCount() > 0) {
- LastTimeWithMessages = TInstant::Now();
+ LastTimeWithMessages = TAppData::TimeProvider->Now();
NotifyPQRB();
}
@@ -997,7 +997,7 @@ void TConsumerActor::Handle(TEvPersQueue::TEvResponse::TPtr& ev) {
}
if (logicalMessageCount > 0) {
- LastTimeWithMessages = TInstant::Now();
+ LastTimeWithMessages = TAppData::TimeProvider->Now();
NotifyPQRB();
}
if (CurrentStateFunc() == &TConsumerActor::StateWork) {
@@ -1111,7 +1111,7 @@ bool TConsumerActor::UseForReading() const {
if (!Storage->HasUnlockedMessageGroupsId()) {
return false;
}
- return LastTimeWithMessages > TInstant::Now() - NoMessagesTimeout || LastCommittedOffset < PartitionEndOffset;
+ return LastTimeWithMessages > TAppData::TimeProvider->Now() - NoMessagesTimeout || LastCommittedOffset < PartitionEndOffset;
}
void TConsumerActor::NotifyPQRB(bool force) {
diff --git a/ydb/core/persqueue/pqtablet/partition/partition_write.cpp b/ydb/core/persqueue/pqtablet/partition/partition_write.cpp
index 595f8c13cde..2d32874cacb 100644
--- a/ydb/core/persqueue/pqtablet/partition/partition_write.cpp
+++ b/ydb/core/persqueue/pqtablet/partition/partition_write.cpp
@@ -627,7 +627,7 @@ void TPartition::UpdateAvgWriteBytes(ui64 size, const TInstant& now)
}
void TPartition::ChangeScaleStatusIfNeeded(NKikimrPQ::EScaleStatus scaleStatus) {
- auto now = TInstant::Now();
+ auto now = TAppData::TimeProvider->Now();
if (scaleStatus == ScaleStatus || LastScaleRequestTime + TDuration::Seconds(SCALE_REQUEST_REPEAT_MIN_SECONDS) > now) {
return;
}
diff --git a/ydb/core/persqueue/public/inflight_limiter.cpp b/ydb/core/persqueue/public/inflight_limiter.cpp
index 414557ed599..db9322a6748 100644
--- a/ydb/core/persqueue/public/inflight_limiter.cpp
+++ b/ydb/core/persqueue/public/inflight_limiter.cpp
@@ -1,7 +1,10 @@
#include "inflight_limiter.h"
+#include <ydb/core/base/appdata_fwd.h>
#include <ydb/library/actors/core/log.h>
+#include <library/cpp/time_provider/time_provider.h>
+
namespace NKikimr::NPQ {
TInFlightController::TInFlightController()
@@ -60,7 +63,7 @@ bool TInFlightController::Add(ui64 Offset, ui64 Size) {
bool isMemoryLimitReached = IsMemoryLimitReached();
if (!wasMemoryLimitReached && isMemoryLimitReached && InFlightFullSince == TInstant::Zero()) {
- InFlightFullSince = TInstant::Now();
+ InFlightFullSince = TAppData::TimeProvider->Now();
}
return !isMemoryLimitReached;
@@ -88,7 +91,7 @@ bool TInFlightController::Remove(ui64 Offset) {
auto isMemoryLimitReached = IsMemoryLimitReached();
if (wasMemoryLimitReached && !isMemoryLimitReached && InFlightFullSince != TInstant::Zero()) {
- auto now = TInstant::Now();
+ auto now = TAppData::TimeProvider->Now();
SlidingWindow.Update(now - InFlightFullSince, now);
InFlightFullSince = TInstant::Zero();
}
@@ -108,7 +111,7 @@ bool TInFlightController::IsMemoryLimitReached() const {
TDuration TInFlightController::GetLimitReachedDuration() {
TDuration carry = TDuration::Zero();
if (InFlightFullSince != TInstant::Zero()) {
- carry = TInstant::Now() - InFlightFullSince;
+ carry = TAppData::TimeProvider->Now() - InFlightFullSince;
}
return Min(SLIDING_WINDOW_SIZE, SlidingWindow.GetValue() + carry);
diff --git a/ydb/core/persqueue/public/mlp/mlp_writer.cpp b/ydb/core/persqueue/public/mlp/mlp_writer.cpp
index a106dd6f3b3..434e4086e4f 100644
--- a/ydb/core/persqueue/public/mlp/mlp_writer.cpp
+++ b/ydb/core/persqueue/public/mlp/mlp_writer.cpp
@@ -76,7 +76,7 @@ size_t SerializeTo(TWriterSettings::TMessage& item, ::NKikimrClient::TPersQueueP
cmdWrite.SetSourceId("");
cmdWrite.SetDisableDeduplication(true);
- cmdWrite.SetCreateTimeMS(TInstant::Now().MilliSeconds());
+ cmdWrite.SetCreateTimeMS(TAppData::TimeProvider->Now().MilliSeconds());
cmdWrite.SetUncompressedSize(item.MessageBody.size());
cmdWrite.SetExternalOperation(true);
if (item.MessageGroupId) {
diff --git a/ydb/core/persqueue/writer/partition_chooser_impl__table_helper.h b/ydb/core/persqueue/writer/partition_chooser_impl__table_helper.h
index f2488f898f7..9fe99a80a74 100644
--- a/ydb/core/persqueue/writer/partition_chooser_impl__table_helper.h
+++ b/ydb/core/persqueue/writer/partition_chooser_impl__table_helper.h
@@ -12,6 +12,8 @@
#include <ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/result/result.h>
+#include <library/cpp/time_provider/time_provider.h>
+
namespace NKikimr::NPQ::NPartitionChooser {
@@ -179,7 +181,7 @@ public:
}
if (CreateTime == 0) {
- CreateTime = TInstant::Now().MilliSeconds();
+ CreateTime = TAppData::TimeProvider->Now().MilliSeconds();
}
return true;
@@ -228,7 +230,7 @@ public:
.Uint64(CreateTime)
.Build()
.AddParam("$AccessTime")
- .Uint64(TInstant::Now().MilliSeconds())
+ .Uint64(TAppData::TimeProvider->Now().MilliSeconds())
.Build()
.AddParam("$SeqNo")
.Uint64(seqNo.value_or(0))
diff --git a/ydb/core/protos/blobstorage_config.proto b/ydb/core/protos/blobstorage_config.proto
index 7977e65041b..b3b7ad78845 100644
--- a/ydb/core/protos/blobstorage_config.proto
+++ b/ydb/core/protos/blobstorage_config.proto
@@ -890,6 +890,7 @@ message TBaseConfig {
uint64 LastDisconnectTimestamp = 6; // TInstant
uint64 LastSeenTimestamp = 7; // when seen working for the last time
ENodeType Type = 8;
+ bool Connected = 9;
}
message TDevice {
string SerialNumber = 1;
diff --git a/ydb/core/protos/blobstorage_distributed_config.proto b/ydb/core/protos/blobstorage_distributed_config.proto
index f0411a11f4d..4005990f2d9 100644
--- a/ydb/core/protos/blobstorage_distributed_config.proto
+++ b/ydb/core/protos/blobstorage_distributed_config.proto
@@ -199,6 +199,7 @@ message TEvNodeConfigInvokeOnRoot {
bool IsSelfHealReasonDecommit = 7;
bool FromSelfHeal = 8;
bool AllowUnusableDisks = 9;
+ bool SettleOnlyOnOperationalDisks = 10;
}
// Regenerate configuration so the slain VDisk is no more reported as DESTROY one in the list.
diff --git a/ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/table/table.h b/ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/table/table.h
index 95554674abb..71f5320d142 100644
--- a/ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/table/table.h
+++ b/ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/table/table.h
@@ -391,6 +391,7 @@ public:
Whitespace,
Standard,
Keyword,
+ Alphanumeric,
};
struct TAnalyzers {
diff --git a/ydb/public/sdk/cpp/src/client/table/out.cpp b/ydb/public/sdk/cpp/src/client/table/out.cpp
index 0cfc812cd1d..8662e080734 100644
--- a/ydb/public/sdk/cpp/src/client/table/out.cpp
+++ b/ydb/public/sdk/cpp/src/client/table/out.cpp
@@ -97,6 +97,9 @@ Y_DECLARE_OUT_SPEC(, NYdb::NTable::TFulltextIndexSettings::ETokenizer, stream, v
case NYdb::NTable::TFulltextIndexSettings::ETokenizer::Keyword:
stream << "keyword";
break;
+ case NYdb::NTable::TFulltextIndexSettings::ETokenizer::Alphanumeric:
+ stream << "alphanumeric";
+ break;
case NYdb::NTable::TFulltextIndexSettings::ETokenizer::Unspecified:
stream << "unspecified";
break;
diff --git a/ydb/public/sdk/cpp/src/client/table/table.cpp b/ydb/public/sdk/cpp/src/client/table/table.cpp
index 7c7fdc0487d..5df0f443a06 100644
--- a/ydb/public/sdk/cpp/src/client/table/table.cpp
+++ b/ydb/public/sdk/cpp/src/client/table/table.cpp
@@ -3040,6 +3040,8 @@ TFulltextIndexSettings::TAnalyzers FromProto(const Ydb::Table::FulltextIndexSett
return ETokenizer::Standard;
case Ydb::Table::FulltextIndexSettings::KEYWORD:
return ETokenizer::Keyword;
+ case Ydb::Table::FulltextIndexSettings::ALPHANUMERIC:
+ return ETokenizer::Alphanumeric;
default:
return ETokenizer::Unspecified;
}
@@ -3093,6 +3095,8 @@ Ydb::Table::FulltextIndexSettings::Analyzers ToProto(const TFulltextIndexSetting
return Ydb::Table::FulltextIndexSettings::STANDARD;
case ETokenizer::Keyword:
return Ydb::Table::FulltextIndexSettings::KEYWORD;
+ case ETokenizer::Alphanumeric:
+ return Ydb::Table::FulltextIndexSettings::ALPHANUMERIC;
case ETokenizer::Unspecified:
return Ydb::Table::FulltextIndexSettings::TOKENIZER_UNSPECIFIED;
}
diff --git a/ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/manager.cpp b/ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/manager.cpp
index ee78bd7b199..4385b72fba8 100644
--- a/ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/manager.cpp
+++ b/ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/manager.cpp
@@ -66,6 +66,10 @@ NMetadata::NModifications::TOperationParsingResult TResourcePoolClassifierManage
const TString value = std::visit(TClassifierSettings::TExtractor(), setting);
if (property == TResourcePoolClassifierConfig::TDecoder::Rank) {
result.SetColumn(property, NMetadata::NInternal::TYDBValue::Int64(FromString<i64>(value)));
+ } else if (property == "has_stream") {
+ if (!value.empty()) {
+ configJson.InsertValue(property, value == "true");
+ }
} else {
configJson.InsertValue(property, value);
}
diff --git a/ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/object.cpp b/ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/object.cpp
index 6efd775c162..8defd0591f3 100644
--- a/ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/object.cpp
+++ b/ydb/services/workload_manager/metadata_subscription/resource_pool_classifier/object.cpp
@@ -103,7 +103,7 @@ void TResourcePoolClassifierConfig::EnsureSettings() {
continue;
}
try {
- std::visit(TClassifierSettings::TParser{value.GetString()}, it->second);
+ std::visit(TClassifierSettings::TParser{value.GetStringRobust()}, it->second);
} catch (...) {
continue;
}
diff --git a/ydb/services/workload_manager/ut/common/query_classifier_ut_common.h b/ydb/services/workload_manager/ut/common/query_classifier_ut_common.h
index 12058b2ea72..4d1f321a189 100644
--- a/ydb/services/workload_manager/ut/common/query_classifier_ut_common.h
+++ b/ydb/services/workload_manager/ut/common/query_classifier_ut_common.h
@@ -43,7 +43,7 @@ inline TResourcePoolClassifierConfig MakeClassifierConfig(
json["has_path"] = *hasPath;
}
if (hasStream) {
- json["has_stream"] = *hasStream ? "true" : "false";
+ json["has_stream"] = *hasStream;
}
if (action) {
json["action"] = *action;