fix: Make sys.server_properties table filterable and resilient to unreachable servers#19459
Open
abhishekrb19 wants to merge 2 commits into
Open
fix: Make sys.server_properties table filterable and resilient to unreachable servers#19459abhishekrb19 wants to merge 2 commits into
sys.server_properties table filterable and resilient to unreachable servers#19459abhishekrb19 wants to merge 2 commits into
Conversation
GWphua
approved these changes
May 13, 2026
Contributor
GWphua
left a comment
There was a problem hiding this comment.
LGTM with non-blocking comments.
| ### SERVER_PROPERTIES table | ||
|
|
||
| The `server_properties` table exposes the runtime properties configured on for each Druid server. Each row represents a single property key-value pair associated with a specific server. | ||
| The `server_properties` table exposes the runtime properties configured on each Druid server. Each row represents a single property key-value pair associated with a specific server. This table supports filter and projection pushdown for efficient querying. If a server is unreachable, the table still returns a row for that server with the `error` column populated instead of failing the entire query. |
Contributor
There was a problem hiding this comment.
Suggested change
| The `server_properties` table exposes the runtime properties configured on each Druid server. Each row represents a single property key-value pair associated with a specific server. This table supports filter and projection pushdown for efficient querying. If a server is unreachable, the table still returns a row for that server with the `error` column populated instead of failing the entire query. | |
| The `server_properties` table exposes the runtime properties configured on each Druid server. Each row represents a single property key-value pair associated with a specific server. This table supports filter and projection pushdown for efficient querying. If a server is unreachable, the table still returns a row for that server with the `error_message` column populated instead of failing the entire query. |
| public void test_serverPropertiesTable_errorMessageColumnExists() | ||
| { | ||
| final String result = cluster.runSql("SELECT COUNT(*) FROM sys.server_properties WHERE error_message IS NULL"); | ||
| Assertions.assertFalse(result.isEmpty(), "Should return count of servers with null error_message"); |
Contributor
There was a problem hiding this comment.
nit: I think this test just checks if the query did not fail. Can we make the test stronger? For example, asserting a return of a known value (e.g. 0,1,etc.)
Contributor
|
If this is not urgent, we can wait a day for the AI-assisted review to trigger. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
sys.server_propertiesfilterable, similar to a few other sys tables likeSegmentsTable— changed fromScannableTabletoProjectableFilterableTable, enabling Calcite to push down filters (e.g., WHERE server = '...') and projections to the table scan.error_message column populated with what went wrong.
error_messagecolumn — this column indicates if properties couldn't be fetched (e.g., "Connection refused", "HTTP 503: Service Unavailable"). Null on success.Release note:
Added
error_messagecolumn tosys.server_properties tableand made the table resilient to unreachable servers. Previously, the entire query would fail if any server was unreachable; now a row is returned witherror_messagepopulated. The table also now supports filter and projection pushdown.This PR has: