0

내가 가진 설치 3 개 노드 카산드라의 단일 시스템에서 클러스터 (Ubantu), 그리고 난 다음을 수행 -카산드라의 키 스페이스 생성 카산드라 드라이버 2.2.0-RC3와 무한 루프에 간다

  1. 세 개의 노드를하고 응용 프로그램이 키 공간을 만들 수 있습니다.
  2. 3 개의 실행 노드 중 하나를 종료하고 응용 프로그램이 키 스페이스를 만들 수 있습니다. 지금이 노드를 실행하고 즉시 시작하고 이제 응용 프로그램이 대해 (무한 루프처럼)을보고 계속해서, 키 스페이스를 만들 수 없습니다 중
  3. 는 종료 또 하나 개의 노드 -

    2017년 9월 25일 14:42:40 INFO RequestHandler : 561 - 존재하지 않는 경우 CREATE KEYSPACE 쿼리 MYKEYSPACE with replication = { 'class': 'NetworkTopologyStrategy', 'datacenter1': '2'}}; 은 /127.0.0.1:9042에 준비되지 않았으므로 실행을 다시 시도하기 전에 준비하십시오. 몇 번 괜찮이 메시지를보고 있지만, 많은 성능의 원천이 될 수 있습니다 그것을보고 문제

내 응용 프로그램 로그에 다음 메시지와 함께 침수되고 그것은 오류가 자바 힙을 초래.

참고 - 복제 인수는 2이고 사용하는 cassandra 버전은 2.2.6이며 cassandra 드라이버는 2.2.0-rc3입니다. 내가 다시 cassandra 드라이버로 돌아갈 때 2.1.3 모든 것이 정상적으로 작동하므로 드라이버 레벨에서 약간의 이슈가 있는지 궁금합니다.

더 자세히 알려면 cassandra 드라이버 레벨에서도 코드를 디버깅하십시오. com.datastax.driver.core.Connection 클래스의 아래 방법 - 그래서 (3에서 지금 실행이 개 노드를) 노드를 온라인으로 다시 데려 후 RequestHandler를 쿼리가 준비되지 대해보고 계속해서

private void flush(FlushItem item) { 
    EventLoop loop = item.channel.eventLoop(); 
    Flusher flusher = flusherLookup.get(loop); 
    if (flusher == null) { 
     Flusher alt = flusherLookup.putIfAbsent(loop, flusher = new Flusher(loop)); 
     if (alt != null) 
      flusher = alt; 
    } 

    flusher.queued.add(item); 
    flusher.start(); 
} 

, 따라서이 전화가 걸려 올 때 재 시도하기 전에 준비하십시오. -

public ResponseHandler write(ResponseCallback callback, boolean startTimeout) 
{ 
.... 
.... 
.... 
flush(new FlushItem(channel, request, writeHandler(request, handler))); 
.... 
.... 
} 

답변

1

cassandra 드라이버 버전을 3.3.0으로 업그레이드 한 후 문제가 발생하지 않았습니다. 일부 버그는 릴리스 후보 버전 인 2.2.0-rc3에 있다고 생각합니다.