[
https://issues.apache.org/jira/browse/IGNITE-13135?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17135979#comment-17135979
]
Anton Kalashnikov commented on IGNITE-13135:
--------------------------------------------
[~alex_pl], it looks like a problem wider than I thought. Before the
IGNITE-13096, we had the following:
* Node tries to create new cache and send DynamicCacheChangeBatch around the
cluster
* Every node receives this message and try to register binary_metadata locally
but it will be successful only if node would be able to load received class
through local classloader which is usually impossible because this class
located only on the initiator node
* When we call cache#put for the first time the ignite would set schema to null
which triggers propagate phase for binary_metadata
In my opinion, two things like:
*'set schema to null'
*'register binary_metadata locally only for local class'
are unclear behaviors and should be fixed. But as I can see It's not so easy to
do it(I have not the right solution right now).
According to this ticket - the current fix is back invariants which were
described above and which were broken by IGNITE-13096(in fact, the only first
one was broken). So I think it is ok to finish this ticket as is and thinking
about the correctness of those invariants in a separate ticket.
Changes look good to me.
> CacheRegisterMetadataLocallyTest.testClientFindsValueByAffinityKeyStaticCacheWithoutExtraRequest
> failed
> -------------------------------------------------------------------------------------------------------
>
> Key: IGNITE-13135
> URL: https://issues.apache.org/jira/browse/IGNITE-13135
> Project: Ignite
> Issue Type: Bug
> Reporter: Aleksey Plekhanov
> Assignee: Aleksey Plekhanov
> Priority: Major
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Test failed with error:
> {noformat}
> java.lang.AssertionError: []
> Expected :2
> Actual :0
> at
> org.apache.ignite.testframework.junits.JUnitAssertAware.assertEquals(JUnitAssertAware.java:119)
> at
> org.apache.ignite.internal.processors.cache.CacheRegisterMetadataLocallyTest.assertCustomMessages(CacheRegisterMetadataLocallyTest.java:230)
> at
> org.apache.ignite.internal.processors.cache.CacheRegisterMetadataLocallyTest.testClientFindsValueByAffinityKeyStaticCacheWithoutExtraRequest(CacheRegisterMetadataLocallyTest.java:153){noformat}
> After fix IGNITE-13096
> Also test fails sometimes due to ConcurrentModificationException in
> CacheRegisterMetadataLocallyTest.assertCommunicationMessages:
> {noformat}
> class org.apache.ignite.IgniteException: null
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl0(GridToStringBuilder.java:1162)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl(GridToStringBuilder.java:1045)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:755)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:714)
> at
> org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemandMessage.toString(GridDhtPartitionDemandMessage.java:387)
> at
> org.apache.ignite.internal.processors.cache.CacheRegisterMetadataLocallyTest.lambda$assertCommunicationMessages$1(CacheRegisterMetadataLocallyTest.java:241)
> at
> java.base/java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037)
> at
> java.base/java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054)
> at
> org.apache.ignite.internal.processors.cache.CacheRegisterMetadataLocallyTest.assertCommunicationMessages(CacheRegisterMetadataLocallyTest.java:240)
> at
> org.apache.ignite.internal.processors.cache.CacheRegisterMetadataLocallyTest.testClientFindsValueByAffinityKeyStaticCacheWithoutExtraRequest(CacheRegisterMetadataLocallyTest.java:154)
> 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:47)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at
> org.apache.ignite.testframework.junits.GridAbstractTest$7.run(GridAbstractTest.java:2234)
> at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: class org.apache.ignite.IgniteException: null
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl0(GridToStringBuilder.java:1162)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl(GridToStringBuilder.java:1045)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:831)
> at
> org.apache.ignite.internal.processors.cache.distributed.dht.preloader.IgniteDhtDemandedPartitionsMap.toString(IgniteDhtDemandedPartitionsMap.java:167)
> at java.base/java.lang.String.valueOf(String.java:2951)
> at
> org.apache.ignite.internal.util.GridStringBuilder.a(GridStringBuilder.java:102)
> at
> org.apache.ignite.internal.util.tostring.SBLimitedLength.a(SBLimitedLength.java:100)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:900)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl0(GridToStringBuilder.java:1111)
> ... 19 more
> Caused by: java.util.ConcurrentModificationException
> at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1493)
> at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1516)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.addCollection(GridToStringBuilder.java:950)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:896)
> at
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl0(GridToStringBuilder.java:1111)
> ... 27 more{noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)