apache / apache/iotdb

[Bug] AlignByDeviceOrderByLimitOffsetTest could fail nondeterministically

Offen
#16,593 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.