func()

in internal/file_cleaner/file_cleaner.go [90:135]


func (c *FileCleaner) removeDeletedRepos(ctx context.Context) error {
	path := filepath.Join(c.IndexDir, repoDeleteDir)
	err := c.ensurePathExists(path)
	if err != nil {
		return err
	}
	files, err := disk_stats.GetIndexFiles(path, "*")

	if err != nil {
		return err
	}

	repoIDs := make([]uint32, 0, len(files))

	for _, file := range files {
		fileName := filepath.Base(file)

		repoIDStr := IDRegex.FindString(fileName)

		if repoIDStr == "" {
			return fmt.Errorf("failed to parse repo ID from %s", repoIDStr)
		}

		rID, err := strconv.ParseUint(repoIDStr, 10, 32)

		if err != nil {
			return err
		}

		repoIDs = append(repoIDs, uint32(rID))

	}

	if err := c.removeShards(ctx, repoIDs...); err != nil {
		return err
	}

	for _, repoID := range repoIDs {
		filePath := filepath.Join(path, fmt.Sprintf("%d.delete", repoID))
		if err := c.removeFunc(filePath); err != nil {
			return err
		}
	}

	return nil
}