apache / apache/iotdb

[Bug] Time-Zone problems in MonthIntervalFillFilterTest

Offen
#12,536 1 Kommentar 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

1.3.2-SNAPSHOT

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

When building IoTDB including tests in my timezone "Europe/Berlin" the tests in MonthIntervalFillFilterTest are failing.

### What did you expect to see?

I would have expected the tests to pass.

### What did you see instead?

[ERROR] Failures:
[ERROR] MonthIntervalFillFilterTest.testMonthIntervalMSFillFilter:51
[ERROR] MonthIntervalFillFilterTest.testMonthIntervalNSFillFilter:133
[ERROR] MonthIntervalFillFilterTest.testMonthIntervalUSFillFilter:90

### Anything else?

I have already found the problem, but am not sure how to correctly fix the issue.

The problem is that now 16.05.2024 in Germany we are in Daylight-Saving, which changes the timezone offset from 1h to 2h.
The AbstractMonthIntervalFillFilter uses the current timezone offset at the time of creating the instance.

Therefore the interval used in the test is "one hour less than one month", which makes the tests fail.

If I change:

this.zoneOffset = zone.getRules().getOffset(Instant.now());

To:

this.zoneOffset = zone.getRules().getStandardOffset(Instant.now());

The test passes again, but I am not sure this is the correct fix for it.
Another alternative would be to calculate the zoneOffset in the test based on the current time and not of that of the reference date in February (which is before daylight-saving)

### Are you willing to submit a PR?

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit MonthIntervalFillFilterTest und der Behandlung des Zeitzonen-Offsets durch AbstractMonthIntervalFillFilter. Führe die drei fehlschlagenden Testmethoden in der Zeitzone Europe/Berlin aus und vergleiche den vom Filter verwendeten Offset mit dem Referenzdatum des Tests. Erledigt ist die Aufgabe, wenn die Tests bestehen und dabei das korrekte Verhalten bei der Sommerzeitumstellung erhalten bleibt.

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
38/100

Neue Issues direkt in Ihr Postfach

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