[
https://issues.apache.org/jira/browse/IGNITE-22668?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aleksandr Polovtsev updated IGNITE-22668:
-----------------------------------------
Reviewer: Vladislav Pyatkov
> 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
> Time Spent: 10m
> 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)