Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5d06a0a

Browse files
committed
fix: clean up managed storage pools on configuration reloading (#232)
1 parent 11c5e49 commit 5d06a0a

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

pkg/services/provision/pool/pool_manager.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,15 @@ func (pm *Manager) ReloadPools() error {
160160
return err
161161
}
162162

163-
fsPools := pm.examineEntries(entries)
163+
fsPools, fsManagerList := pm.examineEntries(entries)
164164

165165
if len(fsPools) == 0 {
166166
return errors.New("no available pools")
167167
}
168168

169169
pm.mu.Lock()
170170
pm.fsManagerPool = fsPools
171+
pm.fsManagerList = fsManagerList
171172
pm.mu.Unlock()
172173

173174
log.Msg("Available storage pools: ", pm.describeAvailablePools())
@@ -176,8 +177,9 @@ func (pm *Manager) ReloadPools() error {
176177
return nil
177178
}
178179

179-
func (pm *Manager) examineEntries(entries []os.FileInfo) map[string]FSManager {
180+
func (pm *Manager) examineEntries(entries []os.FileInfo) (map[string]FSManager, *list.List) {
180181
fsManagers := make(map[string]FSManager)
182+
poolList := &list.List{}
181183

182184
for _, entry := range entries {
183185
if !entry.IsDir() {
@@ -232,15 +234,16 @@ func (pm *Manager) examineEntries(entries []os.FileInfo) map[string]FSManager {
232234
// TODO(akartasov): extract pool name.
233235
fsManagers[entry.Name()] = fsm
234236

235-
if pm.Active() == nil || pm.Active().Pool().DSA.Before(pool.DSA) {
236-
pm.fsManagerList.PushFront(fsm.Pool().Name)
237+
front := poolList.Front()
238+
if front == nil || front.Value == nil || fsManagers[front.Value.(string)].Pool().DSA.Before(pool.DSA) {
239+
poolList.PushFront(fsm.Pool().Name)
237240
continue
238241
}
239242

240-
pm.fsManagerList.PushBack(fsm.Pool().Name)
243+
poolList.PushBack(fsm.Pool().Name)
241244
}
242245

243-
return fsManagers
246+
return fsManagers, poolList
244247
}
245248

246249
// reloadBlockDevices gets filesystem types of block devices.

0 commit comments

Comments
 (0)