[
https://issues.apache.org/jira/browse/IGNITE-28938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18101898#comment-18101898
]
Anton Vinogradov commented on IGNITE-28938:
-------------------------------------------
[Ignite PR Checker|https://ignite-pr-checker.is-a.dev/?pr=13427] verdict for PR
13427 · RunAll build [9253822|https://ci2.ignite.apache.org/build/9253822] ·
147 suites ran, 0 reused
(!) *This run doesn't cover the PR fully:*
- 1 suite(s) have no reliable result (compilation error, timeout, crash)
- 1 suite(s) ran far fewer tests than the same suites on master
(!) *1 broken suite(s)* (failed without a reliable run):
- Cache (Failover) 5: execution timeout · non-zero exit code · Number of tests
33 is 51% less than 67 in build #452
(?) *1 suite(s) ran fewer tests than on master* (tests that never ran can't
fail):
- Cache (Failover) 5: 33 tests vs 67 on master (*-51%*)
(x) *3 blocker(s) in 3 suite(s):*
- Platform .NET (Core Linux): {{Apache.Ignite.Core.Tests.DotNetCore:
Apache.Ignite.Core.Tests.Examples.ThickExamplesExternalNodeTest.TestThickExampleWithExternalNode(TransactionDeadlockDetection)}}
- Basic 2:
{{org.apache.ignite.testsuites.IgniteMessagingConfigVariationFullApiTestSuite:
org.apache.ignite.testframework.configvariations.generated.IgniteMessagingConfigVariationFullApiTest_5.testClientClientOrderedMessage}}
- Cache (Failover) 3:
{{org.apache.ignite.testsuites.IgniteCacheFailoverTestSuite3:
org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCachePutRetryAtomicSelfTest.testInvoke}}
⏳ _Auto re-run *#1* in progress — 3 blocker + 1 broken suite(s) re-queued
(attempt 1/2), *≈ settled by 02:35 MSK*. This comment updates when they settle._
> Split MarshallableMessage: callback before send vs marshalling
> --------------------------------------------------------------
>
> Key: IGNITE-28938
> URL: https://issues.apache.org/jira/browse/IGNITE-28938
> Project: Ignite
> Issue Type: Sub-task
> Components: messaging
> Reporter: Anton Vinogradov
> Assignee: Anton Vinogradov
> Priority: Major
> Labels: IEP-132
> Fix For: 2.19
>
> Time Spent: 2.5h
> Remaining Estimate: 0h
>
> *No wire format change.*
> h3. Goal
> Do not give a marshaller to messages that only need a callback before send.
> h3. Why
> {{MarshallableMessage}} is used for two different things. 12 of its 21
> implementations really use the marshaller. The other 8 use neither the
> marshaller nor the class loader - they only change their own fields:
> * {{CacheContinuousQueryEntry}} - clears data;
> * {{GridCacheEntryInfo}} - recalculates TTL;
> * {{GridDhtPartitionsFullMessage}} and {{GridDhtPartitionsSingleMessage}} -
> copy and zip partition maps;
> * {{GridNearTxPrepareRequest}} - sets an expiry policy flag;
> * {{ColocationGroup}} - packs bits;
> * {{CompressedMessage}} and {{GridH2ValueMessage}}.
> All 8 still get a {{Marshaller}} field in the generated companion.
> h3. How
> * add a new interface for the callback, with no marshaller and no class
> loader;
> * move these 8 classes to it, so the generator calls the callback instead of
> {{msg.marshal(marshaller)}};
> * keep {{MarshallableMessage}} for the other 12.
> h3. Expected result
> The type now shows if a class needs a marshaller. 8 companions lose the
> field. {{GridTestUtils#loadMarshaller}} becomes correct again: it picks a
> constructor by {{instanceof MarshallableMessage}}, while the generator uses
> {{marshallable || hasMarshalled}}.
> h3. How to verify
> Full build and the message tests. Generated code of these 8 classes must stay
> the same, except the removed field.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)