mirror of
https://github.com/pgsty/minio.git
synced 2026-07-20 04:30:26 +03:00
support proper values for listMultipartUploads/listParts (#9970)
object KMS is configured with auto-encryption, there were issues when using docker registry - this has been left unnoticed for a while. This PR fixes an issue with compatibility. Additionally also fix the continuation-token implementation infinite loop issue which was missed as part of #9939 Also fix the heal token to be generated as a client facing value instead of what is remembered by the server, this allows for the server to be stateless regarding the token's behavior.
This commit is contained in:
+13
-13
@@ -652,19 +652,15 @@ func (a adminAPIHandlers) HealHandler(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
if globalIsDistErasure {
|
||||
// Analyze the heal token and route the request accordingly
|
||||
_, nodeIndex, parsed := parseRequestToken(hip.clientToken)
|
||||
if parsed {
|
||||
if proxyRequestByNodeIndex(ctx, w, r, nodeIndex) {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
apiErr := errorCodes.ToAPIErr(ErrHealInvalidClientToken)
|
||||
writeErrorResponseJSON(ctx, w, apiErr, r.URL)
|
||||
return
|
||||
}
|
||||
// Analyze the heal token and route the request accordingly
|
||||
token, success := proxyRequestByToken(ctx, w, r, hip.clientToken)
|
||||
if success {
|
||||
return
|
||||
}
|
||||
hip.clientToken = token
|
||||
// if request was not successful, try this server locally if token
|
||||
// is not found the call will fail anyways. if token is empty
|
||||
// try this server to generate a new token.
|
||||
|
||||
type healResp struct {
|
||||
respBytes []byte
|
||||
@@ -736,8 +732,12 @@ func (a adminAPIHandlers) HealHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if hip.clientToken == "" && !hip.forceStart && !hip.forceStop {
|
||||
nh, exists := globalAllHealState.getHealSequence(healPath)
|
||||
if exists && !nh.hasEnded() && len(nh.currentStatus.Items) > 0 {
|
||||
clientToken := nh.clientToken
|
||||
if globalIsDistErasure {
|
||||
clientToken = fmt.Sprintf("%s@%d", nh.clientToken, GetProxyEndpointLocalIndex(globalProxyEndpoints))
|
||||
}
|
||||
b, err := json.Marshal(madmin.HealStartSuccess{
|
||||
ClientToken: nh.clientToken,
|
||||
ClientToken: clientToken,
|
||||
ClientAddress: nh.clientAddress,
|
||||
StartTime: nh.startTime,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user