카산드라 1.2.11을 사용하고 있습니다. 내가 주어진 타임 스탬프보다 오래된 updated_date 모든 항목을 삭제하는 Java 응용 프로그램을 만들었카산드라 rpc_timeout
CREATE TABLE subscribers_all (
subscriber text,
status int,
package text,
SW_ON timestamp,
S_NUMBER text,
USER_NAME text,
updated_date timestamp,
PRIMARY KEY (subscriber)
);
: 나는 다음과 같은 열 가족을 만들었습니다. while 루프에서 다음 select 문을 사용했습니다.
select * from subscribers_all where token(subscriber) > token(?) limit 100;
프로그램을 시작했습니다. 잘 작동했다. 그런 다음 타임 스탬프를 잘못 입력했기 때문에 프로그램을 삭제했습니다. 종료 훅을 연결하지 않았으므로 클러스터가 제대로 종료되지 않았습니다. 올바른 타임 스탬프로 프로그램을 다시 시작했습니다. 카산드라 드라이버 (내가 몇 번 시도) 다음과 같은 오류를 던지고 :
com.datastax.driver.core.exceptions.ReadTimeoutException: Cassandra timeout during read query at consistency ONE (1 responses were required but only 0 replica responded)
그래서, cqlsh에서 선택을 테스트하기로 결정했다. 심지어 간단한 선택 다음은 작동하지 않습니다 :
select subscriber from subscribers_all limit 1;
를 항상이 오류가 발생합니다 :
나는 내 선택에 where 절을 넣을 때, 잘 작동합니다.Request did not complete within rpc_timeout.
select * from subscribers_all where subscriber = 'xyz';
예상되는 결과를 얻었습니다. 전체 카산드라 클러스터를 다시 시작해 보았습니다. 도움이되지 않아. 내 cqlsh의 선택 또는 내가 다시 시작하려 시대에 대한
ERROR [Native-Transport-Requests:973721] 2013-12-12 15:08:29,699 ErrorMessage.java (line 210) Unexpected exception during request java.io.IOException: Connection reset by peer
없음 예외 : 로그 파일에서
, 난 단지 내 응용 프로그램을 죽였을 때 나는 시간으로 대응을 생각하는 하나 개의 예외를 볼 수 있습니다 내 신청서. 'nodetool tpstats'는 메시지가 삭제되거나 차단되거나 대기 중이라는 것을 보여줍니다.누군가가 '노드 간 시간 동기화로 인한 것'이라고 제안했습니다. 확인하고 서버가 동기화됩니다.
추적을 사용하도록 설정했는데 작동하는 선택과 작동하지 않는 선택을 다시 실행했습니다. 다음은 ok select에 대한 추적 결과입니다 (잘하면 URL 붙여 넣기가 허용됨). 추적이 'LIMIT 1'과 쿼리에 대해 보여줍니다 여기에서
이의 일부분이다 :나는 그것이 버그,하지만 거의 확신은이 모든 그것에 대한 해결책? 열 패밀리를 삭제하고 다시 작성하는 것을 거부합니다. 라이브로 갈 때 실현 가능한 솔루션이 아닙니다.
작동하는 쿼리에 추적 기능이 표시됩니다. 'select * from subscribers_all where subscriber ='xyz ';' –
내 질문을 업데이트했습니다. – Anakin001