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

Maksim Timonin updated IGNITE-21135:
------------------------------------
    Description: 
`CdcManager` must guarantee that `afterBinaryMemoryRestore()` finishes before 
the first call of `collect()`.

Scenario of the contention:
 # Ignite node starts, restores binary memory in 
GridCacheDatabaseSharedManager#restoreBinaryMemory.
 # FileWriteAheadLogManager resumes logging and starts the "wal-segment-syncer" 
thread.
 # MemoryRecoveryRecord is written
 # CdcManager#afterBinaryMemoryRestore method is invoked in the Ignite start 
thread.
 #  

 

Note, the `collect()` method is called from the background system thread 
`wal-segment-syncer`.

 

 

In `CdcManager` there is a contention between `collect()` and 
`afterBinaryMemoryRestore()` due to Ignite writes the `MemoryRecoveryRecord`.

afterBinaryMemoryRestore should be invoked BEFORE any collect().

  was:
In CdcManager there is a contention between collect() and 
afterBinaryMemoryRestore() due to Ignite writes the MemoryRecoveryRecord. 

afterBinaryMemoryRestore should be invoked BEFORE any collect().


> CdcManager might collect WAL data before restoring it's state
> -------------------------------------------------------------
>
>                 Key: IGNITE-21135
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21135
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Maksim Timonin
>            Assignee: Maksim Timonin
>            Priority: Major
>             Fix For: 2.17
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> `CdcManager` must guarantee that `afterBinaryMemoryRestore()` finishes before 
> the first call of `collect()`.
> Scenario of the contention:
>  # Ignite node starts, restores binary memory in 
> GridCacheDatabaseSharedManager#restoreBinaryMemory.
>  # FileWriteAheadLogManager resumes logging and starts the 
> "wal-segment-syncer" thread.
>  # MemoryRecoveryRecord is written
>  # CdcManager#afterBinaryMemoryRestore method is invoked in the Ignite start 
> thread.
>  #  
>  
> Note, the `collect()` method is called from the background system thread 
> `wal-segment-syncer`.
>  
>  
> In `CdcManager` there is a contention between `collect()` and 
> `afterBinaryMemoryRestore()` due to Ignite writes the `MemoryRecoveryRecord`.
> afterBinaryMemoryRestore should be invoked BEFORE any collect().



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to