mirror of
https://github.com/minio/minio.git
synced 2025-03-31 09:43:43 -04:00
Verify that remote target bucket is on MinIO server for bucket replication (#18656)
This commit is contained in:
parent
5ce68ad7fd
commit
ac90a873eb
@ -19,6 +19,7 @@ package cmd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
"sync"
|
"sync"
|
||||||
@ -351,6 +352,27 @@ func (sys *BucketTargetSys) SetTarget(ctx context.Context, bucket string, tgt *m
|
|||||||
return BucketRemoteTargetNotVersioned{Bucket: tgt.TargetBucket}
|
return BucketRemoteTargetNotVersioned{Bucket: tgt.TargetBucket}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if target is a MinIO server and alive
|
||||||
|
hcCtx, cancel := context.WithTimeout(ctx, 3*time.Second)
|
||||||
|
scheme := "http"
|
||||||
|
if tgt.Secure {
|
||||||
|
scheme = "https"
|
||||||
|
}
|
||||||
|
result := <-sys.hcClient.Alive(hcCtx, madmin.AliveOpts{}, madmin.ServerProperties{
|
||||||
|
Endpoint: tgt.Endpoint,
|
||||||
|
Scheme: scheme,
|
||||||
|
})
|
||||||
|
|
||||||
|
cancel()
|
||||||
|
if result.Error != nil {
|
||||||
|
return RemoteTargetConnectionErr{Bucket: tgt.TargetBucket, Err: result.Error, AccessKey: tgt.Credentials.AccessKey}
|
||||||
|
}
|
||||||
|
if !result.Online {
|
||||||
|
err := errors.New("Health check timed out after 3 seconds")
|
||||||
|
return RemoteTargetConnectionErr{Err: err}
|
||||||
|
}
|
||||||
|
|
||||||
sys.Lock()
|
sys.Lock()
|
||||||
defer sys.Unlock()
|
defer sys.Unlock()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user