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]
