Don't tier directory objects (#19891)

Directory objects are used by applications that simulate the folder
structure of an on-disk filesystem. These are zero-byte objects with names
ending with '/'. They are only used to check whether a 'folder' exists in
the namespace.
This commit is contained in:
Krishnan Parthasarathi 2024-06-07 08:43:17 -07:00 committed by GitHub
parent 2f6e03fb60
commit 069c4015cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 5 additions and 1 deletions

View file

@ -583,6 +583,10 @@ func enqueueTransitionImmediate(obj ObjectInfo, src lcEventSrc) {
if lc, err := globalLifecycleSys.Get(obj.Bucket); err == nil { if lc, err := globalLifecycleSys.Get(obj.Bucket); err == nil {
switch event := lc.Eval(obj.ToLifecycleOpts()); event.Action { switch event := lc.Eval(obj.ToLifecycleOpts()); event.Action {
case lifecycle.TransitionAction, lifecycle.TransitionVersionAction: case lifecycle.TransitionAction, lifecycle.TransitionVersionAction:
if obj.DeleteMarker || obj.IsDir {
// nothing to transition
return
}
globalTransitionState.queueTransitionTask(obj, event, src) globalTransitionState.queueTransitionTask(obj, event, src)
} }
} }

View file

@ -1233,7 +1233,7 @@ func evalActionFromLifecycle(ctx context.Context, lc lifecycle.Lifecycle, lr loc
} }
func applyTransitionRule(event lifecycle.Event, src lcEventSrc, obj ObjectInfo) bool { func applyTransitionRule(event lifecycle.Event, src lcEventSrc, obj ObjectInfo) bool {
if obj.DeleteMarker { if obj.DeleteMarker || obj.IsDir {
return false return false
} }
globalTransitionState.queueTransitionTask(obj, event, src) globalTransitionState.queueTransitionTask(obj, event, src)