Ivan Rakov created IGNITE-8761:
----------------------------------
Summary: WAL fsync at rollover should be asynchronous in LOG_ONLY
and BACKGROUND modes
Key: IGNITE-8761
URL: https://issues.apache.org/jira/browse/IGNITE-8761
Project: Ignite
Issue Type: Improvement
Components: persistence
Reporter: Ivan Rakov
Fix For: 2.6
Transactions may periodically hang for a few seconds in LOG_ONLY or BACKGROUND
persistent modes. Thread dumps show that threads are hanging on syncing
previous WAL segment during rollover:
{noformat}
java.lang.Thread.State: RUNNABLE
at java.nio.MappedByteBuffer.force0(MappedByteBuffer.java:-1)
at java.nio.MappedByteBuffer.force(MappedByteBuffer.java:203)
at
org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager$FileWriteHandle.close(FileWriteAheadLogManager.java:2843)
at
org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager$FileWriteHandle.access$600(FileWriteAheadLogManager.java:2483)
at
org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager.rollOver(FileWriteAheadLogManager.java:1094)
{noformat}
Waiting for this fsync is not necessary action to ensure crash recovery
guarantees. Instead of this, we should just perform fsyncs asychronously and
ensure that they are completed prior to next checkpoint start.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)