1

我尝试使用瘦客户端数据流传输器(.NET apache ignite)删除一些数据,但最终出现异常:

当 AllowOverwrite 为 false 时,DataStreamer 无法删除数据。

我的问题是当我尝试将 AllowOverwrite 更改为 true 时,它​​不受尊重。

using Apache.Ignite.Core;
using Apache.Ignite.Core.Client;

IgniteClientConfiguration _configuration = new()
{
    Endpoints = new[] { "127.0.0.1:10800" }
};

using (var client = Ignition.StartClient(_configuration))
{
    var cache = client.GetOrCreateCache<int, string>("myCache");
    using (var dataStreamer = client.GetDataStreamer<int, string>("myCache"))
    {
        Console.WriteLine($"AllowOverwrite default value: {dataStreamer.Options.AllowOverwrite}");

        // Set AllowOverwrite to true
        dataStreamer.Options.AllowOverwrite = true;
        Console.WriteLine($"AllowOverwrite: {dataStreamer.Options.AllowOverwrite}"); // Set not repected

        dataStreamer.Remove(1);
    }
}

/*
    Results in:
    AllowOverwrite default value: False
    AllowOverwrite: False
    Unhandled exception. Apache.Ignite.Core.Client.IgniteClientException: DataStreamer 
    can't remove data when AllowOverwrite is false.
       at Apache.Ignite.Core.Impl.Client.Datastream.DataStreamerClient`2.Remove(TK key)
*/

笔记:

  • 如果我使用胖客户端而不是瘦客户端,它会按预期工作(但这在我的情况下是不可取的)。
  • 启动服务器节点时,我找不到任何相关配置来启用此选项

关于我在这里缺少什么的任何建议?谢谢

4

1 回答 1

2

您在创建数据流送器后对其进行修改,这是不受支持的。创建实例后,您只能获取其配置的副本。而是提供完整的初始化配置:

var options = new DataStreamerClientOptions {AllowOverwrite = false};
    
using (var streamer = Client.GetDataStreamer<int, object>(cache.Name, options))
{
    ...
}

启动服务器节点时,我找不到任何相关配置来启用此选项

这不是服务器配置,它只是关于数据流。

于 2022-02-02T12:16:42.173 回答