Skip to content

Cancel이 발생하는 상황

Minkyeong Kim edited this page Dec 11, 2024 · 1 revision

general

  • arcus 노드가 zk로부터 사라져서 연결을 끊어야 할 때 readQueue, writeQueue, InputQueue의 Operation들이 Cancel된다.
  • arcus 노드에 reconnect해야할 때 FailureMode가 Cancel 일 경우 writeQueue, InputQueue의 Operation들이 Cancel된다.
  • 새로운 Operation을 node에 추가할 때 node가 null이거나 inactive 노드이면 해당 Operation은 Cancel된다.
  • Overflow로 인해 writeQueue에 Operation을 추가할 수 없을 때 해당 Operation은 Cancel된다.
  • InputQueue로 Operation을 추가하고자 할 때 authentication timeout(1초)이 발생하면 해당 Operation은 Cancel된다.
  • setupResend 메서드에서 Operation들을 resend하고자 할 때, 현재 readQueue에서 응답을 기다리는 중인 Operation들은 Cancel된다.

replication

  • switchover가 발생하여 한 arcus 노드에서 다른 arcus 노드로 Operation들을 모두 옮길 때 멱등하지 않은 Operation을 cancel시키고 싶다는 옵션을 주었다면 멱등하지 않은 Operation들은 Cancel된다.

migration

  • Operation의 상태가 REDIRECT여서 redirect를 시도하지만 RedirectHandler를 찾을 수 없을 때 해당 Operation은 Cancel된다. (실제로는 절대 발생 하지 않는 경우이다.)
  • Operation을 redirect시킬 대상 노드가 없거나, inactive 노드일 때 해당 Operation은 Cancel된다.
  • arcus 노드를 reconnect해야할 때 FailureMode가 Redistribute일 경우 writeQueue, InputQueue에 속한 Operation 중 KeyedOperation이 아닌 것들은 Cancel된다.
  • arcus 노드가 LEAVE 상태여서 redistribute해야 하는데 readQueue, writeQueue, InputQueue에 속한 Operation 중 KeyedOperation이 아닌 것들은 Cancel된다.