2015-01-20 12 views
1

LDT 맵을 사용하고 있는데이 오류가 발생했습니다. LDT 사용 중 하위 레코드 오류

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

나는 aerospike.conf
ldt-enabled true의 도움으로 제거 할 수 있었지만 지금은

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 
} 

모든 포인터를?

답변

5

Aerospike는 LDT에 대해 3.4.1에서 주요 안정성 수정 사항을 적용했습니다. 이 문제가 3.4.1에 계속 표시되는지 확인하십시오.

또한 권장되는 데이터 구조는 LLIST입니다. B + 트리가 지원되며 가장 확장 성이 뛰어납니다.

+0

댓글 일 수밖에없는 답변입니다. – alex

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; 

그냥 루아 UDF에 당신의 설정을 추가하고, put 방법 'userModule'PARAM로 전달합니다. 몇 가지 테스트를 통해 필요한 올바른 구성을 결정하십시오. 현재 LLIST 설정 및 변경 가능한 내용은 /opt/aerospike/sys/udf/lua/ldt/settings_llist.lua을 참조하십시오.

편집 :

-- 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 변경을 테스트 것 같다 : 여기

는 LLIST의 기본 구성입니다.