From 5d2a7df1ffaaa30971f37fa875a6c77f7213fad5 Mon Sep 17 00:00:00 2001 From: Aphral Griffin Date: Mon, 17 Nov 2025 15:15:57 +0000 Subject: [PATCH 1/4] add more logs for debug --- internal/file/file_manager_service.go | 1 + internal/file/file_operator.go | 4 ++++ internal/file/file_plugin.go | 1 + internal/watcher/file/file_watcher_service.go | 11 ++++++++++- internal/watcher/watcher_plugin.go | 3 +++ 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/internal/file/file_manager_service.go b/internal/file/file_manager_service.go index af0e67a91..f944eb20b 100644 --- a/internal/file/file_manager_service.go +++ b/internal/file/file_manager_service.go @@ -214,6 +214,7 @@ func (fms *FileManagerService) ClearCache() { clear(fms.fileActions) clear(fms.previousManifestFiles) + slog.Debug("File manager service cleared successfully") } //nolint:revive,cyclop // cognitive-complexity of 13 max is 12, loop is needed cant be broken up diff --git a/internal/file/file_operator.go b/internal/file/file_operator.go index c54482199..573c933d1 100644 --- a/internal/file/file_operator.go +++ b/internal/file/file_operator.go @@ -157,6 +157,10 @@ func (fo *FileOperator) WriteManifestFile( ctx context.Context, updatedFiles map[string]*model.ManifestFile, manifestDir, manifestPath string, ) (writeError error) { slog.DebugContext(ctx, "Writing manifest file", "updated_files", updatedFiles) + for _, file := range updatedFiles { + slog.DebugContext(ctx, "Updated File: ", "file", file.ManifestFileMeta.Name, "hash", + file.ManifestFileMeta.Hash, "referenced", file.ManifestFileMeta.Referenced) + } manifestJSON, err := json.MarshalIndent(updatedFiles, "", " ") if err != nil { return fmt.Errorf("unable to marshal manifest file json: %w", err) diff --git a/internal/file/file_plugin.go b/internal/file/file_plugin.go index a9747b7b3..650fbd6d8 100644 --- a/internal/file/file_plugin.go +++ b/internal/file/file_plugin.go @@ -182,6 +182,7 @@ func (fp *FilePlugin) handleConfigApplyComplete(ctx context.Context, msg *bus.Me fp.messagePipe.Process(ctx, &bus.Message{Topic: bus.DataPlaneResponseTopic, Data: response}) fp.fileManagerService.ClearCache() + slog.DebugContext(ctx, "File manager service cleared successfully, enabling watchers after config apply complete") fp.enableWatchers(ctx, &model.NginxConfigContext{}, response.GetInstanceId()) } diff --git a/internal/watcher/file/file_watcher_service.go b/internal/watcher/file/file_watcher_service.go index 3779d8c99..bea457f00 100644 --- a/internal/watcher/file/file_watcher_service.go +++ b/internal/watcher/file/file_watcher_service.go @@ -83,7 +83,12 @@ func (fws *FileWatcherService) Watch(ctx context.Context, ch chan<- FileUpdateMe return case <-instanceWatcherTicker.C: - fws.checkForUpdates(ctx, ch) + if fws.enabled.Load() { + fws.checkForUpdates(ctx, ch) + } else { + slog.DebugContext(ctx, "Skipping check for file updates, file watcher is disabled") + } + } if fws.watcher != nil { @@ -110,6 +115,7 @@ func (fws *FileWatcherService) DisableWatcher(ctx context.Context) { } } fws.enabled.Store(false) + slog.DebugContext(ctx, "Successfully disabled file watcher") } func (fws *FileWatcherService) EnableWatcher(ctx context.Context) { @@ -118,6 +124,7 @@ func (fws *FileWatcherService) EnableWatcher(ctx context.Context) { fws.addWatchers(ctx) } fws.enabled.Store(true) + slog.DebugContext(ctx, "Successfully Enabled file watcher") } func (fws *FileWatcherService) Update(ctx context.Context, nginxConfigContext *model.NginxConfigContext) { @@ -166,6 +173,7 @@ func (fws *FileWatcherService) addWatchers(ctx context.Context) { if err != nil { slog.DebugContext(ctx, "Failed to add file watcher", "directory", directory, "error", err) } else { + slog.DebugContext(ctx, "Successfully added file watcher", "directory", directory) fws.filesChanged.Store(true) } } @@ -185,6 +193,7 @@ func (fws *FileWatcherService) removeWatchers(ctx context.Context) { fws.filesChanged.Store(true) } else if _, ok := fws.directoriesToWatch[directoryBeingWatched]; !ok { fws.removeWatcher(ctx, directoryBeingWatched) + slog.DebugContext(ctx, "Successfully removed file watcher", "directory", directoryBeingWatched) fws.filesChanged.Store(true) } } diff --git a/internal/watcher/watcher_plugin.go b/internal/watcher/watcher_plugin.go index 834c7283f..1af1de68a 100644 --- a/internal/watcher/watcher_plugin.go +++ b/internal/watcher/watcher_plugin.go @@ -173,6 +173,7 @@ func (w *Watcher) handleEnableWatchers(ctx context.Context, msg *bus.Message) { // if config apply ended in a reload there is no need to reparse the config so an empty config context is sent // from the file plugin if configContext.InstanceID != "" { + slog.DebugContext(ctx, "Empty instance ID in enable watchers") w.instanceWatcherService.HandleNginxConfigContextUpdate(ctx, instanceID, configContext) } @@ -213,8 +214,10 @@ func (w *Watcher) handleConfigApplyRequest(ctx context.Context, msg *bus.Message defer w.watcherMutex.Unlock() w.instancesWithConfigApplyInProgress = append(w.instancesWithConfigApplyInProgress, instanceID) + slog.DebugContext(ctx, "Watcher plugin disabling watchers for config apply request") w.fileWatcherService.DisableWatcher(ctx) w.instanceWatcherService.SetEnabled(false) + slog.DebugContext(ctx, "Watcher plugin successfully disabled watchers for config apply request") } func (w *Watcher) handleHealthRequest(ctx context.Context) { From bcb5408c20a49580dd8bebf6317ee55251fc00f5 Mon Sep 17 00:00:00 2001 From: Aphral Griffin Date: Mon, 17 Nov 2025 15:21:37 +0000 Subject: [PATCH 2/4] add more logs for debug --- internal/watcher/file/file_watcher_service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/watcher/file/file_watcher_service.go b/internal/watcher/file/file_watcher_service.go index bea457f00..510310c86 100644 --- a/internal/watcher/file/file_watcher_service.go +++ b/internal/watcher/file/file_watcher_service.go @@ -57,6 +57,7 @@ func NewFileWatcherService(agentConfig *config.Config) *FileWatcherService { } } +//nolint func (fws *FileWatcherService) Watch(ctx context.Context, ch chan<- FileUpdateMessage) { monitoringFrequency := fws.agentConfig.Watchers.FileWatcher.MonitoringFrequency slog.DebugContext(ctx, "Starting file watcher monitoring", "monitoring_frequency", monitoringFrequency) @@ -88,7 +89,6 @@ func (fws *FileWatcherService) Watch(ctx context.Context, ch chan<- FileUpdateMe } else { slog.DebugContext(ctx, "Skipping check for file updates, file watcher is disabled") } - } if fws.watcher != nil { From e044ef16e887c9ec4bb2ad83f7c877012d78bc76 Mon Sep 17 00:00:00 2001 From: Aphral Griffin Date: Mon, 17 Nov 2025 15:24:36 +0000 Subject: [PATCH 3/4] add more logs for debug --- internal/watcher/file/file_watcher_service.go | 1 - lefthook.yml | 30 +++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/internal/watcher/file/file_watcher_service.go b/internal/watcher/file/file_watcher_service.go index 510310c86..9d5740b77 100644 --- a/internal/watcher/file/file_watcher_service.go +++ b/internal/watcher/file/file_watcher_service.go @@ -57,7 +57,6 @@ func NewFileWatcherService(agentConfig *config.Config) *FileWatcherService { } } -//nolint func (fws *FileWatcherService) Watch(ctx context.Context, ch chan<- FileUpdateMessage) { monitoringFrequency := fws.agentConfig.Watchers.FileWatcher.MonitoringFrequency slog.DebugContext(ctx, "Starting file watcher monitoring", "monitoring_frequency", monitoringFrequency) diff --git a/lefthook.yml b/lefthook.yml index 0888c9e0f..8754b6dd1 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -1,15 +1,15 @@ -# see https://github.com/evilmartians/lefthook for references -pre-push: - follow: true - piped: true # Stop if one of the steps fail - commands: - 1_generate: - run: make generate - 2_lint: - run: make lint - 3_format: - run: make format - 4_check_mod_change: - run: go mod tidy - 5_check_local_changes: - run: make no-local-changes +## see https://github.com/evilmartians/lefthook for references +#pre-push: +# follow: true +# piped: true # Stop if one of the steps fail +# commands: +# 1_generate: +# run: make generate +# 2_lint: +# run: make lint +# 3_format: +# run: make format +# 4_check_mod_change: +# run: go mod tidy +# 5_check_local_changes: +# run: make no-local-changes From 7afdfa770768f5f6db1e673e2c4b80949defee33 Mon Sep 17 00:00:00 2001 From: Aphral Griffin Date: Fri, 21 Nov 2025 12:16:02 +0000 Subject: [PATCH 4/4] more logging --- internal/file/file_manager_service.go | 13 +++++++++++++ internal/file/file_operator.go | 4 ---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/internal/file/file_manager_service.go b/internal/file/file_manager_service.go index f944eb20b..7e260c168 100644 --- a/internal/file/file_manager_service.go +++ b/internal/file/file_manager_service.go @@ -442,6 +442,12 @@ func (fms *FileManagerService) UpdateManifestFile(ctx context.Context, slog.DebugContext(ctx, "Updating manifest file", "current_files", currentFiles, "referenced", referenced) currentManifestFiles, _, readError := fms.manifestFile() + slog.DebugContext(ctx, "Current manifest file") + for _, file := range currentManifestFiles { + slog.DebugContext(ctx, "Manifest File: ", "file", file.ManifestFileMeta.Name, "hash", + file.ManifestFileMeta.Hash, "unmanaged", file.ManifestFileMeta.Unmanaged) + } + // When agent is first started the manifest is updated when an NGINX instance is found, but the manifest file // will be empty leading to previousManifestFiles being empty. This was causing issues if the first config // apply failed leading to the manifest file being rolled back to an empty file. @@ -462,10 +468,17 @@ func (fms *FileManagerService) UpdateManifestFile(ctx context.Context, updatedFiles := make(map[string]*model.ManifestFile) manifestFiles := fms.convertToManifestFileMap(currentFiles, referenced) + slog.DebugContext(ctx, "Files being updated") + for _, file := range currentFiles { + slog.DebugContext(ctx, "Updated File: ", "file", file.GetFileMeta().GetName(), "hash", + file.GetFileMeta().GetHash(), "unmanaged", file.GetUnmanaged()) + } + // During a config apply every file is set to unreferenced // When a new NGINX config context is detected // we update the files in the manifest by setting the referenced bool to true if currentManifestFiles != nil && referenced { + slog.DebugContext(ctx, "Referenced set to ture, add current files to updated files ") for _, currentManifestFile := range currentManifestFiles { // if file from manifest file is unreferenced add it to updatedFiles map if !currentManifestFile.ManifestFileMeta.Referenced { diff --git a/internal/file/file_operator.go b/internal/file/file_operator.go index 573c933d1..c54482199 100644 --- a/internal/file/file_operator.go +++ b/internal/file/file_operator.go @@ -157,10 +157,6 @@ func (fo *FileOperator) WriteManifestFile( ctx context.Context, updatedFiles map[string]*model.ManifestFile, manifestDir, manifestPath string, ) (writeError error) { slog.DebugContext(ctx, "Writing manifest file", "updated_files", updatedFiles) - for _, file := range updatedFiles { - slog.DebugContext(ctx, "Updated File: ", "file", file.ManifestFileMeta.Name, "hash", - file.ManifestFileMeta.Hash, "referenced", file.ManifestFileMeta.Referenced) - } manifestJSON, err := json.MarshalIndent(updatedFiles, "", " ") if err != nil { return fmt.Errorf("unable to marshal manifest file json: %w", err)