[ 
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)

Reply via email to