| 1423 | } |
| 1424 | |
| 1425 | func (s *Service) applyHomeOverlayContext(ctx context.Context, remoteCfg *config.Config) error { |
| 1426 | if s == nil || remoteCfg == nil { |
| 1427 | return nil |
| 1428 | } |
| 1429 | if ctx == nil { |
| 1430 | ctx = context.Background() |
| 1431 | } |
| 1432 | |
| 1433 | s.cfgMu.RLock() |
| 1434 | baseCfg := s.cfg |
| 1435 | s.cfgMu.RUnlock() |
| 1436 | if baseCfg == nil { |
| 1437 | return nil |
| 1438 | } |
| 1439 | |
| 1440 | merged := *remoteCfg |
| 1441 | merged.Host = baseCfg.Host |
| 1442 | merged.Port = baseCfg.Port |
| 1443 | merged.TLS = baseCfg.TLS |
| 1444 | merged.Home = baseCfg.Home |
| 1445 | forceHomeRuntimeConfig(&merged) |
| 1446 | |
| 1447 | logHomeConfigChanges(baseCfg, &merged) |
| 1448 | report, syncKey, didSync, errSync := s.syncHomePlugins(ctx, &merged) |
| 1449 | if didSync { |
| 1450 | if errSync != nil { |
| 1451 | log.Warnf("failed to sync home plugins: %v", errSync) |
| 1452 | } |
| 1453 | } |
| 1454 | s.applyConfigUpdate(&merged) |
| 1455 | if didSync { |
| 1456 | errLoad := homeplugins.MarkLoadResults(&report, s.pluginHost) |
| 1457 | if errLoad != nil { |
| 1458 | log.Warnf("failed to load home plugins after config update: %v", errLoad) |
| 1459 | } |
| 1460 | s.reportHomePluginStatus(ctx, &merged, report) |
| 1461 | if errSync == nil && errLoad == nil { |
| 1462 | s.markHomePluginsSynced(syncKey) |
| 1463 | } |
| 1464 | } |
| 1465 | s.processHomePluginTasks(ctx, &merged) |
| 1466 | return nil |
| 1467 | } |
| 1468 | |
| 1469 | func logHomeConfigChanges(oldCfg, newCfg *config.Config) { |
| 1470 | if oldCfg == nil || newCfg == nil || !newCfg.Home.Enabled || (!oldCfg.Debug && !newCfg.Debug) { |