Pavel Tupitsyn created IGNITE-25360: ---------------------------------------
Summary: .NET: IndexOutOfRangeException in data streamer with receiver on empty key Key: IGNITE-25360 URL: https://issues.apache.org/jira/browse/IGNITE-25360 Project: Ignite Issue Type: Bug Components: data streamer ai3, platforms ai3, thin clients ai3 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 3.1 If I provide an empty IgniteTuple in the keySelector (which is a user error), IndexOutOfRangeException is thrown: {code} IndexOutOfRangeException at Apache.Ignite.Internal.Table.Serialization.ByteSpanExtensions.SetBit(Span`1 span, Int32 index) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/ByteSpanExtensions.cs:line 32 at Apache.Ignite.Internal.Table.Serialization.BinaryTupleBuilderExtensions.AppendNoValue(BinaryTupleBuilder& builder, Span`1 noValueSet) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/BinaryTupleBuilderExtensions.cs:line 35 at Apache.Ignite.Internal.Table.Serialization.TupleSerializerHandler.Write(BinaryTupleBuilder& tupleBuilder, IIgniteTuple record, Schema schema, Boolean keyOnly, Span`1 noValueSet) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/TupleSerializerHandler.cs:line 108 at Apache.Ignite.Internal.Table.Serialization.IRecordSerializerHandler`1.GetKeyColocationHash(Schema schema, T key) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/IRecordSerializerHandler.cs:line 88 at Apache.Ignite.Internal.Table.DataStreamerWithReceiver.<>c__DisplayClass0_0`5.<StreamDataAsync>g__Add|0(TSource item) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/DataStreamerWithReceiver.cs:line 204 at Apache.Ignite.Internal.Table.DataStreamerWithReceiver.StreamDataAsync[TSource,TKey,TPayload,TArg,TResult](IAsyncEnumerable`1 data, Table table, Func`2 keySelector, Func`2 payloadSelector, IRecordSerializerHandler`1 keyWriter, DataStreamerOptions options, Channel`1 resultChannel, IEnumerable`1 units, String receiverClassName, ReceiverExecutionOptions receiverExecutionOptions, TArg receiverArg, CancellationToken cancellationToken) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/DataStreamerWithReceiver.cs:line 133 at Apache.Ignite.Internal.Table.DataStreamerWithReceiver.StreamDataAsync[TSource,TKey,TPayload,TArg,TResult](IAsyncEnumerable`1 data, Table table, Func`2 keySelector, Func`2 payloadSelector, IRecordSerializerHandler`1 keyWriter, DataStreamerOptions options, Channel`1 resultChannel, IEnumerable`1 units, String receiverClassName, ReceiverExecutionOptions receiverExecutionOptions, TArg receiverArg, CancellationToken cancellationToken) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/DataStreamerWithReceiver.cs:line 119 {code} Reproducer: {code} var res = await TupleView.StreamDataAsync( data: ids.ToAsyncEnumerable(), keySelector: _ => new IgniteTuple(), payloadSelector: id => id, receiver: DotNetReceivers.CreateTableAndInsert, receiverArg: tableName, options: new DataStreamerOptions { PageSize = 33 }).ToListAsync(); {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)