eldenmoon opened a new pull request, #70492:
URL: https://github.com/apache/doris/pull/70492

   cherry-pick #69434
   
   Supersedes #69454, which was opened for branch-4.1 and closed unmerged 
before #69434 merged.
   
   Problem: during a mixed-version upgrade a 4.1 backend can receive a Variant 
V1 block from a 4.0
   backend. The 4.0 block carries `variant_max_subcolumns_count` but no 
`variant_enable_doc_mode`
   field and no trailing doc-value map; the current 4.1 V1 deserializer reads 
that map
   unconditionally, so it decodes past the payload and can crash the receiving 
backend.
   
   Fix: pass the presence of `variant_enable_doc_mode` through the factory's 
Variant V1 branch and
   reject a V1 block at the deserialization entry when the field is absent. 
Presence is the format
   marker: this branch sets the field even when doc mode is false and always 
writes the trailing map.
   The V1/V2 wire layout and `be_exec_version` are unchanged.
   
   Validation:
   - ASAN `./build.sh --be`
   - `./run-be-ut.sh --run --filter=BlockVariantWireFormatTest.*`: 4/4 passed 
(legacy marker absent,
     raw pre-doc payload, nested ARRAY/MAP/STRUCT, V1/V2 round trips)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to