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

Cyclic retry of ActionRequest in RaftGroupServiceImpl

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Critical
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      Please take a look at the following snippet:

      private void handleThrowable(
                 ...
          ) {
              if (recoverable(err)) {
                  ...
      
                  scheduleRetry(() -> sendWithRetry(randomNode(peer), requestFactory, stopTime, fut));
              } else {
                  fut.completeExceptionally(err);
              }
          }
      

      In case of a recoverable error, the request will be sent once again. But if 2 out of 3 nodes had already been stopped, this retry logic will stuck in an infinite loop. The reason is that ConnectException is considered recoverable, and we are choosing another node keeping in mind only the node that had failed during current iteration.

      Attachments

        1. log_pollution.txt
          10.00 MB
          Konstantin Orlov

        Issue Links

          Activity

            People

              alapin Alexander Lapin
              korlov Konstantin Orlov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: