[Bug] AlignByDeviceOrderByLimitOffsetTest could fail nondeterministically
- Vorherrschende Sprache
- Java
- Sterne
- 6.4k
- Forks
- 1.2k
- Ø Merge
- 1 T. 23 Std.
- Gemergte PRs (30 T.)
- 115
Beschreibung
### 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!
Beitragsleitfaden
Rechercherichtung
Beginne mit org.apache.iotdb.db.queryengine.plan.planner.distribution.AlignByDeviceOrderByLimitOffsetTest und seinen Methoden orderByDeviceTest1–4. Führe den bereitgestellten Maven nondex-Befehl für orderByDeviceTest4 aus und untersuche anschließend die Assertions, die von exakten Indizes der Kinder des logischen Plans abhängen. Die Aufgabe ist abgeschlossen, wenn die vier Tests über verschiedene Planner-Varianten hinweg gültig bleiben und unter nondex erfolgreich ausgeführt werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- databases, testing
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100