apache / apache/iotdb

[Bug] Time-Zone problems in MonthIntervalFillFilterTest

Aperta
#12,536 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Java
Stelle
6.4k
Fork
1.2k
Merge medio
1g 23h
PR unite (30g)
115

Descrizione

### 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!

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con MonthIntervalFillFilterTest e con la gestione dell'offset del fuso orario da parte di AbstractMonthIntervalFillFilter. Esegui i tre metodi di test che falliscono nel fuso orario Europe/Berlin e confronta l'offset usato dal filtro con la data di riferimento del test. Il lavoro è completato quando i test passano preservando il corretto comportamento dell'ora legale.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
databases, testing
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
38/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.