[ 
https://issues.apache.org/jira/browse/FLINK-20908?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17262145#comment-17262145
 ] 

Danny Cranmer commented on FLINK-20908:
---------------------------------------

This test captures the current timestamp and checks that a timestamp generated 
later is >= now. The failed assertion is comparing an initial {{Instant.now()}} 
 created 
[here|https://github.com/apache/flink/blob/0350bf105c41e92599fc64952610187d2385eb28/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/internals/ShardConsumerFanOutTest.java#L61]
 with a subsequent {{new Date()}} created 
[here|https://github.com/apache/flink/blob/0350bf105c41e92599fc64952610187d2385eb28/flink-connectors/flink-connector-kinesis/src/main/java/org/apache/flink/streaming/connectors/kinesis/util/AWSUtil.java#L323]
 and converted to an {{Instant}} 
[here|https://github.com/apache/flink/blob/0350bf105c41e92599fc64952610187d2385eb28/flink-connectors/flink-connector-kinesis/src/main/java/org/apache/flink/streaming/connectors/kinesis/internals/publisher/fanout/FanOutRecordPublisher.java#L263].
 {{new Date()}} delegates to 
[System.currentTimeMillis()|https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#Date--]
 and {{Instant.now()}} will use {{System.currentTimeMillis()}} or [a higher 
resolution clock if 
available|https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#now--].
 Since both timestamps are created sequentially in the same thread and this 
test usually passes, it could be one of the following problems:

1. System clock change: If the system clock changes between invocations, for 
example due to NTC sync, then the test could fail. To mitigate this we could 
relax or remove the failing assertion. Since the test is already testing that 
the starting position has been transformed on the [preceding 
line|https://github.com/apache/flink/blob/0350bf105c41e92599fc64952610187d2385eb28/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/internals/ShardConsumerFanOutTest.java#L70],
 removing the assertion is an option
 2. {{Instant.now()}} could be delegating to a higher resolution clock with a 
different accuracy. To mitigate this we can change the test to generate the 
timestamp using the same mechanism as the real code. Switch {{Instant.now()}} 
to {{new Date().toInstant()}}.

In any case, updating the assertion message is a good idea.

Feedback appreciated and I will raise a PR. I am inclined to implement option 2 
and keep an eye on the test for stability.

> ShardConsumerFanOutTest.testStartFromLatestIsTranslatedToTimestamp test 
> failed with AssertionError
> --------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-20908
>                 URL: https://issues.apache.org/jira/browse/FLINK-20908
>             Project: Flink
>          Issue Type: Bug
>          Components: Connectors / Kinesis
>    Affects Versions: 1.12.0
>            Reporter: Huang Xingbo
>            Priority: Major
>              Labels: test-stability
>
> [https://dev.azure.com/apache-flink/apache-flink/_build/results?buildId=11848&view=logs&j=e9af9cde-9a65-5281-a58e-2c8511d36983&t=b6c4efed-9c7d-55ea-03a9-9bd7d5b08e4c]
> {code:java}
> 2021-01-09T23:18:51.2867479Z [ERROR] Tests run: 10, Failures: 1, Errors: 0, 
> Skipped: 0, Time elapsed: 1.28 s <<< FAILURE! - in 
> org.apache.flink.streaming.connectors.kinesis.internals.ShardConsumerFanOutTest
> 2021-01-09T23:18:51.2868484Z [ERROR] 
> testStartFromLatestIsTranslatedToTimestamp(org.apache.flink.streaming.connectors.kinesis.internals.ShardConsumerFanOutTest)
>   Time elapsed: 0.011 s  <<< FAILURE!
> 2021-01-09T23:18:51.2869144Z java.lang.AssertionError
> 2021-01-09T23:18:51.2869443Z  at org.junit.Assert.fail(Assert.java:86)
> 2021-01-09T23:18:51.2869767Z  at org.junit.Assert.assertTrue(Assert.java:41)
> 2021-01-09T23:18:51.2870094Z  at org.junit.Assert.assertTrue(Assert.java:52)
> 2021-01-09T23:18:51.2870610Z  at 
> org.apache.flink.streaming.connectors.kinesis.internals.ShardConsumerFanOutTest.testStartFromLatestIsTranslatedToTimestamp(ShardConsumerFanOutTest.java:71)
> 2021-01-09T23:18:51.2871179Z  at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 2021-01-09T23:18:51.2871933Z  at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 2021-01-09T23:18:51.2872454Z  at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 2021-01-09T23:18:51.2872919Z  at 
> java.base/java.lang.reflect.Method.invoke(Method.java:566)
> 2021-01-09T23:18:51.2873344Z  at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> 2021-01-09T23:18:51.2873810Z  at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> 2021-01-09T23:18:51.2874600Z  at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> 2021-01-09T23:18:51.2875239Z  at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> 2021-01-09T23:18:51.2875656Z  at 
> org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> 2021-01-09T23:18:51.2876089Z  at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> 2021-01-09T23:18:51.2876561Z  at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> 2021-01-09T23:18:51.2876965Z  at 
> org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> 2021-01-09T23:18:51.2877408Z  at 
> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> 2021-01-09T23:18:51.2877813Z  at 
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> 2021-01-09T23:18:51.2878208Z  at 
> org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> 2021-01-09T23:18:51.2878682Z  at 
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> 2021-01-09T23:18:51.2879070Z  at 
> org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> 2021-01-09T23:18:51.2879473Z  at 
> org.junit.runners.Suite.runChild(Suite.java:128)
> 2021-01-09T23:18:51.2879818Z  at 
> org.junit.runners.Suite.runChild(Suite.java:27)
> 2021-01-09T23:18:51.2880186Z  at 
> org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> 2021-01-09T23:18:51.2880561Z  at 
> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> 2021-01-09T23:18:51.2880977Z  at 
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> 2021-01-09T23:18:51.2881381Z  at 
> org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> 2021-01-09T23:18:51.2881762Z  at 
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> 2021-01-09T23:18:51.2882155Z  at 
> org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> 2021-01-09T23:18:51.2882690Z  at 
> org.apache.maven.surefire.junitcore.JUnitCore.run(JUnitCore.java:55)
> 2021-01-09T23:18:51.2883178Z  at 
> org.apache.maven.surefire.junitcore.JUnitCoreWrapper.createRequestAndRun(JUnitCoreWrapper.java:137)
> 2021-01-09T23:18:51.2883704Z  at 
> org.apache.maven.surefire.junitcore.JUnitCoreWrapper.executeLazy(JUnitCoreWrapper.java:119)
> 2021-01-09T23:18:51.2884186Z  at 
> org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:87)
> 2021-01-09T23:18:51.2884774Z  at 
> org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:75)
> 2021-01-09T23:18:51.2885431Z  at 
> org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:158)
> 2021-01-09T23:18:51.2886077Z  at 
> org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
> 2021-01-09T23:18:51.2886597Z  at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
> 2021-01-09T23:18:51.2887072Z  at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
> 2021-01-09T23:18:51.2887533Z  at 
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to