You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Luchnikov Alexander (Jira)" <ji...@apache.org> on 2022/05/13 09:17:00 UTC

[jira] [Updated] (IGNITE-16248) CDC fails if default page size is used in its configuration

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

Luchnikov Alexander updated IGNITE-16248:
-----------------------------------------
    Labels: IEP-59 ise.lts  (was: IEP-59)

> CDC fails if default page size is used in its configuration
> -----------------------------------------------------------
>
>                 Key: IGNITE-16248
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16248
>             Project: Ignite
>          Issue Type: Bug
>          Components: extensions
>            Reporter: Mikhail Petrov
>            Assignee: Mikhail Petrov
>            Priority: Major
>              Labels: IEP-59, ise.lts
>             Fix For: 2.13
>
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Exception:
> {code:java}
> java.lang.IllegalArgumentException: Ouch! Argument is invalid: Page size must be between 1kB and 16kB.
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at org.apache.ignite.internal.util.GridArgumentCheck.ensure(GridArgumentCheck.java:110)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at org.apache.ignite.internal.processors.cache.persistence.wal.reader.IgniteWalIteratorFactory$IteratorParametersBuilder.validate(IgniteWalIteratorFactory.java:663)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at org.apache.ignite.internal.processors.cache.persistence.wal.reader.IgniteWalIteratorFactory.iterator(IgniteWalIteratorFactory.java:174)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at org.apache.ignite.internal.cdc.CdcMain.consumeSegment(CdcMain.java:467)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:373)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.ArrayList.forEach(ArrayList.java:1259)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:390)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.Sink$ChainedReference.end(Sink.java:258)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.Sink$ChainedReference.end(Sink.java:258)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.Sink$ChainedReference.end(Sink.java:258)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.Sink$ChainedReference.end(Sink.java:258)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:483)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at org.apache.ignite.internal.cdc.CdcMain.consumeWalSegmentsUntilStopped(CdcMain.java:403)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at org.apache.ignite.internal.cdc.CdcMain.runX(CdcMain.java:285)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at org.apache.ignite.internal.cdc.CdcMain.run(CdcMain.java:229)
> [22:16:04]	[org.apache.ignite:ignite-cdc-ext] 	at java.lang.Thread.run(Thread.java:748)
> {code}
> The main reason of failures is that after IGNITE-15558 IteratorParametersBuilder#pageSize is set in CdcMain#consumeSegment.
> Since DataStorageConfiguration#pageSize default variable is 0, IteratorParametersBuilder#validate throws an exception considering that page size must be at least 4 kB.
> As a reproducer you can see CDC tests in Ignite Extensions repository -
> https://ci.ignite.apache.org/viewType.html?buildTypeId=IgniteExtensions_Tests_Cdc&tab=buildTypeHistoryList&branch_IgniteExtensions_Tests=%3Cdefault%3E
> Or see dedicated reproducer:
> {code:java}
> public class CdcPageSizeTest extends GridCommonAbstractTest {
>     /** {@inheritDoc} */
>     @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
>         return super.getConfiguration(igniteInstanceName)
>             .setDataStorageConfiguration(new DataStorageConfiguration()
>                 .setCdcEnabled(true)
>                 .setWalMode(FSYNC)
>                 .setWalForceArchiveTimeout(5_000)
>                 .setDefaultDataRegionConfiguration(
>                     new DataRegionConfiguration()
>                         .setPersistenceEnabled(true)
>                 ));
>     }
>     @Override protected void beforeTest() throws Exception {
>         super.beforeTest();
>         cleanPersistenceDir();
>     }
>     /** */
>     @Test
>     public void test() throws Exception {
>         startGrid(0);
>         grid(0).cluster().state(ClusterState.ACTIVE);
>         CdcConsumer consumer = new CdcConsumer() {
>             @Override public void start(MetricRegistry mreg) {
>             }
>             @Override public boolean onEvents(Iterator<CdcEvent> events) {
>                 return false;
>             }
>             @Override public void stop() {
>             }
>         };
>         CdcConfiguration cdcCfg = new CdcConfiguration();
>         cdcCfg.setConsumer(consumer);
>         new CdcMain(getConfiguration(getTestIgniteInstanceName(0)), null, cdcCfg).run();
>     }
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)