Anton Vinogradov created IGNITE-28939:
-----------------------------------------

             Summary: Replace marshaller blobs of internal types with regular 
message fields
                 Key: IGNITE-28939
                 URL: https://issues.apache.org/jira/browse/IGNITE-28939
             Project: Ignite
          Issue Type: Sub-task
          Components: messaging
            Reporter: Anton Vinogradov
            Assignee: Anton Vinogradov
             Fix For: 2.19


h3. Goal

Remove the question "which marshaller" for fields holding internal types, 
instead of answering it.

h3. Why

Some blob fields exist only because an internal type was never turned into a 
{{Message}}. For them binary brings no schema at all: 
{{BinaryUtils#isCustomJavaSerialization}} walks the whole class hierarchy, so 
{{Externalizable}} types fall back to {{OptimizedMarshaller}} inside binary. 
One of them is also the source of an inconsistency - {{BinaryMetadata}} travels 
binary in {{BinaryMetadataVersionInfo}} and jdk in 
{{MetadataUpdateProposedMessage}}.

h3. How

Convert to plain message serialization:
* {{BinaryMetadataVersionInfo#metadata}} and 
{{MetadataUpdateProposedMessage#metadata}} - {{BinaryMetadata}} has flat 
fields: type id and name, field metadata map, schemas, enum maps, flags;
* {{ChangeGlobalStateMessage#baselineTopology}} - {{BaselineTopology}};
* {{GridJobSiblingsResponse#siblings}} - implemented by the internal 
{{GridJobSiblingImpl}};
* {{StoredCacheData#qryEntities}} and {{DynamicCacheChangeRequest#schema}} - 
{{QueryEntityMessage}} already exists.

Fields that genuinely carry user classes stay blobs: node attributes, service 
affinity key, query entity default values, entry processors and invoke 
arguments, query filters, reducers and transformers, task results, message 
topic, cache configuration, plugin discovery data, {{Throwable}}.

h3. Expected result

Blob fields drop from 24 to about 19, the {{BinaryMetadata}} inconsistency 
disappears, and the converted fields stop depending on any marshaller - usually 
getting smaller on the wire as a bonus.

h3. How to verify

Binary metadata update and node join tests, cluster state change tests, dynamic 
cache start with query entities, job siblings tests; compare wire size for the 
converted messages.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to