diff --git a/changes/20240508104451.bugfix b/changes/20240508104451.bugfix new file mode 100644 index 0000000..7946cd2 --- /dev/null +++ b/changes/20240508104451.bugfix @@ -0,0 +1 @@ +:bug: Make sure that the logger logs every message instead of exiting before it prints anything due to a lack of 'next page' diff --git a/utils/messages/logger.go b/utils/messages/logger.go index 5dc1587..5abd58e 100644 --- a/utils/messages/logger.go +++ b/utils/messages/logger.go @@ -8,6 +8,7 @@ package messages import ( "context" "fmt" + "regexp" "time" "github.com/ARM-software/embedded-development-services-client-utils/utils/logging" @@ -80,6 +81,8 @@ func (l *Logger) LogMarshallingError(rawMessage *any) { } } +var completedRegex = regexp.MustCompile(``) + func (l *Logger) LogMessagesCollection(ctx context.Context, messagePaginator pagination.IGenericPaginator) error { for { err := parallelisation.DetermineContextError(ctx) @@ -90,7 +93,8 @@ func (l *Logger) LogMessagesCollection(ctx context.Context, messagePaginator pag return fmt.Errorf("%w: missing paginator", commonerrors.ErrUndefined) } if !messagePaginator.HasNext() { - return nil + parallelisation.SleepWithContext(ctx, 200*time.Millisecond) + continue } m, err := messagePaginator.GetNext() if err != nil { @@ -102,7 +106,13 @@ func (l *Logger) LogMessagesCollection(ctx context.Context, messagePaginator pag } else { l.LogMessage(messageItem) } + if message, ok := messageItem.GetMessageOk(); ok { + if completedRegex.MatchString(*message) { + break + } + } } + return nil } // NewBasicAsynchronousMessageLogger creates an asynchronous logger for messages which prints them as they come.