mirror of
https://github.com/minio/minio.git
synced 2025-01-25 21:53:16 -05:00
fallback to globalLocalDrives for non-distributed setups
This commit is contained in:
parent
9a7c7ab2d0
commit
f8696cc8f6
@ -386,6 +386,9 @@ var newDiskHealingTimeout = newDynamicTimeout(30*time.Second, 10*time.Second)
|
|||||||
func healFreshDisk(ctx context.Context, z *erasureServerPools, endpoint Endpoint) error {
|
func healFreshDisk(ctx context.Context, z *erasureServerPools, endpoint Endpoint) error {
|
||||||
poolIdx, setIdx := endpoint.PoolIdx, endpoint.SetIdx
|
poolIdx, setIdx := endpoint.PoolIdx, endpoint.SetIdx
|
||||||
disk := getStorageViaEndpoint(endpoint)
|
disk := getStorageViaEndpoint(endpoint)
|
||||||
|
if disk == nil {
|
||||||
|
return fmt.Errorf("Unexpected error disk must be initialized by now after formatting: %s", endpoint)
|
||||||
|
}
|
||||||
|
|
||||||
// Prevent parallel erasure set healing
|
// Prevent parallel erasure set healing
|
||||||
locker := z.NewNSLock(minioMetaBucket, fmt.Sprintf("new-drive-healing/%d/%d", poolIdx, setIdx))
|
locker := z.NewNSLock(minioMetaBucket, fmt.Sprintf("new-drive-healing/%d/%d", poolIdx, setIdx))
|
||||||
|
@ -75,6 +75,15 @@ type Endpoint struct {
|
|||||||
PoolIdx, SetIdx, DiskIdx int
|
PoolIdx, SetIdx, DiskIdx int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (endpoint Endpoint) Equal(ep Endpoint) bool {
|
||||||
|
if endpoint.IsLocal == ep.IsLocal && endpoint.PoolIdx == ep.PoolIdx && endpoint.SetIdx == ep.SetIdx && endpoint.DiskIdx == ep.DiskIdx {
|
||||||
|
if endpoint.Path == ep.Path && endpoint.Host == ep.Host {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func (endpoint Endpoint) String() string {
|
func (endpoint Endpoint) String() string {
|
||||||
if endpoint.Host == "" {
|
if endpoint.Host == "" {
|
||||||
return endpoint.Path
|
return endpoint.Path
|
||||||
|
@ -78,6 +78,13 @@ var (
|
|||||||
func getStorageViaEndpoint(endpoint Endpoint) StorageAPI {
|
func getStorageViaEndpoint(endpoint Endpoint) StorageAPI {
|
||||||
globalLocalDrivesMu.RLock()
|
globalLocalDrivesMu.RLock()
|
||||||
defer globalLocalDrivesMu.RUnlock()
|
defer globalLocalDrivesMu.RUnlock()
|
||||||
|
if len(globalLocalSetDrives) == 0 {
|
||||||
|
for _, drive := range globalLocalDrives {
|
||||||
|
if drive != nil && drive.Endpoint().Equal(endpoint) {
|
||||||
|
return drive
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return globalLocalSetDrives[endpoint.PoolIdx][endpoint.SetIdx][endpoint.DiskIdx]
|
return globalLocalSetDrives[endpoint.PoolIdx][endpoint.SetIdx][endpoint.DiskIdx]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user