Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
Docs Required, Release Notes Required
Description
Subj is flaky on latest sql-calcite, failing during executing select query with following trace:
java.lang.IllegalStateException: Getting affinity for too old topology version that is already out of history [locNode=TcpDiscoveryNode [id=0e578517-57f9-4e64-a535-1fa623800001, consistentId=127.0.0.1:47501, addrs=ArrayList [127.0.0.1], sockAddrs=HashSet [/127.0.0.1:47501], discPort=47501, order=2, intOrder=2, lastExchangeTime=1624444115374, loc=true, ver=2.11.0#20210622-sha1:22a4aa1f, isClient=false], grp=SQL_PUBLIC_TEST_TBL, topVer=AffinityTopologyVersion [topVer=6, minorTopVer=0], lastAffChangeTopVer=AffinityTopologyVersion [topVer=5, minorTopVer=1], head=AffinityTopologyVersion [topVer=6, minorTopVer=1], history=[AffinityTopologyVersion [topVer=6, minorTopVer=1]]] at org.apache.ignite.internal.processors.affinity.GridAffinityAssignmentCache.cachedAffinity(GridAffinityAssignmentCache.java:831) at org.apache.ignite.internal.processors.affinity.GridAffinityAssignmentCache.cachedAffinity(GridAffinityAssignmentCache.java:778) at org.apache.ignite.internal.processors.affinity.GridAffinityAssignmentCache.assignments(GridAffinityAssignmentCache.java:618) at org.apache.ignite.internal.processors.cache.GridCacheAffinityManager.assignments(GridCacheAffinityManager.java:131) at org.apache.ignite.internal.processors.query.calcite.schema.TableDescriptorImpl.partitionedGroup(TableDescriptorImpl.java:541) at org.apache.ignite.internal.processors.query.calcite.schema.TableDescriptorImpl.colocationGroup(TableDescriptorImpl.java:529) at org.apache.ignite.internal.processors.query.calcite.schema.IgniteTableImpl.colocationGroup(IgniteTableImpl.java:148) at org.apache.ignite.internal.processors.query.calcite.metadata.IgniteMdFragmentMapping.fragmentMapping(IgniteMdFragmentMapping.java:198) at GeneratedMetadataHandler_FragmentMappingMetadata.fragmentMapping_$(Unknown Source) at GeneratedMetadataHandler_FragmentMappingMetadata.fragmentMapping(Unknown Source) at org.apache.ignite.internal.processors.query.calcite.metadata.RelMetadataQueryEx.fragmentMapping(RelMetadataQueryEx.java:97) at org.apache.ignite.internal.processors.query.calcite.metadata.IgniteMdFragmentMapping._fragmentMapping(IgniteMdFragmentMapping.java:224) at org.apache.ignite.internal.processors.query.calcite.metadata.IgniteMdFragmentMapping.fragmentMapping(IgniteMdFragmentMapping.java:85) at GeneratedMetadataHandler_FragmentMappingMetadata.fragmentMapping_$(Unknown Source) at GeneratedMetadataHandler_FragmentMappingMetadata.fragmentMapping(Unknown Source) at org.apache.ignite.internal.processors.query.calcite.metadata.RelMetadataQueryEx.fragmentMapping(RelMetadataQueryEx.java:97) at org.apache.ignite.internal.processors.query.calcite.metadata.IgniteMdFragmentMapping._fragmentMapping(IgniteMdFragmentMapping.java:224) at org.apache.ignite.internal.processors.query.calcite.prepare.Fragment.mapping(Fragment.java:154) at org.apache.ignite.internal.processors.query.calcite.prepare.Fragment.map(Fragment.java:148) at org.apache.ignite.internal.processors.query.calcite.prepare.QueryTemplate.map(QueryTemplate.java:95) at org.apache.ignite.internal.processors.query.calcite.prepare.QueryTemplate.map(QueryTemplate.java:71) at org.apache.ignite.internal.processors.query.calcite.prepare.AbstractMultiStepPlan.init(AbstractMultiStepPlan.java:92) at org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.executeQuery(ExecutionServiceImpl.java:680) at org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.executePlan(ExecutionServiceImpl.java:654) at org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.executePlans(ExecutionServiceImpl.java:410) at org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.executeQuery(ExecutionServiceImpl.java:392) at org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.query(CalciteQueryProcessor.java:258) at org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessorTest.testInfixTypeCast(CalciteQueryProcessorTest.java:1031) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.apache.ignite.testframework.junits.GridAbstractTest$7.run(GridAbstractTest.java:2432) at java.base/java.lang.Thread.run(Thread.java:829)
Workaround is to wait for affinity ready future (i.e awaitPartitionMapExchange())