我正在使用LDT地图,并且最初得到了这个错误。
com.aerospike.client.AerospikeException: Error Code 1424: LDT-Sub Record Create Error
我可以在ldt-enabled true
中aerospike.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
}
任何指针?
答案 0 :(得分:5)
Aerospike已针对LDT在3.4.1中提出了主要的稳定性修复。请查看此问题是否仍出现在3.4.1
中此外,推荐使用的数据结构是LLIST。它由B +树支持,并且是最具扩展性的。
答案 1 :(得分:1)
不确定实际问题是什么,但我今天遇到了同样的问题。我正在使用LSTACK,但在内部使用LIST。我的问题是默认的LSTACK配置在列表元素数量方面非常有限。我试图在LSTACK中插入大约200个元素,但似乎默认配置允许最多100个。看看LDT Configuration page。以下是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.更改并测试。