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

Maksim Zhuravkov updated IGNITE-23072:
--------------------------------------
    Description: 
Reproducer

{code:java}
@State(Scope.Benchmark)
@Fork(1)
@Threads(1)
@Warmup(iterations = 10, time = 2)
@Measurement(iterations = 20, time = 2)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@SuppressWarnings({"WeakerAccess", "unused"})
public class SqlCountBenchmark extends AbstractMultiNodeBenchmark {

    private IgniteSql sql;

    @Param({"1", "2", "3", "4", "5"})
    private int clusterSize;

    @Param({"5", "10", "15", "20"})
    private int partitionsCount;

    /** Fills the table with data. */
    @Setup
    public void setUp() throws IOException {
        populateTable(TABLE_NAME, 30_000, 1_000);

        sql = publicIgnite.sql();
    }

    @Override
    protected int partitionCount() {
        return partitionsCount;
    }
    
    @Benchmark
    public void select1(Blackhole bh) {
        try (var rs = sql.execute(null, "SELECT 1 FROM usertable")) {
            bh.consume(rs.next());
        }
    }

    /**
     * Benchmark's entry point.
     */
    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(".*" + SqlCountBenchmark.class.getSimpleName() + 
".select1")
                .build();

        new Runner(opt).run();
    }

    @Override
    protected int nodes() {
        return clusterSize;
    }
}

{code}

On 1 or 2 node cluster:

{noformat}
java.lang.NullPointerException: null
        at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.flush(AsyncRootNode.java:228)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.push(AsyncRootNode.java:92)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushUnordered(Inbox.java:314)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.push(Inbox.java:202) 
~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.onBatchReceived(Inbox.java:180)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:173)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$1(ExchangeServiceImpl.java:78)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:151)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$0(MessageServiceImpl.java:115)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
 ~[main/:?]
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 [?:?]
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 [?:?]
        at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
{noformat}


On a 3 node cluster

{noformat}
java.util.NoSuchElementException: null
        at java.base/java.util.AbstractQueue.remove(AbstractQueue.java:117) 
~[?:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.flush(AsyncRootNode.java:235)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.push(AsyncRootNode.java:92)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushUnordered(Inbox.java:314)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.push(Inbox.java:202) 
~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.onBatchReceived(Inbox.java:180)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:173)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$1(ExchangeServiceImpl.java:78)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:151)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$0(MessageServiceImpl.java:115)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
{noformat}


  was:
Reproducer

{code:java}
@State(Scope.Benchmark)
@Fork(1)
@Threads(1)
@Warmup(iterations = 10, time = 2)
@Measurement(iterations = 20, time = 2)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@SuppressWarnings({"WeakerAccess", "unused"})
public class SqlCountBenchmark extends AbstractMultiNodeBenchmark {

    private IgniteSql sql;

    @Param({"1", "2", "3", "4", "5"})
    private int clusterSize;

    @Param({"5", "10", "15", "20"})
    private int partitionsCount;

    /** Fills the table with data. */
    @Setup
    public void setUp() throws IOException {
        populateTable(TABLE_NAME, 30_000, 1_000);

        sql = publicIgnite.sql();
    }

    @Override
    protected int partitionCount() {
        return partitionsCount;
    }
    
    @Benchmark
    public void select1(Blackhole bh) {
        try (var rs = sql.execute(null, "SELECT 1 FROM usertable")) {
            bh.consume(rs.next());
        }
    }

    /**
     * Benchmark's entry point.
     */
    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(".*" + SqlCountBenchmark.class.getSimpleName() + 
".select1")
                .build();

        new Runner(opt).run();
    }

    @Override
    protected int nodes() {
        return clusterSize;
    }
}

{code}


{noformat}
java.lang.NullPointerException: null
        at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.flush(AsyncRootNode.java:228)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.push(AsyncRootNode.java:92)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushUnordered(Inbox.java:314)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.push(Inbox.java:202) 
~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.onBatchReceived(Inbox.java:180)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:173)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$1(ExchangeServiceImpl.java:78)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:151)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$0(MessageServiceImpl.java:115)
 ~[main/:?]
        at 
