ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aleksey Plekhanov (Jira)" <j...@apache.org>
Subject [jira] [Commented] (IGNITE-12254) IO errors during write header of WAL files in FSYNC mode should be handled by failure handler
Date Fri, 04 Oct 2019 14:23:00 GMT

    [ https://issues.apache.org/jira/browse/IGNITE-12254?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16944542#comment-16944542
] 

Aleksey Plekhanov commented on IGNITE-12254:
--------------------------------------------

[~nizhikov], [~andrey-kuznetsov] thanks for reviews!

I will merge the ticket after a week.

> IO errors during write header of WAL files in FSYNC mode should be handled by failure
handler
> ---------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-12254
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12254
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Aleksey Plekhanov
>            Assignee: Aleksey Plekhanov
>            Priority: Blocker
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Currently, such errors can hang the cluster.
> Reproducer:
> {code:java}
>     @Test
>     public void testWalFsyncIOError() throws Exception {
>         cleanPersistenceDir();
>         IgniteConfiguration cfg = new IgniteConfiguration();
>         cfg.setCacheConfiguration(new CacheConfiguration(DEFAULT_CACHE_NAME).setAtomicityMode(ATOMIC));
>         cfg.setDataStorageConfiguration(
>             new DataStorageConfiguration()
>                 .setDefaultDataRegionConfiguration(
>                     new DataRegionConfiguration()
>                         .setMaxSize(100L * 1024 * 1024)
>                         .setPersistenceEnabled(true))
>                 .setWalMode(WALMode.FSYNC)
>                 .setWalSegmentSize(512 * 1024)
>                 .setWalBufferSize(512 * 1024));
>         IgniteEx ignite0 = startGrid(new IgniteConfiguration(cfg).setIgniteInstanceName("ignite0"));
>         IgniteEx ignite1 = startGrid(new IgniteConfiguration(cfg).setIgniteInstanceName("ignite1"));
>         ignite0.cluster().active(true);
>         IgniteCache cache = ignite0.cache(DEFAULT_CACHE_NAME);
>         for (int i = 0; i < 1_000; i++)
>             cache.put(i, "Test value " + i);
>         ((FileWriteAheadLogManager)ignite1.context().cache().context().wal()).setFileIOFactory(new
FileIOFactory() {
>             FileIOFactory delegateFactory = new RandomAccessFileIOFactory();
>             @Override public FileIO create(File file, OpenOption... modes) throws IOException
{
>                 final FileIO delegate = delegateFactory.create(file, modes);
>                 return new FileIODecorator(delegate) {
>                     @Override public int write(ByteBuffer srcBuf) throws IOException
{
>                         throw new IOException("No space left on device");
>                     }
>                 };
>             }
>         });
>         for (int i = 0; i < 2_000; i++)
>             try {
>                 cache.put(i, "Test value " + i);
>             }
>             catch (Exception ignore) {
>             }
>     }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message