Skip to content

Commit d4f90ec

Browse files
authored
feat(pubsub/pstest): update max topic retention duration to 31 days (#8605)
1 parent ddbf0a6 commit d4f90ec

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

pubsub/pstest/fake.go

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ func (s *GServer) CreateTopic(_ context.Context, t *pb.Topic) (*pb.Topic, error)
316316
if s.topics[t.Name] != nil {
317317
return nil, status.Errorf(codes.AlreadyExists, "topic %q", t.Name)
318318
}
319-
if err := checkMRD(t.MessageRetentionDuration); err != nil {
319+
if err := checkTopicMessageRetention(t.MessageRetentionDuration); err != nil {
320320
return nil, err
321321
}
322322
top := newTopic(t)
@@ -357,7 +357,7 @@ func (s *GServer) UpdateTopic(_ context.Context, req *pb.UpdateTopicRequest) (*p
357357
case "message_storage_policy":
358358
t.proto.MessageStoragePolicy = req.Topic.MessageStoragePolicy
359359
case "message_retention_duration":
360-
if err := checkMRD(req.Topic.MessageRetentionDuration); err != nil {
360+
if err := checkTopicMessageRetention(req.Topic.MessageRetentionDuration); err != nil {
361361
return nil, err
362362
}
363363
t.proto.MessageRetentionDuration = req.Topic.MessageRetentionDuration
@@ -493,7 +493,7 @@ func (s *GServer) CreateSubscription(_ context.Context, ps *pb.Subscription) (*p
493493
if ps.MessageRetentionDuration == nil {
494494
ps.MessageRetentionDuration = defaultMessageRetentionDuration
495495
}
496-
if err := checkMRD(ps.MessageRetentionDuration); err != nil {
496+
if err := checkSubMessageRetention(ps.MessageRetentionDuration); err != nil {
497497
return nil, err
498498
}
499499
if ps.PushConfig == nil {
@@ -561,18 +561,33 @@ func checkAckDeadline(ads int32) error {
561561
}
562562

563563
const (
564-
minMessageRetentionDuration = 10 * time.Minute
565-
maxMessageRetentionDuration = 31 * 24 * time.Hour // 31 days is the maximum supported duration (https://cloud.google.com/pubsub/docs/replay-overview#configuring_message_retention)
564+
minTopicMessageRetentionDuration = 10 * time.Minute
565+
// 31 days is the maximum topic supported duration (https://cloud.google.com/pubsub/docs/replay-overview#configuring_message_retention)
566+
maxTopicMessageRetentionDuration = 31 * 24 * time.Hour
567+
minSubMessageRetentionDuration = 10 * time.Minute
568+
// 7 days is the maximum subscription supported duration (https://cloud.google.com/pubsub/docs/replay-overview#configuring_message_retention)
569+
maxSubMessageRetentionDuration = 7 * 24 * time.Hour
566570
)
567571

568572
var defaultMessageRetentionDuration = durpb.New(168 * time.Hour) // default is 7 days
569573

570-
func checkMRD(pmrd *durpb.Duration) error {
574+
func checkTopicMessageRetention(pmrd *durpb.Duration) error {
571575
if pmrd == nil {
572576
return nil
573577
}
574578
mrd := pmrd.AsDuration()
575-
if mrd < minMessageRetentionDuration || mrd > maxMessageRetentionDuration {
579+
if mrd < minTopicMessageRetentionDuration || mrd > maxTopicMessageRetentionDuration {
580+
return status.Errorf(codes.InvalidArgument, "bad message_retention_duration %+v", pmrd)
581+
}
582+
return nil
583+
}
584+
585+
func checkSubMessageRetention(pmrd *durpb.Duration) error {
586+
if pmrd == nil {
587+
return nil
588+
}
589+
mrd := pmrd.AsDuration()
590+
if mrd < minSubMessageRetentionDuration || mrd > maxSubMessageRetentionDuration {
576591
return status.Errorf(codes.InvalidArgument, "bad message_retention_duration %+v", pmrd)
577592
}
578593
return nil
@@ -644,7 +659,7 @@ func (s *GServer) UpdateSubscription(_ context.Context, req *pb.UpdateSubscripti
644659
sub.proto.RetainAckedMessages = req.Subscription.RetainAckedMessages
645660

646661
case "message_retention_duration":
647-
if err := checkMRD(req.Subscription.MessageRetentionDuration); err != nil {
662+
if err := checkSubMessageRetention(req.Subscription.MessageRetentionDuration); err != nil {
648663
return nil, err
649664
}
650665
sub.proto.MessageRetentionDuration = req.Subscription.MessageRetentionDuration

pubsub/topic.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ type TopicConfigToUpdate struct {
287287
// and may change.
288288
MessageStoragePolicy *MessageStoragePolicy
289289

290-
// If set to a positive duration between 10 minutes and 7 days, RetentionDuration is changed.
290+
// If set to a positive duration between 10 minutes and 31 days, RetentionDuration is changed.
291291
// If set to a negative value, this clears RetentionDuration from the topic.
292292
// If nil, the retention duration remains unchanged.
293293
RetentionDuration optional.Duration

0 commit comments

Comments
 (0)