apache / apache/iotdb

[Bug] Time-Zone problems in MonthIntervalFillFilterTest

Open
#12,536 1 comment 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

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!

Contributor guide

Open the contributing guide

Research direction

Start with MonthIntervalFillFilterTest and the AbstractMonthIntervalFillFilter timezone-offset handling. Run the three failing test methods in a Europe/Berlin timezone and compare the offset used by the filter with the test's reference date. Done means the tests pass while preserving the correct daylight-saving behavior.

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.