Skip to content

Commit

Permalink
Revert "Add header for lifecycle config expiry to ignore replication (#…
Browse files Browse the repository at this point in the history
…1999)"

This reverts commit 2a9a820.
  • Loading branch information
harshavardhana committed Sep 21, 2024
1 parent 2a9a820 commit 5a98518
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 27 deletions.
31 changes: 12 additions & 19 deletions api-bucket-lifecycle.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,36 +41,30 @@ func (c *Client) SetBucketLifecycle(ctx context.Context, bucketName string, conf
if config.Empty() {
return c.removeBucketLifecycle(ctx, bucketName)
}
expAfterRepl := config.ExpireAfterReplication
config.ExpireAfterReplication = ""

buf, err := xml.Marshal(config)
if err != nil {
return err
}

// Save the updated lifecycle.
return c.putBucketLifecycle(ctx, bucketName, buf, expAfterRepl)
return c.putBucketLifecycle(ctx, bucketName, buf)
}

// Saves a new bucket lifecycle.
func (c *Client) putBucketLifecycle(ctx context.Context, bucketName string, buf []byte, expAfterRepl string) error {
func (c *Client) putBucketLifecycle(ctx context.Context, bucketName string, buf []byte) error {
// Get resources properly escaped and lined up before
// using them in http request.
urlValues := make(url.Values)
urlValues.Set("lifecycle", "")
var cheaders http.Header
if expAfterRepl != "" {
cheaders = make(http.Header)
cheaders.Set(minioLifecycleExpiryAfterReplication, expAfterRepl)
}

// Content-length is mandatory for put lifecycle request
reqMetadata := requestMetadata{
bucketName: bucketName,
queryValues: urlValues,
contentBody: bytes.NewReader(buf),
contentLength: int64(len(buf)),
contentMD5Base64: sumMD5Base64(buf),
customHeader: cheaders,
}

// Execute PUT to upload a new bucket lifecycle.
Expand Down Expand Up @@ -120,7 +114,7 @@ func (c *Client) GetBucketLifecycleWithInfo(ctx context.Context, bucketName stri
return nil, time.Time{}, err
}

bucketLifecycle, updatedAt, expAfterRepl, err := c.getBucketLifecycle(ctx, bucketName)
bucketLifecycle, updatedAt, err := c.getBucketLifecycle(ctx, bucketName)
if err != nil {
return nil, time.Time{}, err
}
Expand All @@ -129,12 +123,11 @@ func (c *Client) GetBucketLifecycleWithInfo(ctx context.Context, bucketName stri
if err = xml.Unmarshal(bucketLifecycle, config); err != nil {
return nil, time.Time{}, err
}
config.ExpireAfterReplication = expAfterRepl
return config, updatedAt, nil
}

// Request server for current bucket lifecycle.
func (c *Client) getBucketLifecycle(ctx context.Context, bucketName string) ([]byte, time.Time, string, error) {
func (c *Client) getBucketLifecycle(ctx context.Context, bucketName string) ([]byte, time.Time, error) {
// Get resources properly escaped and lined up before
// using them in http request.
urlValues := make(url.Values)
Expand All @@ -149,28 +142,28 @@ func (c *Client) getBucketLifecycle(ctx context.Context, bucketName string) ([]b

defer closeResponse(resp)
if err != nil {
return nil, time.Time{}, "", err
return nil, time.Time{}, err
}

if resp != nil {
if resp.StatusCode != http.StatusOK {
return nil, time.Time{}, "", httpRespToErrorResponse(resp, bucketName, "")
return nil, time.Time{}, httpRespToErrorResponse(resp, bucketName, "")
}
}

lcBytes, err := io.ReadAll(resp.Body)
if err != nil {
return nil, time.Time{}, "", err
return nil, time.Time{}, err
}

const minIOLifecycleCfgUpdatedAt = "X-Minio-LifecycleConfig-UpdatedAt"
var updatedAt time.Time
if timeStr := resp.Header.Get(minIOLifecycleCfgUpdatedAt); timeStr != "" {
updatedAt, err = time.Parse(iso8601DateFormat, timeStr)
if err != nil {
return nil, time.Time{}, "", err
return nil, time.Time{}, err
}
}
expAfterRepl := resp.Header.Get(minioLifecycleExpiryAfterReplication)
return lcBytes, updatedAt, expAfterRepl, nil

return lcBytes, updatedAt, nil
}
2 changes: 0 additions & 2 deletions api-put-object.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ const (
ReplicationStatusFailed ReplicationStatus = "FAILED"
// ReplicationStatusReplica indicates object is a replica of a source
ReplicationStatusReplica ReplicationStatus = "REPLICA"
// ReplicationStatusReplicaEdge indicates object is a replica of a edge source
ReplicationStatusReplicaEdge ReplicationStatus = "REPLICA-EDGE"
)

// Empty returns true if no replication status set.
Expand Down
3 changes: 0 additions & 3 deletions constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,4 @@ const (
minioTgtReplicationReady = "X-Minio-Replication-Ready"
// Header asks if delete marker replication request can be sent by source now.
isMinioTgtReplicationReady = "X-Minio-Check-Replication-Ready"

// Header indicating if ilm expiry ignores replication status
minioLifecycleExpiryAfterReplication = "X-Minio-Lifecycle-Expiry-After-Replication"
)
5 changes: 2 additions & 3 deletions pkg/lifecycle/lifecycle.go
Original file line number Diff line number Diff line change
Expand Up @@ -496,9 +496,8 @@ type Rule struct {

// Configuration is a collection of Rule objects.
type Configuration struct {
XMLName xml.Name `xml:"LifecycleConfiguration,omitempty" json:"-"`
Rules []Rule `xml:"Rule"`
ExpireAfterReplication string `xml:"-" json:"-"`
XMLName xml.Name `xml:"LifecycleConfiguration,omitempty" json:"-"`
Rules []Rule `xml:"Rule"`
}

// Empty check if lifecycle configuration is empty
Expand Down

0 comments on commit 5a98518

Please sign in to comment.