codalab / codalab/codabench

Storage and clean up

Open
#713 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Enhancement Post-it
Dominant language
Python
Stars
176
Forks
74
Avg merge
5d 3h
Merged PRs (30d)
21

Description

Implementing a storage quota and effectively managing capacity could be crucial for enhancing Codabench's scalability and ensuring long-term service availability in production.

Features

Deleting files from the MinIO

@OhMaley: Add a button, in admin analytics page, to manually starts a script removing all orphans files.

  • Nothing is never erased from the MinIO. Add a button to remove all orphan files manually (#1523, #1575)
  • To check: #1319
  • More orphans files to remove: #2059 (code included in the comments)
Quota

We need to:

  • Impose a storage quota to each user (e.g. 15GB, platform setting) #1254
  • Idea: separated quota for each joined competition
  • Admins should be able to manually increase the quota of any user (on Django admin interface) #1254
  • Have an user interface to manage and delete submissions
    Solved by: #918
  • Actually, submissions can't be removed if there are part of a benchmark (which makes sense to avoid spamming submissions when there is a daily limit).
  • Solution: submissions are counted on the quota of the participants, but they can remove a submission (even if it's part of a benchmark) if it's not on the leaderboard. #1738
  • Be able to delete tasks when deleting a benchmark #810
    Partially Solved by: #918
  • Be able to re-use past submissions #632
  • Failed submission when deleted still remains as Data (deleted from leaderboard/submission panel but can be found in submissions in resources)
  • The dumps should be counted too
  • Refresh the quota figure automatically when submisison/dataset is uploaded in resource interface
  • Readable format for the quota in the user table in admin interface .e.g MB
    Quota converted to GB (https://github.com/codalab/codabench/pull/1749)
Light/archive mode after competition end

Option to clean competitions when there are completed. It would for instance keep only leaderboard submissions.

Automatic cleaning
  • Failed submissions, orphans datasets, useless benchmarks, etc. should be marked and cleaned automatically. Users could manually unmark the object to keep it (from the resources interface). Deleted object should be kept in a trash can for one month. This feature needs to be discussed.
  • #302 (schedule)
Monitoring and statistics
  • Fix analytics page download CSV buttons: #649
    Solved by: #988
  • Improve analytics page to include storage statistics. Migrate analytics features from CodaLab.
    Solved by: #1248
  • date of storage calculation like codalab
    Solved by: #1265
Per benchmark submission size limit

Migrate the CodaLab feature on Codabench. This may be less important once the quota feature is implemented.

  • Limit the size of submissions
  • Django admin interface to define the limit independantly for each benchmark

Interface

@ihsaan-ullah

Improve resources interface

The interface for managing datasets, submissions and tasks could be improved. Indeed, improving the resources interface is also part of helping participants to manage their storage space.

  • Add the size of the files
    Solved by #895
  • Submission details: in which benchmark
    Solved by #896
  • make benchmark name clickable link
    Solved by #896
  • Submission: name it using the filename
    Solved by #896
  • Rename datasets tab in "Datasets and programs" #840,
    Solved by #898
  • Have a separate tab for submissions #596 (and show the title given by the user for datasets and programs, and other consideration in the last comment of #896)
    Solved by #899
  • Public datasets should have their own tab or a "show/hide" button (see #758)
    Solved by #906
  • Public datasets should not have delete button if they do not belong to us (see #758)
    Solved by #906
  • submission detail, make created_by a clickable link to user profile
    Solved by #910
  • The search bar for the tab "submissions" should search by filename
    Solved by #917
  • We need more filtering options. For instance, in the tab "submissions", we should be able to filter a specific competition.
    Solved by #917
  • UI for quota management and cleanup (A "progress bar" for the storage quota)
    Solved by #918
  • Delete unused tasks
    Solved by #918
  • Delete unused datasets and programs
    Solved by #918
  • Delete unused submissions
    Solved by #918
  • Delete failed submissions
    Solved by #918
  • Being able to order rows by clicking on the column name (e.g. size)
    Solved by #919

As shown in the screenshot below, we can manage and remove submissions from the "resources" interface. However, we do not track what the benchmark on which the submission was made, so it is hard to know what we are removing.

Capture d’écran 2023-04-29 à 01 41 54

Some issues

  • #145
  • #637
  • #552
  • #862 (impose a limit on dumps for each benchmark)
  • #163

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source file or test is named. Start by reviewing the unchecked items and referenced issues, then inspect the admin analytics page, Django admin quota interface, resources interface, and MinIO cleanup work mentioned in the issue. Done requires narrowing this umbrella into one scoped feature with explicit acceptance criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
django, python
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.