github.com/influxdata/influxdb/v2@v2.7.6/replications/bucket_service.go (about)

     1  package replications
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/influxdata/influxdb/v2"
     7  	"github.com/influxdata/influxdb/v2/kit/platform"
     8  	"go.uber.org/zap"
     9  )
    10  
    11  type ReplicationDeleter interface {
    12  	// DeleteBucketReplications deletes all replications registered to the local bucket
    13  	// with the given ID.
    14  	DeleteBucketReplications(context.Context, platform.ID) error
    15  }
    16  
    17  type bucketService struct {
    18  	influxdb.BucketService
    19  	logger             *zap.Logger
    20  	replicationDeleter ReplicationDeleter
    21  }
    22  
    23  func NewBucketService(log *zap.Logger, bucketSvc influxdb.BucketService, deleter ReplicationDeleter) *bucketService {
    24  	return &bucketService{
    25  		BucketService:      bucketSvc,
    26  		logger:             log,
    27  		replicationDeleter: deleter,
    28  	}
    29  }
    30  
    31  func (s *bucketService) DeleteBucket(ctx context.Context, id platform.ID) error {
    32  	if err := s.BucketService.DeleteBucket(ctx, id); err != nil {
    33  		return err
    34  	}
    35  	if err := s.replicationDeleter.DeleteBucketReplications(ctx, id); err != nil {
    36  		s.logger.Error("Failed to delete replications for bucket",
    37  			zap.String("bucket_id", id.String()), zap.Error(err))
    38  	}
    39  	return nil
    40  }