org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
 ~[main/:?]
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 [?:?]
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 [?:?]
        at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
{noformat}


On a 3 node cluster


{noformat}
java.util.NoSuchElementException: null
        at java.base/java.util.AbstractQueue.remove(AbstractQueue.java:117) 
~[?:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.flush(AsyncRootNode.java:235)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.push(AsyncRootNode.java:92)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushUnordered(Inbox.java:314)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.push(Inbox.java:202) 
~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.onBatchReceived(Inbox.java:180)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:173)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$1(ExchangeServiceImpl.java:78)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:151)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$0(MessageServiceImpl.java:115)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
        at 
org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
 ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
{noformat}



> Sql. NoSuchElementException: null / NPE in AsyncRootNode.flush
> --------------------------------------------------------------
>
>                 Key: IGNITE-23072
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23072
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql
>            Reporter: Maksim Zhuravkov
>            Priority: Major
>              Labels: ignite-3
>
> Reproducer
> {code:java}
> @State(Scope.Benchmark)
> @Fork(1)
> @Threads(1)
> @Warmup(iterations = 10, time = 2)
> @Measurement(iterations = 20, time = 2)
> @BenchmarkMode(Mode.AverageTime)
> @OutputTimeUnit(TimeUnit.MILLISECONDS)
> @SuppressWarnings({"WeakerAccess", "unused"})
> public class SqlCountBenchmark extends AbstractMultiNodeBenchmark {
>     private IgniteSql sql;
>     @Param({"1", "2", "3", "4", "5"})
>     private int clusterSize;
>     @Param({"5", "10", "15", "20"})
>     private int partitionsCount;
>     /** Fills the table with data. */
>     @Setup
>     public void setUp() throws IOException {
>         populateTable(TABLE_NAME, 30_000, 1_000);
>         sql = publicIgnite.sql();
>     }
>     @Override
>     protected int partitionCount() {
>         return partitionsCount;
>     }
>     
>     @Benchmark
>     public void select1(Blackhole bh) {
>         try (var rs = sql.execute(null, "SELECT 1 FROM usertable")) {
>             bh.consume(rs.next());
>         }
>     }
>     /**
>      * Benchmark's entry point.
>      */
>     public static void main(String[] args) throws RunnerException {
>         Options opt = new OptionsBuilder()
>                 .include(".*" + SqlCountBenchmark.class.getSimpleName() + 
> ".select1")
>                 .build();
>         new Runner(opt).run();
>     }
>     @Override
>     protected int nodes() {
>         return clusterSize;
>     }
> }
> {code}
> On 1 or 2 node cluster:
> {noformat}
> java.lang.NullPointerException: null
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.flush(AsyncRootNode.java:228)
>  ~[main/:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.push(AsyncRootNode.java:92)
>  ~[main/:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushUnordered(Inbox.java:314)
>  ~[main/:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.Inbox.push(Inbox.java:202) 
> ~[main/:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.Inbox.onBatchReceived(Inbox.java:180)
>  ~[main/:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:173)
>  ~[main/:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$1(ExchangeServiceImpl.java:78)
>  ~[main/:?]
>       at 
> org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:151)
>  ~[main/:?]
>       at 
> org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$0(MessageServiceImpl.java:115)
>  ~[main/:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
>  ~[main/:?]
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>  [?:?]
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>  [?:?]
>       at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
> {noformat}
> On a 3 node cluster
> {noformat}
> java.util.NoSuchElementException: null
>       at java.base/java.util.AbstractQueue.remove(AbstractQueue.java:117) 
> ~[?:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.flush(AsyncRootNode.java:235)
>  ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.push(AsyncRootNode.java:92)
>  ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushUnordered(Inbox.java:314)
>  ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.Inbox.push(Inbox.java:202) 
> ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.rel.Inbox.onBatchReceived(Inbox.java:180)
>  ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:173)
>  ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$1(ExchangeServiceImpl.java:78)
>  ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
>       at 
> org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:151)
>  ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
>       at 
> org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$0(MessageServiceImpl.java:115)
>  ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
>       at 
> org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
>  ~[ignite-sql-engine-3.0.0-SNAPSHOT.jar:?]
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to