From a48a56d701969fece86250cd0c95c5f025429e8e Mon Sep 17 00:00:00 2001 From: divyaac Date: Wed, 4 Sep 2024 10:08:13 -0700 Subject: [PATCH] Added storage limits --- vault/logical_system_activity_write_testonly.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/vault/logical_system_activity_write_testonly.go b/vault/logical_system_activity_write_testonly.go index d5316f2d1ea7..de52e4de35a8 100644 --- a/vault/logical_system_activity_write_testonly.go +++ b/vault/logical_system_activity_write_testonly.go @@ -153,10 +153,19 @@ func (s *singleMonthActivityClients) populateSegments() (map[int][]*activity.Ent return segments, nil } - totalSegmentCount := 1 + // determine how many segments are necessary to store the clients for this month + // using the default storage limits + numNecessarySegments := len(s.clients) / ActivitySegmentClientCapacity + if len(s.clients)%ActivitySegmentClientCapacity != 0 { + numNecessarySegments++ + } + totalSegmentCount := numNecessarySegments + + // override the segment count if set by client if s.generationParameters.GetNumSegments() > 0 { totalSegmentCount = int(s.generationParameters.GetNumSegments()) } + numNonUsable := len(skipIndexes) + len(emptyIndexes) usableSegmentCount := totalSegmentCount - numNonUsable if usableSegmentCount <= 0 { @@ -169,6 +178,10 @@ func (s *singleMonthActivityClients) populateSegments() (map[int][]*activity.Ent segmentSizes++ } + if segmentSizes > ActivitySegmentClientCapacity { + return nil, fmt.Errorf("the number of segments is too low, it must be greater than %d in order to meet storage limits", numNecessarySegments) + } + clientIndex := 0 for i := 0; i < totalSegmentCount; i++ { if clientIndex >= len(s.clients) {