From 91d1fb0ca952c6aa20e8c39d1a0a051178af52a9 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Mon, 5 May 2025 14:46:27 +0200 Subject: [PATCH] link-index-updater: More logging Trying to understand why messages are not sent back to the queue and reprocessed by the lambda --- .../docs-lambda-index-publisher/LinkIndexProvider.cs | 7 +++++++ src/infra/docs-lambda-index-publisher/Program.cs | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/infra/docs-lambda-index-publisher/LinkIndexProvider.cs b/src/infra/docs-lambda-index-publisher/LinkIndexProvider.cs index d6965ebc7..b52a473bd 100644 --- a/src/infra/docs-lambda-index-publisher/LinkIndexProvider.cs +++ b/src/infra/docs-lambda-index-publisher/LinkIndexProvider.cs @@ -19,6 +19,7 @@ public class LinkIndexProvider(IAmazonS3 s3Client, ILambdaLogger logger, string { private string? _etag; private LinkReferenceRegistry? _linkIndex; + private bool _modified; private async Task GetLinkIndex() { @@ -56,12 +57,18 @@ public async Task UpdateLinkIndexEntry(LinkRegistryEntry linkRegistryEntry) { { linkRegistryEntry.Branch, linkRegistryEntry } }); + _modified = true; logger.LogInformation("Added new entry for {repository}@{branch}", linkRegistryEntry.Repository, linkRegistryEntry.Branch); } } public async Task Save() { + if (!_modified) + { + logger.LogInformation("Skipping Save() because the link index was not modified"); + return; + } if (_etag == null || _linkIndex == null) throw new InvalidOperationException("You must call UpdateLinkIndexEntry() before Save()"); var json = LinkReferenceRegistry.Serialize(_linkIndex); diff --git a/src/infra/docs-lambda-index-publisher/Program.cs b/src/infra/docs-lambda-index-publisher/Program.cs index 77213d4f0..5b289ca5a 100644 --- a/src/infra/docs-lambda-index-publisher/Program.cs +++ b/src/infra/docs-lambda-index-publisher/Program.cs @@ -3,13 +3,13 @@ // See the LICENSE file in the project root for more information using System.Collections.Concurrent; +using System.Text.Json; using Amazon.Lambda.Core; using Amazon.Lambda.RuntimeSupport; using Amazon.Lambda.Serialization.SystemTextJson; using Amazon.Lambda.SQSEvents; using Amazon.S3; using Amazon.S3.Util; -using Elastic.Documentation; using Elastic.Documentation.Lambda.LinkIndexUploader; using Elastic.Documentation.Links; @@ -30,6 +30,8 @@ static async Task Handler(SQSEvent ev, ILambdaContext context) var batchItemFailures = new List(); foreach (var message in ev.Records) { + context.Logger.LogInformation("Processing message {MessageId}", message.MessageId); + context.Logger.LogInformation("Message body: {MessageBody}", message.Body); try { var s3RecordLinkReferenceTuples = await GetS3RecordLinkReferenceTuples(s3Client, message, context); @@ -55,6 +57,8 @@ static async Task Handler(SQSEvent ev, ILambdaContext context) var response = new SQSBatchResponse(batchItemFailures); if (batchItemFailures.Count > 0) context.Logger.LogInformation("Failed to process {batchItemFailuresCount} of {allMessagesCount} messages. Returning them to the queue.", batchItemFailures.Count, ev.Records.Count); + var jsonStr = JsonSerializer.Serialize(response, SerializerContext.Default.SQSBatchResponse); + context.Logger.LogInformation(jsonStr); return response; } catch (Exception ex) @@ -67,6 +71,8 @@ static async Task Handler(SQSEvent ev, ILambdaContext context) { ItemIdentifier = r.MessageId }).ToList()); + var jsonStr = JsonSerializer.Serialize(response, SerializerContext.Default.SQSBatchResponse); + context.Logger.LogInformation(jsonStr); return response; } }