Jackie-Jiang opened a new pull request, #19677:
URL: https://github.com/apache/pinot/pull/19677
## Summary
`POST /schemas` with `override=true` (the default) updates an existing
schema in ZK but never notifies the servers, while `PUT /schemas/{name}` sends
the `TableConfigSchemaRefreshMessage` to every table using the schema. Since
#19571 servers load ordinary segments against the cached table config and
schema and only refresh that cache on this message, an explicit reload or a
table config update, so after a `POST` override every segment loaded afterwards
is processed against the previous schema: `ImmutableSegmentLoader` drops the
columns it does not find in the schema and the default-column handler adds the
ones no longer in it.
This routes the override path through the same notification as `PUT` without
reload:
- `addSchema(schema, override=true, force)` now calls
`refreshTablesUsingSchema` after writing the schema.
- `updateSchema(schema, reload, force)` is split into
`reloadTablesUsingSchema` and `refreshTablesUsingSchema` so both entry points
share the logical-table skip and the "no table uses this schema yet" handling.
Observed downstream: a table whose schema gained a column through `POST
/schemas`, followed by a minion task that rebuilt the segments with the new
column, ended up with segments that still lacked the column on the server,
because the server loaded them against the stale cached schema.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
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]