1

我正在使用 LDT 地图,起初出现此错误。

com.aerospike.client.AerospikeException: Error Code 1424: LDT-Sub Record Create Error

我能够在 in 的帮助下将其删除,ldt-enabled trueaerospike.conf
现在我遇到了

com.aerospike.client.AerospikeException: Error Code 1422: LDT-Sub Record Open Error

代码片段:

for (Entry<String, Map<String, Object>> myLdtBin: myLdtMap.entrySet()) {
    LargeMap lmap = client.getLargeMap(myWritePolicy, myKey, myLdtBin.getKey() , null);
    lmap.put(myLdtBin.getValue()); //<-- Error here
}

任何指针?

4

2 回答 2

5

Aerospike 在 3.4.1 中为 LDT 进行了主要的稳定性修复。请查看此问题是否仍然出现在 3.4.1 中

此外,推荐使用的数据结构是 LLIST。它由 B+ 树支持,并且是最可扩展的。

于 2015-01-21T19:02:30.860 回答
1

不知道实际问题是什么,但我今天遇到了同样的问题。我正在使用 LSTACK,但在内部它使用 LIST。我的问题是默认 LSTACK 配置在列表元素计数方面非常有限。我试图在 LSTACK 中插入大约 200 个元素,但似乎默认配置最多允许 100 个。看看LDT 配置页面。下面是一个 LSTACK 扩展配置的简单示例:

local userModule = {};

function userModule.adjust_settings( ldtMap )
  local ldt_settings=require('ldt/settings_lstack');
  ldt_settings.use_package( ldtMap, "ListMediumObject" );

  ldt_settings.set_coldlist_max( ldtMap, 100 )
  ldt_settings.set_colddir_rec_max( ldtMap, 10000 )
end

return userModule;

只需将您的配置添加到 Lua UDF,并将其作为 'userModule' 参数传递给put方法。进行一些测试以确定您可能需要的正确配置。查看/opt/aerospike/sys/udf/lua/ldt/settings_llist.lua当前的 LLIST 设置以及可以更改的内容。

编辑:

这是 LLIST 的默认配置:

-- LLIST Inner Node Settings
ldtMap[LS.NodeListMax] = 100;  -- Max # of items (key+digest)
ldtMap[LS.NodeByteCountMax] = 0; -- Max # of BYTES

-- LLIST Tree Leaves (Data Pages)
ldtMap[LS.LeafListMax] = 100;  -- Max # of items
ldtMap[LS.LeafByteCountMax] = 0; -- Max # of BYTES per data page

似乎最大默认 LLIST 大小为 100。更改并测试。

于 2015-01-21T22:19:38.093 回答