Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-7453

Test testEmptyChangesProducesHeartbeat tends to fail randomly

      The test RecordsStreamProducerIT test testEmptyChangesProducesHeartbeat tends to fail randomly in the PostgreSQL test suite.

      This test tends to expect that there to be a change in LSN between the two Awaitility blocks; however, based on timing the second block will continue to get the same LSN as the former, which means that the CREATE SCHEMA statement does not do what we expect.

      All this leads this to problem:

      org.awaitility.core.ConditionTimeoutException: Condition with io.debezium.connector.postgresql.RecordsStreamProducerIT was not fulfilled within 20 seconds.
      
      	at org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:148)
      	at org.awaitility.core.CallableCondition.await(CallableCondition.java:78)
      	at org.awaitility.core.CallableCondition.await(CallableCondition.java:26)
      	at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:873)
      	at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:842)
      	at io.debezium.connector.postgresql.RecordsStreamProducerIT.testEmptyChangesProducesHeartbeat(RecordsStreamProducerIT.java:2511)
      	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
      	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
      	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
      	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
      	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
      	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
      	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
      	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
      	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
      	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
      	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
      	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
      	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
      	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
      	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
      	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
      	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
      	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:30)
      	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
      	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
      	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
      

            [DBZ-7453] Test testEmptyChangesProducesHeartbeat tends to fail randomly

            Applied to main (=2.6)

            Chris Cranford added a comment - Applied to main (=2.6)

            This test was initially introduced for the behavior observed by wal2json. The expectation is that DDL events emit some event, whether a DDL event or a BEGIN/COMMIT. As wal2json has been removed, I looked at decoderbufs vs pgoutput and observed that decoderbufs emits BEGIN/COMMIT events whereas for pgoutput emits nothing when the schema change is applied. Therefore, it stands to reason that the test should be excluded for pgoutput.

            Chris Cranford added a comment - This test was initially introduced for the behavior observed by wal2json. The expectation is that DDL events emit some event, whether a DDL event or a BEGIN/COMMIT. As wal2json has been removed, I looked at decoderbufs vs pgoutput and observed that decoderbufs emits BEGIN/COMMIT events whereas for pgoutput emits nothing when the schema change is applied. Therefore, it stands to reason that the test should be excluded for pgoutput.

              ccranfor@redhat.com Chris Cranford
              ccranfor@redhat.com Chris Cranford
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: