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]

Reply via email to