Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-18003

ItTablesApiTest#testCreateDropTable became flaky

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 3.0.0-beta1
    • None

    Description

      Motivation:
      Seems that index create listener in IndexManager gets table from TableManager without using causality token, and sometimes it appears that table is not created yet. Using the causality token should gurantee the presence of table in table manager for the index manager.
      This causes unstability of the test ItTablesApiTest#testCreateDropTable:

      [16:41:04][org.apache.ignite:ignite-runner] 2022-10-27 19:41:04:009 +0300 [INFO][main][ItTablesApiTest] Dropping the table ignored.
      [16:41:04][org.apache.ignite:ignite-runner] org.apache.ignite.lang.TableNotFoundException: IGN-TBL-2 TraceId:4ecb38fa-7440-448f-8d13-4d351df39ee7 The table does not exist [name="PUBLIC"."TBL1"]
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.table.distributed.TableManager.lambda$dropTableAsyncInternal$57(TableManager.java:1368)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:753)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:731)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2108)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.table.distributed.TableManager.dropTableAsyncInternal(TableManager.java:1364)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.table.distributed.TableManager.dropTableAsync(TableManager.java:1354)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.runner.app.ItTablesApiTest.dropTableIfExists(ItTablesApiTest.java:517)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.runner.app.ItTablesApiTest.testCreateDropTable(ItTablesApiTest.java:451)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:188)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:154)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:128)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:428)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:562)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:548)
      [16:41:04][org.apache.ignite:ignite-runner] 	Suppressed: java.lang.RuntimeException: This is a trimmed root
      [16:41:04][org.apache.ignite:ignite-runner] 		at org.apache.ignite.internal.testframework.IgniteTestUtils.await(IgniteTestUtils.java:749)
      [16:41:04][org.apache.ignite:ignite-runner] 		at org.apache.ignite.internal.testframework.IgniteTestUtils.await(IgniteTestUtils.java:769)
      [16:41:04][org.apache.ignite:ignite-runner] 		... 72 more
      [16:41:04][org.apache.ignite:ignite-runner] 2022-10-27 19:41:04:013 +0300 [INFO][vault1][ConfigurationRegistry] Failed to notify configuration listener
      [16:41:04][org.apache.ignite:ignite-runner] java.util.concurrent.CompletionException: java.lang.NullPointerException
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:757)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:731)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2108)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.index.IndexManager.createIndexLocally(IndexManager.java:387)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.index.IndexManager.onIndexCreate(IndexManager.java:364)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.index.IndexManager$ConfigurationListener.onCreate(IndexManager.java:541)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier.notifyPublicListeners(ConfigurationNotifier.java:492)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier$1.visitNamedListNode(ConfigurationNotifier.java:205)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier$1.visitNamedListNode(ConfigurationNotifier.java:128)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.schema.configuration.TablesNode.traverseChildren(Unknown Source)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier.notifyListeners(ConfigurationNotifier.java:128)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier.notifyListeners(ConfigurationNotifier.java:90)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.ConfigurationRegistry$2.visitInnerNode(ConfigurationRegistry.java:310)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.ConfigurationRegistry$2.visitInnerNode(ConfigurationRegistry.java:292)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.SuperRoot.traverseChildren(SuperRoot.java:103)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.ConfigurationRegistry.notificator(ConfigurationRegistry.java:292)
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.configuration.ConfigurationChanger.lambda$updateFromListener$9(ConfigurationChanger.java:596)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1742)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.lang.Thread.run(Thread.java:834)
      [16:41:04][org.apache.ignite:ignite-runner] Caused by: java.lang.NullPointerException
      [16:41:04][org.apache.ignite:ignite-runner] 	at org.apache.ignite.internal.index.IndexManager.lambda$createIndexLocally$9(IndexManager.java:389)
      [16:41:04][org.apache.ignite:ignite-runner] 	at java.base/java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:753)
      [16:41:04][org.apache.ignite:ignite-runner] 	... 22 more
      

      Implementation Notes
      Getting table from TableManager using causality token guarantees that the future that will be returned to the listener in IndexManager will be completed when the corresponding table is created after the configuration changes related to this token are applied, and this future will contain this table as a result.

      Attachments

        Issue Links

          Activity

            People

              Denis Chudov Denis Chudov
              Denis Chudov Denis Chudov
              Alexander Lapin Alexander Lapin
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 10m
                  10m