[ 
https://issues.apache.org/jira/browse/IGNITE-8661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitriy Govorukhin updated IGNITE-8661:
---------------------------------------
    Description: 
RecordV1Serializer.readWithCrc
{code:java}
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);
    }
}
{code}

Any runtime error will be remapped to IgniteCheckedException 

AbstractWalRecordsIterator.advanceRecord

{code}
   try {
         ......
        }
        catch (IOException | IgniteCheckedException e) {
            if (e instanceof WalSegmentTailReachedException)
                throw (WalSegmentTailReachedException)e;

            if (!(e instanceof SegmentEofException))
                handleRecordException(e, actualFilePtr);

            return null;
        }
{code}

Any IgniteCheckedException will be ignored and iterator goes ahead to the next 
segment. 
1) It is unexpected behavior, need to fix it.
2) Also need provide ablity 

  was:
RecordV1Serializer.readWithCrc
{code:java}
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);
    }
}
{code}

Any runtime error will be remapped to IgniteCheckedException 

AbstractWalRecordsIterator.advanceRecord

{code}
   try {
         ......
        }
        catch (IOException | IgniteCheckedException e) {
            if (e instanceof WalSegmentTailReachedException)
                throw (WalSegmentTailReachedException)e;

            if (!(e instanceof SegmentEofException))
                handleRecordException(e, actualFilePtr);

            return null;
        }
{code}

Any IgniteCheckedException will be ignored and iterator goes ahead to the next 
segment. It is unexpected behavior, need to fix it.


> WALItreater is not stopped if can not deserialize record 
> ---------------------------------------------------------
>
>                 Key: IGNITE-8661
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8661
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Dmitriy Govorukhin
>            Priority: Major
>             Fix For: 2.6
>
>
> RecordV1Serializer.readWithCrc
> {code:java}
> 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);
>     }
> }
> {code}
> Any runtime error will be remapped to IgniteCheckedException 
> AbstractWalRecordsIterator.advanceRecord
> {code}
>    try {
>          ......
>         }
>         catch (IOException | IgniteCheckedException e) {
>             if (e instanceof WalSegmentTailReachedException)
>                 throw (WalSegmentTailReachedException)e;
>             if (!(e instanceof SegmentEofException))
>                 handleRecordException(e, actualFilePtr);
>             return null;
>         }
> {code}
> Any IgniteCheckedException will be ignored and iterator goes ahead to the 
> next segment. 
> 1) It is unexpected behavior, need to fix it.
> 2) Also need provide ablity 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to