[
https://issues.apache.org/jira/browse/IGNITE-25049?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pavel Pereslegin updated IGNITE-25049:
--------------------------------------
Description:
This issue was previously reported in IGNITE-22250.
{{itSqlClientSynchronousApiTest.testTimeZoneId}} has ultra low flaky rate.
Fails with something like this
{noformat}
org.opentest4j.AssertionFailedError: expected: <1.74402188E12> but was:
<1.74402175E12>
at
app//org.apache.ignite.internal.sql.api.ItSqlApiBaseTest.testTimeZoneId(ItSqlApiBaseTest.java:908)
{noformat}
This test tries to compare the value of {{CURRENT_TIMESTAMP}} across time
zones, and a possible reason for this failure is that the timestamp value
(long) is converted to a float to calculate the difference.
{code:java}
float tsMillis =
ts.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
float nowMillis =
LocalDateTime.now(zoneId).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
float deltaMillis = 5000;
assertEquals(nowMillis, tsMillis, deltaMillis);
{code}
We can easily find lot of timestamps that will not pass such check.
Example:
{code:java}
Instant ts1 = Instant.parse("2025-04-24T21:01:27.935Z");
Instant ts2 = ts1.plusMillis(1); // just 1 millisecond difference
float float1 = ts1.toEpochMilli();
float float2 = ts2.toEpochMilli();
System.out.println(Math.abs(float2 - float1)); // 131072.0
{code}
Test should be reworked similarly that we have in
testCurrentDateTimeTimeStamp.... or at least {{double}} should be used instead
of {{float}}.
was:
This issue was previously reported in IGNITE-22250.
{{itSqlClientSynchronousApiTest.testTimeZoneId}} has ultra low flaky rate.
But sometimes it fails with something like that
{noformat}
org.opentest4j.AssertionFailedError: expected: <1.74402188E12> but was:
<1.74402175E12>
at
app//org.apache.ignite.internal.sql.api.ItSqlApiBaseTest.testTimeZoneId(ItSqlApiBaseTest.java:908)
{noformat}
This test tries to compare the value of {{CURRENT_TIMESTAMP}} across time
zones, and a possible reason for this failure is that the timestamp value
(long) is converted to a float to calculate the difference.
{code:java}
float tsMillis =
ts.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
float nowMillis =
LocalDateTime.now(zoneId).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
float deltaMillis = 5000;
assertEquals(nowMillis, tsMillis, deltaMillis);
{code}
We can easily find lot of timestamps that will not pass such check.
Example:
{code:java}
Instant ts1 = Instant.parse("2025-04-24T21:01:27.935Z");
Instant ts2 = ts1.plusMillis(1); // just 1 millisecond difference
float float1 = ts1.toEpochMilli();
float float2 = ts2.toEpochMilli();
System.out.println(Math.abs(float2 - float1)); // 131072.0
{code}
Test should be reworked similarly that we have in
testCurrentDateTimeTimeStamp.... or at least {{double}} should be used instead
of {{float}}.
> Sql. Improve itSqlClientSynchronousApiTest.testTimeZoneId test
> --------------------------------------------------------------
>
> Key: IGNITE-25049
> URL: https://issues.apache.org/jira/browse/IGNITE-25049
> Project: Ignite
> Issue Type: Bug
> Components: sql, thin client
> Reporter: Pavel Pereslegin
> Priority: Major
> Labels: ignite-3
>
> This issue was previously reported in IGNITE-22250.
> {{itSqlClientSynchronousApiTest.testTimeZoneId}} has ultra low flaky rate.
> Fails with something like this
> {noformat}
> org.opentest4j.AssertionFailedError: expected: <1.74402188E12> but was:
> <1.74402175E12>
> at
> app//org.apache.ignite.internal.sql.api.ItSqlApiBaseTest.testTimeZoneId(ItSqlApiBaseTest.java:908)
> {noformat}
> This test tries to compare the value of {{CURRENT_TIMESTAMP}} across time
> zones, and a possible reason for this failure is that the timestamp value
> (long) is converted to a float to calculate the difference.
> {code:java}
> float tsMillis =
> ts.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
> float nowMillis =
> LocalDateTime.now(zoneId).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
> float deltaMillis = 5000;
> assertEquals(nowMillis, tsMillis, deltaMillis);
> {code}
> We can easily find lot of timestamps that will not pass such check.
> Example:
> {code:java}
> Instant ts1 = Instant.parse("2025-04-24T21:01:27.935Z");
> Instant ts2 = ts1.plusMillis(1); // just 1 millisecond difference
> float float1 = ts1.toEpochMilli();
> float float2 = ts2.toEpochMilli();
> System.out.println(Math.abs(float2 - float1)); // 131072.0
> {code}
> Test should be reworked similarly that we have in
> testCurrentDateTimeTimeStamp.... or at least {{double}} should be used
> instead of {{float}}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)