-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Open
Labels
:Core/Infra/CoreCore issues without another labelCore issues without another label>bugFeature:Upgrade AssistantTeam:Core/InfraMeta label for core/infra teamMeta label for core/infra team
Description
In TransportNodeDeprecationCheckAction we check for nodes exceeding the low watermark by passing in the (filtered) static settings from the local node, and the (filtered) dynamic settings from its cluster state, and reporting a violation of the watermark if the node's disk usage is too high according to either of these settings sets:
Lines 138 to 140 in aced42f
| DeprecationIssue watermarkIssue = checkDiskLowWatermark( | |
| filteredNodeSettings, | |
| filteredClusterState.metadata().settings(), |
Lines 162 to 165 in aced42f
| if (exceedsLowWatermark(nodeSettings, clusterSettings, freeBytes, totalBytes) | |
| || exceedsLowWatermark(dynamicSettings, clusterSettings, freeBytes, totalBytes)) { | |
| return new DeprecationIssue( | |
| DeprecationIssue.Level.CRITICAL, |
There's several issues with this:
- There should be no facility for filtering out the relevant settings here.
- The node-local settings have no relevance to disk watermarks unless the node is the elected master.
- Even the elected master's node-local settings have no relevance to disk watermarks if the settings are overridden with dynamic values.
- Conversely, if the settings are not overriden with dynamic values then checking
filteredClusterState.metadata().settings()means checking against the default value of 85%, even if the master's node-local settings specify a different value.
Instead, since this action is originally invoked by the elected master, it should include in its request the actual disk watermark that the node should use.
Metadata
Metadata
Assignees
Labels
:Core/Infra/CoreCore issues without another labelCore issues without another label>bugFeature:Upgrade AssistantTeam:Core/InfraMeta label for core/infra teamMeta label for core/infra team