mirror of
https://github.com/balena-os/balena-supervisor.git
synced 2025-04-16 15:28:52 +00:00
Avoid writing target device config to DB if it hasn't changed
This helps avoid unnecessary writes to the DB which may cause disk wearout. We also change the error message in this section to show that the error might have happened when fetching the device config as much as when setting it. Change-Type: patch Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
This commit is contained in:
parent
8a1d17a697
commit
e36fa601ad
@ -500,7 +500,7 @@ getAndApplyDeviceConfig = ->
|
||||
.then ({ values, targetValues }) ->
|
||||
executeSpecialActionsAndHostConfig(targetValues, values)
|
||||
.tap ->
|
||||
deviceConfig.set({ values: targetValues })
|
||||
deviceConfig.set({ values: targetValues }) if !_.isEqual(values, targetValues)
|
||||
.then (needsReboot) ->
|
||||
if needsReboot
|
||||
logSystemMessage('Rebooting', {}, 'Reboot')
|
||||
@ -719,11 +719,16 @@ application.update = update = (force, scheduled = false) ->
|
||||
remoteDeviceConfig = {}
|
||||
_.map remoteAppIds, (appId) ->
|
||||
_.merge(remoteDeviceConfig, JSON.parse(remoteApps[appId].config))
|
||||
deviceConfig.set({ targetValues: remoteDeviceConfig })
|
||||
.then ->
|
||||
getAndApplyDeviceConfig()
|
||||
deviceConfig.get()
|
||||
.then ({ values, targetValues }) ->
|
||||
# If the new device config is different from the target values we had, or if
|
||||
# for some reason it hasn't been applied yet (values don't match target), we apply it.
|
||||
if !_.isEqual(targetValues, remoteDeviceConfig) or !_.isEqual(targetValues, values)
|
||||
deviceConfig.set({ targetValues: remoteDeviceConfig })
|
||||
.then ->
|
||||
getAndApplyDeviceConfig()
|
||||
.catch (err) ->
|
||||
logSystemMessage("Error applying device configuration: #{err}", { error: err }, 'Set device configuration error')
|
||||
logSystemMessage("Error fetching/applying device configuration: #{err}", { error: err }, 'Set device configuration error')
|
||||
.return(allAppIds)
|
||||
.map (appId) ->
|
||||
return if application.localMode
|
||||
|
Loading…
x
Reference in New Issue
Block a user