Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-17508

Exception handling in the partition replication listener for RAFT futures

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • None
    • None

    Description

      In the replication listener (PartitionReplicaListener) where we have the pattern:

      raftFut.thenApply(ignored -> result);

      we should worry about handling RAFT exceptions, including analyzing whether raftFut result.

      Can distinguish following exception types for RAFT:

      • RAFT cannot replicate a command for the timeout (TimeoutException). Hence, this exception leads to the replication timeout exception (ReplicationTimeoutException).
      • It throws some internal exception (RaftException). This exception should be wrapped of the common replication exception (ReplicationException).
      • Finally, RAFT throws java exceptions (NullPointerException, IndexOutOfRangeException e.t.c). Those exceptions shouldn't be touched, is will be through as is.
         

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            v.pyatkov Vladislav Pyatkov
            v.pyatkov Vladislav Pyatkov
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment