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

WALItreater is not stopped if can not deserialize record

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.5
    • 2.7
    • None
    • None

    Description

      Currently, we have the following code in RecordV1Serializer.readWithCrc:

      static WALRecord readWithCrc(.....) throws EOFException, IgniteCheckedException {
        
          try (FileInput.Crc32CheckingFileInput in = in0.startRead(skipCrc)) {
            ..... 
          }
          catch (EOFException | SegmentEofException | WalSegmentTailReachedException e) {
              throw e;
          }
          catch (Exception e) {
              throw new IgniteCheckedException("Failed to read WAL record at position: " + startPos, e);
          }
      }
      

      So, any runtime error will be remapped to IgniteCheckedException, which will lead to iterator stop due to the following code:

      AbstractWalRecordsIterator.advanceRecord:

         try {
               ......
              }
              catch (IOException | IgniteCheckedException e) {
                  if (e instanceof WalSegmentTailReachedException)
                      throw (WalSegmentTailReachedException)e;
      
                  if (!(e instanceof SegmentEofException))
                      handleRecordException(e, actualFilePtr);
      
                  return null;
              }
      

      Any IgniteCheckedException will be ignored and iterator goes ahead to the next segment.

      I suggest to make the following changes:
      1) It is unexpected behavior, need to fix it. We should only stop iteration on known exceptions
      2) Also, need to provide ability skip records by type or some pointer for the StandaloneWalRecordsIterator

      Attachments

        Issue Links

          Activity

            People

              DmitriyGovorukhin Dmitriy Govorukhin
              DmitriyGovorukhin Dmitriy Govorukhin
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: