Compare commits

...

13 Commits

Author SHA1 Message Date
jiuker 2ee19fb52e
Merge 4e08f3596f into de234b888c 2025-07-04 17:34:21 +02:00
Burkov Egor de234b888c
fix: admin api - SetPolicyForUserOrGroup avoid nil deref (#21400)
VulnCheck / Analysis (push) Has been cancelled Details
Lock Threads / action (push) Has been cancelled Details
2025-07-01 09:00:17 -07:00
jiuker 4e08f3596f
Merge branch 'master' into fix-SinglePool-is-not-restricted-by-the-minimum-free-drive-threshold 2025-06-09 15:13:40 +08:00
jiuker ab449bb59d
Merge branch 'master' into fix-SinglePool-is-not-restricted-by-the-minimum-free-drive-threshold 2025-05-27 08:29:33 +08:00
jiuker f13bda98fd
Merge branch 'master' into fix-SinglePool-is-not-restricted-by-the-minimum-free-drive-threshold 2025-04-22 09:45:55 +08:00
jiuker e857649a7f
Merge branch 'master' into fix-SinglePool-is-not-restricted-by-the-minimum-free-drive-threshold 2025-04-21 10:14:20 +08:00
jiuker ce89222f92
Merge branch 'master' into fix-SinglePool-is-not-restricted-by-the-minimum-free-drive-threshold 2025-04-16 16:08:01 +08:00
jiuker ed45e8cb2c
Merge branch 'master' into fix-SinglePool-is-not-restricted-by-the-minimum-free-drive-threshold 2025-04-11 13:05:34 +08:00
Harshavardhana 1a42f79a6e
Merge branch 'master' into fix-SinglePool-is-not-restricted-by-the-minimum-free-drive-threshold 2025-04-09 07:29:17 -07:00
jiuker 7e72150297 change condition
change condition
2025-04-09 16:18:51 +08:00
jiuker 4424af9668 pinfo err
pinfo err
2025-04-09 12:20:18 +08:00
jiuker 6affa6e886 lint
lint
2025-04-09 11:53:45 +08:00
jiuker b409ac511a fix: restrict SinglePool by the minimum free drive threshold
fix: restrict SinglePool by the minimum free drive threshold
2025-04-09 11:38:46 +08:00
2 changed files with 18 additions and 5 deletions

View File

@ -1827,16 +1827,18 @@ func (a adminAPIHandlers) SetPolicyForUserOrGroup(w http.ResponseWriter, r *http
iamLogIf(ctx, err)
} else if foundGroupDN == nil || !underBaseDN {
err = errNoSuchGroup
} else {
entityName = foundGroupDN.NormDN
}
entityName = foundGroupDN.NormDN
} else {
var foundUserDN *xldap.DNSearchResult
if foundUserDN, err = globalIAMSys.LDAPConfig.GetValidatedDNForUsername(entityName); err != nil {
iamLogIf(ctx, err)
} else if foundUserDN == nil {
err = errNoSuchUser
} else {
entityName = foundUserDN.NormDN
}
entityName = foundUserDN.NormDN
}
if err != nil {
writeErrorResponseJSON(ctx, w, toAdminAPIErr(ctx, err), r.URL)

View File

@ -635,15 +635,18 @@ func (z *erasureServerPools) getPoolIdxNoLock(ctx context.Context, bucket, objec
// if none are found falls back to most available space pool, this function is
// designed to be only used by PutObject, CopyObject (newObject creation) and NewMultipartUpload.
func (z *erasureServerPools) getPoolIdx(ctx context.Context, bucket, object string, size int64) (idx int, err error) {
idx, err = z.getPoolIdxExistingWithOpts(ctx, bucket, object, ObjectOptions{
pinfo, _, err := z.getPoolInfoExistingWithOpts(ctx, bucket, object, ObjectOptions{
SkipDecommissioned: true,
SkipRebalancing: true,
})
if err != nil && !isErrObjectNotFound(err) {
return idx, err
return -1, err
}
if isErrObjectNotFound(err) {
idx = pinfo.Index
if isErrObjectNotFound(err) || pinfo.Err == nil {
// will generate a temp object
idx = z.getAvailablePoolIdx(ctx, bucket, object, size)
if idx < 0 {
return -1, toObjectErr(errDiskFull)
@ -1089,6 +1092,10 @@ func (z *erasureServerPools) PutObject(ctx context.Context, bucket string, objec
object = encodeDirObject(object)
if z.SinglePool() {
_, err := z.getPoolIdx(ctx, bucket, object, data.Size())
if err != nil {
return ObjectInfo{}, err
}
return z.serverPools[0].PutObject(ctx, bucket, object, data, opts)
}
@ -1816,6 +1823,10 @@ func (z *erasureServerPools) PutObjectPart(ctx context.Context, bucket, object,
}
if z.SinglePool() {
_, err := z.getPoolIdx(ctx, bucket, object, data.Size())
if err != nil {
return PartInfo{}, err
}
return z.serverPools[0].PutObjectPart(ctx, bucket, object, uploadID, partID, data, opts)
}