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)