gavinchou commented on PR #68266:
URL: https://github.com/apache/doris/pull/68266#issuecomment-5761366384

   Rolling-upgrade compatibility: an old FE cannot safely consume process-list 
rows returned by a new FE.
   
   The prescribed order (upgrade all BEs first, then roll the FEs) avoids the 
old-BE -> new-FE combination, but it does not remove the old-FE -> new-FE 
window. `SHOW PROCESSLIST` first reads the local connection pool and, because 
`fetch_all_fe_for_system_table` defaults to `true`, then calls 
`showProcessList` on every other FE. A new FE unconditionally appends 
`Protocol` and returns a 16-value row. An old FE still advertises 15-column 
metadata and adds the remote row without fitting it, so an old FE serving `SHOW 
PROCESSLIST` during the FE rollout can emit rows whose arity does not match the 
result metadata. The new `fitToColumns` code only solves new-reader -> 
old-writer compatibility.
   
   Could we make the response shape caller-negotiated? For example, add an 
optional request capability / expected-column-count field: when it is absent 
(old caller), return the legacy 15 columns; new callers explicitly request 16 
columns. A mixed-version test using an old FE reader against the new FE writer 
would cover the missing direction.


-- 
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