2016-09-26 1 views
2

나는 이름이 'SomeType'와 filds와 바이너리 형식을 createted했습니다.아파치의 Ignite 바이너리 형식 무효화

이제 f1을 string에서 int로 변경하고 싶습니다. 그러나 유형의 이름을 바꾸고 싶지는 않습니다.

org.apache.ignite.binary.BinaryObjectException: Wrong value has been set [typeName=SomeType, fieldName=f1, fieldType=String, assignedValueType=int] 
: 그래서

내가

ignite.destroyCache(cacheName) 

을 시도하고있다 그리고 나는 (같은 이름 및 바이너리 형태로) 새로운 캐시를 만드는거야, 나는 캐시 채우는 동안 예외가있어

내가 알기로 http://apache-ignite-users.70518.x6.nabble.com/Ignite-client-reads-old-metadata-even-after-cache-is-destroyed-and-recreated-td5800.html에서 예상되는 동작입니다.

하지만 새 바이너리 형식의 matadata를 새로 고치려면 어떻게해야합니까?

답변

1

예, 이것은 예상되는 동작입니다. 우선, marshaller는 Ignite와 메타 데이터에서 전역이므로 캐시를 삭제해도 영향을 미치지 않습니다. 둘째, 바이너리 형식을 사용하면 스키마를 동적으로 변경할 수 있지만 변경 사항은 호환되어야합니다. 즉, 필드를 변경 및/또는 제거 할 수 있지만 유형을 변경하지는 않습니다.이 경우 이전 스키마를 사용하는 클라이언트는 원하는 경우 객체를 직렬화 해제 할 수 없기 때문입니다.

+0

설명해 주셔서 감사합니다. 그래서 바이너리 타입 필드 타입을 변경하는 유일한 방법은 새로운 바이너리 타입을 만드는 것입니다. –

+0

수정. 또는 다른 이름으로 필드를 추가 할 수 있습니다. –