2 개의 노드가있는 매우 간단한 클러스터가 있습니다. SimpleStrategy 복제 및 복제 인수 2를 사용하여 키 공간을 만들었습니다. 읽기 및 쓰기의 경우 항상 기본 데이터 일관성 수준을 1로 사용합니다.카산드라. 사용 가능한 복제본이 충분하지 않습니다. - CQL 콘솔과 다른 Java 드라이버 동작
datastax java 드라이버를 사용하여 두 노드 중 하나를 사용 중지해도 데이터를 읽을 수는 있지만 쓰기를 시도 할 때 "일관성이없는 쿼리를 사용할 수있는 복제본이 충분하지 않습니다 (1 개만 필요하지만 0 살아 있는)".
이상하게도 CQL 콘솔을 사용하여 정확하게 동일한 insert 문을 실행하면 문제없이 작동합니다. CQL 콘솔을 사용하는 경우에도 데이터 일관성 수준은 1입니다.
누락 된 항목이 있습니까?
TIA
업데이트
좀 더 많은 테스트를 수행하고 난 BatchStatement를 사용하는 경우에만 문제가 나타납니다. 준비된 진술을 직접 실행하면 작동합니다. 어떤 생각? 여기
코드
Cluster cluster = Cluster.builder()
.addContactPoint("192.168.1.10")
.addContactPoint("192.168.1.12")
.build();
Session session = cluster.connect();
session.execute("use giotest");
BatchStatement batch = new BatchStatement();
PreparedStatement statement = session.prepare("INSERT INTO hourly(series_id, timestamp, value) VALUES (?, ?, ?)");
for (int i = 0; i < 50; i++) {
batch.add(statement.bind(new Long(i), new Date(), 2345.5));
}
session.execute(batch);
batch.clear();
session.close();
cluster.close();
연결, 세션 및 코드 작성 관련 부분을 게시 하시겠습니까? – Aaron
원래 게시물에 추가했습니다. 감사합니다. – gioper86
여기에 방금 뱉어 내지 만, 노드를 문자열 배열로 정의하고 대신 .addContactPoints (nodes)를 사용하십시오. 이제 귀하의 문제는 배치 진술 중에 만 발생하는 것으로 보입니다. 아마도 차이가 없을 것입니다 ... 철저합니다. – Aaron