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

Aleksandr Polovtsev updated IGNITE-22668:
-----------------------------------------
    Fix Version/s: 3.0.0-beta2

> StripeAwareLogManager may skip commits to underlying Log Storage
> ----------------------------------------------------------------
>
>                 Key: IGNITE-22668
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22668
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Aleksandr Polovtsev
>            Assignee: Aleksandr Polovtsev
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Originally this issue was discovered, when I was trying to start an Ignite 
> cluster with 3 nodes and a table that used a volatile storage profile. By 
> filling this table with data, I encountered multiple internal Raft errors 
> related to the Meta Storage group.
> The problem is that {{StripeAwareLogManager}} manages multiple log storages 
> from different Raft groups that are colocated to the same stripe in the 
> {{LogManagerDisruptor}}. In my case, some volatile log storages from the 
> table were colocated with the persistent log storage from the Meta Storage. 
> However, when flushing the buffered data inside {{StripeAwareLogManager}}, we 
> have the following code:
> {code:java}
> // Since the storage is shared, any batcher can flush it.
> appendBatchers.iterator().next().commitWriteBatch();
> {code}
> {{commitWriteBatch}} for volatile storages is a no-op, while for persistent 
> storages it writes the data into the DB. If we are unlucky and the 
> {{appendBatcher}} for the volatile storage comes first, then the data for the 
> persistent storage will not get flushed at all (until the next flush, but 
> it's enough to break everything).



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

Reply via email to