apache / apache/iotdb

[Bug] AlignByDeviceOrderByLimitOffsetTest could fail nondeterministically

Open
#16,593 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
6.4k
Forks
1.2k
Avg merge
1d 23h
Merged PRs (30d)
115

Description

### Search before asking

- [x] I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar.

### Version

OS: Ubuntu 22.04
IoTDB: master @ d719d4651d81e978a74afe6446bee2f5582f4345
Java 17, Apache Maven 3.8.7

### Describe the bug and provide the minimal reproduce step

A group of JUnit tests under `org.apache.iotdb.db.queryengine.plan.planner.distribution.AlignByDeviceOrderByLimitOffsetTest` method methods `orderByDeviceTest1`, `orderByDeviceTest2`, `orderByDeviceTest3`, and `orderByDeviceTest4`. The tests could fail nondeterministically because they asserted exact child-index positions in the logical-plan tree.
Planner variations (region splits, optimisations) sometimes insert a different node type or reorder children, triggering a test bug.
I use `nondex` to reproduce the error. Failed in nondexSeed=933178, 974622.
```
mvn -pl iotdb-core/datanode edu.illinois:nondex-maven-plugin:2.1.7:nondex -Dtest=org.apache.iotdb.db.queryengine.plan.planner.distribution.AlignByDeviceOrderByLimitOffsetTest#orderByDeviceTest4 -Dnondexruns=10
```
The bugs under these four methods are alike, so I only provide one of them.
```
org.apache.iotdb.db.queryengine.plan.planner.distribution.AlignByDeviceOrderByLimitOffsetTest.orderByDeviceTest4 -- Time elapsed: 1.547 s <<< FAILURE!
java.lang.AssertionError
```

### What did you expect to see?

```
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.591 s -- in org.apache.iotdb.db.queryengine.plan.planner.distribution.AlignByDeviceOrderByLimitOffsetTest
```

### What did you see instead?

```
[INFO] Running org.apache.iotdb.db.queryengine.plan.planner.distribution.AlignByDeviceOrderByLimitOffsetTest
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.654 s <<< FAILURE! -- in org.apache.iotdb.db.queryengine.plan.planner.distribution.AlignByDeviceOrderByLimitOffsetTest
[ERROR] org.apache.iotdb.db.queryengine.plan.planner.distribution.AlignByDeviceOrderByLimitOffsetTest.orderByDeviceTest4 -- Time elapsed: 1.637 s <<< FAILURE!
java.lang.AssertionError
```

### Anything else?

_No response_

### Are you willing to submit a PR?

- [x] I'm willing to submit a PR!

Contributor guide

Open the contributing guide

Research direction

Start with org.apache.iotdb.db.queryengine.plan.planner.distribution.AlignByDeviceOrderByLimitOffsetTest and its orderByDeviceTest1–4 methods. Run the provided Maven nondex command for orderByDeviceTest4, then inspect the assertions that depend on exact logical-plan child indexes. Done means the four tests remain valid across planner variations and pass under nondex.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
databases, testing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.