gpt4 book ai didi

aerospike - 调用 Truncate 后写入操作(代码 22)出错。 - C#客户端

转载 作者:行者123 更新时间:2023-12-02 13:31:42 29 4
gpt4 key购买 nike

当我尝试使用 Aerospike 客户端 Write() 时,出现此错误:
22 AS_PROTO_RESULT_FAIL_FORBIDDEN

仅当在 Truncate() 之后调用 Write 操作且仅针对特定键时,才会发生该错误。我尝试过:

  • 更改键类型(字符串、长整型、小数字、大数字)
  • 更改传递的键类型(值、长整型、字符串)
  • 更改 WritePolicy 的重试次数
  • 在每次写入之前添加延迟(200ms、500ms)
  • 生成全新的 key (GUID.NewGuid().ToString())

没有人解决这个问题,所以我认为唯一的原因是截断操作。

该错误是系统性的;对于同一组 key ,在相同的 key 上完全相同。

在调用截断之后,我等待 X 秒并检查控制台管理,集合上的对象编号为“0”时,也会发生该错误。

我必须等待几分钟(1 到 5 分钟)才能确保运行该进程后问题就消失了。

集群有3个节点,副本因子为2。SSD持久化

我正在使用 NuGet C# Aerospike.Client v 3.4.4

在单个本地节点(docker,内存中)上运行该进程不会给出任何错误。

我如何知道 Truncate() 进程(其背后的删除操作)何时完全终止并且我可以安全地使用 Set ?

[解决办法]
正如建议的,我们的开发人员检查了时间跨度同步。他发现机器镜像上未启用 NTP(错误地)。
启用它。再次测试。不再有错误。

谢谢

亚历克斯

最佳答案

听起来像是跨节点时间同步的潜在问题,请确保您的 ntp 设置正确...这将是我目前唯一的猜测,特别是当您提到它确实在单个节点上工作时。 truncate 命令将捕获当前时间(如果您未指定时间),并使用它来防止写入该时间“之前”写入的记录。检查(从我的头顶开始,抱歉,如果不完全是这样)/opt/aerospike/smd/truncate.smd 以查看每个节点上截断命令的时间戳并检查不同节点之间的时间。

[感谢@kporter 的评论。因此,所有 truncate.smd 文件中的时间都是相同的,但机器之间的时间差异仍然会导致某些节点的写入失败]

关于aerospike - 调用 Truncate 后写入操作(代码 22)出错。 - C#客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46492540/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com