( backup *runtimeBackupTransaction, lock *runtimeSetLock, )
| 1373 | } |
| 1374 | |
| 1375 | func cleanupRuntimeBackup( |
| 1376 | backup *runtimeBackupTransaction, lock *runtimeSetLock, |
| 1377 | ) error { |
| 1378 | if err := assertRuntimeSetLockOwner(lock); err != nil { |
| 1379 | return err |
| 1380 | } |
| 1381 | if !backup.cleanupOnly { |
| 1382 | if err := createRuntimeBackupMarker( |
| 1383 | backup.path, runtimeBackupCleanupOnly, |
| 1384 | ); err != nil { |
| 1385 | return err |
| 1386 | } |
| 1387 | backup.cleanupOnly = true |
| 1388 | } |
| 1389 | names := make([]string, 0, len(backup.files)) |
| 1390 | for name := range backup.files { |
| 1391 | names = append(names, name) |
| 1392 | } |
| 1393 | sort.Strings(names) |
| 1394 | for _, name := range names { |
| 1395 | if err := assertRuntimeSetLockOwner(lock); err != nil { |
| 1396 | return err |
| 1397 | } |
| 1398 | member := backup.files[name] |
| 1399 | if !pathMatchesSHA256(member.path, member.digest) { |
| 1400 | return fmt.Errorf( |
| 1401 | "package-cache backup member changed during cleanup: %s", name, |
| 1402 | ) |
| 1403 | } |
| 1404 | if err := assertRuntimeSetLockOwner(lock); err != nil { |
| 1405 | return err |
| 1406 | } |
| 1407 | if err := os.Remove(member.path); err != nil { |
| 1408 | return err |
| 1409 | } |
| 1410 | if runtimeBackupCrashObserver != nil { |
| 1411 | if err := runtimeBackupCrashObserver( |
| 1412 | runtimeBackupCleanupRemovedEvent, member.path, |
| 1413 | ); err != nil { |
| 1414 | return err |
| 1415 | } |
| 1416 | } |
| 1417 | } |
| 1418 | if backup.retired { |
| 1419 | if err := assertRuntimeSetLockOwner(lock); err != nil { |
| 1420 | return err |
| 1421 | } |
| 1422 | if err := os.Remove(filepath.Join(backup.path, runtimeBackupRetired)); err != nil { |
| 1423 | return err |
| 1424 | } |
| 1425 | } |
| 1426 | if err := assertRuntimeSetLockOwner(lock); err != nil { |
| 1427 | return err |
| 1428 | } |
| 1429 | if err := os.Remove(filepath.Join(backup.path, runtimeBackupCleanupOnly)); err != nil { |
| 1430 | return err |
| 1431 | } |
| 1432 | return os.Remove(backup.path) |
no test coverage detected