Search code examples
ignite

Ignite 'Streamer is closed with error, Invalid request op code: 8000' when using Data Streaming


I am trying out the Data Streaming feature of Ignite (see https://ignite.apache.org/docs/latest/data-streaming) but even when I am running the very basic example shown on the documentation page I get the following exception:

ApacheIgniteExamplesDemo.DemoWorker[0]
      Apache.Ignite.Core.Client.IgniteClientException: Streamer is closed with error, check inner exception for details.
       ---> System.AggregateException: One or more errors occurred. (One or more errors occurred. (Invalid request op code: 8000))
       ---> System.AggregateException: One or more errors occurred. (Invalid request op code: 8000)
       ---> Apache.Ignite.Core.Client.IgniteClientException: Invalid request op code: 8000
         at Apache.Ignite.Core.Impl.Client.ClientSocket.DecodeResponse[T](BinaryHeapStream stream, Func`2 readFunc, Func`3 errorFunc)
         at Apache.Ignite.Core.Impl.Client.ClientSocket.<>c__DisplayClass33_0`1.<DoOutInOpAsync>b__0(Task`1 responseTask)
         at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
         at System.Threading.Tasks.Task.<>c.<.cctor>b__271_0(Object obj)
         at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
      --- End of stack trace from previous location ---
         at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
         at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) [StatusCode=InvalidOpCode]
         --- End of inner exception stack trace ---
         --- End of inner exception stack trace ---
         --- End of inner exception stack trace ---
         at Apache.Ignite.Core.Impl.Client.Datastream.DataStreamerClient`2.ThrowIfClosed()
         at Apache.Ignite.Core.Impl.Client.Datastream.DataStreamerClient`2.Add(DataStreamerClientEntry`2 entry)
         at Apache.Ignite.Core.Impl.Client.Datastream.DataStreamerClient`2.Add(TK key, TV val)
         at ApacheIgniteExamplesDemo.DemoWorker.DataStreamingExample() in C:\demos\ApacheIgniteDemo\DemoWorker.cs:line 262 [StatusCode=Fail]

I have not been able to find out anything about why the streamer is closed with an error and what "Invalid request op code: 8000" indicates. Any help or suggestion on what might be the problem would be highly appreciated.

I run the following code:

//setting up cache
var cache = _ignite.CreateCache<int, string>(new CacheClientConfiguration
    {
      Name = "cache",
      QueryEntities = new[]
      {
        new QueryEntity(
          typeof(int),
          typeof(string))
        {
          TableName = "table",
        }
      },
      SqlSchema = "PUBLIC",
      CacheMode = CacheMode.Partitioned
    });

//running streamer
using(var streamer = _ignite.GetDataStreamer<int, string>(cache.Name))
{
  for (int i = 0; i < 10000; i++)
    streamer.Add(i, i.ToString());
}

Ignite is running in a docker container with default configuration.


Solution

  • The error message indicates that the feature is not supported by the server node. Thin client data streamer is available since Ignite 2.11 - please make sure to use that or a later version.