Codeberg/Community
54
325
Fork
You've already forked Community
12

Possible race condition between importing a repo from GitHub and its deletion results in a permanently occupied project name for an inexistent project #1307

Closed
opened 2023年10月02日 19:05:41 +02:00 by KOLANICH · 9 comments

Comment

Sometimes, when a repo is imported from GitHub, importing stalls ethernally. My hypothesis is that Codeberg backend IP address runs out of GitHub API requests quota (60 per hour for an IP, 1000 per hour for an API token) and doesn't process the error properly. Then the solution is to go to settings link and delete the partly-imported repo (it is unusable on that point). And then try again later. Mostly this works, but in a large enough (the minority, but even 1 such case is enough to create problems) fraction of such failed tries the following happens.

  1. The repo got "deleted".
    a. https://codeberg.org/<namespace>/<repo name> results in 404
    b. https://codeberg.org/<namespace>/<repo name>/settings results in 404
  2. Its name doesn't get freed: any attempt to create such a repo results in an error.
    a. trying to import to such name results in a message "The repository name is already used."
    b. trying to create it from scratch results in "Files already exist for this repository. Contact the system administrator."

The hypothesis is that a race condition happens and migration process does something after the repo is deleted by user explicitly.

It'd be nice to

  1. investigate the bugs leading to the issue;
  2. fix the bugs;
  3. find ways to detect and clean such lost names.

The temporary workarounds are:

  • when importing, use a temporary name you will never need
  • rename the repo into a name you will never need before deleting it
### Comment Sometimes, when a repo is imported from GitHub, importing stalls ethernally. My hypothesis is that Codeberg backend IP address runs out of GitHub API requests quota (60 per hour for an IP, 1000 per hour for an API token) and doesn't process the error properly. Then the solution is to go to settings link and delete the partly-imported repo (it is unusable on that point). And then try again later. Mostly this works, but in a large enough (the minority, but even 1 such case is enough to create problems) fraction of such failed tries the following happens. 1. The repo got "deleted". a. `https://codeberg.org/<namespace>/<repo name>` results in 404 b. `https://codeberg.org/<namespace>/<repo name>/settings` results in 404 2. Its name doesn't get freed: any attempt to create such a repo results in an error. a. trying to import to such name results in a message "The repository name is already used." b. trying to create it from scratch results in "Files already exist for this repository. Contact the system administrator." The hypothesis is that a race condition happens and migration process does something after the repo is deleted by user explicitly. It'd be nice to 1. investigate the bugs leading to the issue; 2. fix the bugs; 3. find ways to detect and clean such lost names. The temporary workarounds are: * when importing, use a temporary name you will never need * rename the repo into a name you will never need before deleting it
Owner
Copy link

I freed your repos, but the problem still stands.

I freed your repos, but the problem still stands.

Thank you!

Thank you!

Hello,
I had the same problem today with the pages repo.
How can I solve the problem ?

Hello, I had the same problem today with the ```pages``` repo. How can I solve the problem ?
Owner
Copy link

@Metadustrie if you visit your user settings > repositories, you can check for "unadopted" repositories that exist on disk but not in the software.

If your repo still exists in the software but is not working (corrupted), you can often append /settings to the URL and delete it from there.

@Metadustrie if you visit your user settings > repositories, you can check for "unadopted" repositories that exist on disk but not in the software. If your repo still exists in the software but is not working (corrupted), you can often append /settings to the URL and delete it from there.

@fnetX Hi, I've hit the same issue during my migration for openh264-rs. I couldn't see any leftover in my "Settings > Repositories", could you please help? Thanks!

@fnetX Hi, I've hit the same issue during my migration for `openh264-rs`. I couldn't see any leftover in my "Settings > Repositories", could you please help? Thanks!
Owner
Copy link

I have deleted the repo now.

I have deleted the repo now.

@fnetX Hello, I got a similar issue while trying to create a nd repo, the creation failed but it now says "Files already exist for this repository". It's not listed anywhere either

@fnetX Hello, I got a similar issue while trying to create a `nd` repo, the creation failed but it now says "Files already exist for this repository". It's not listed anywhere either
Owner
Copy link

@0x7E I deleted the files for you as well.

@0x7E I deleted the files for you as well.

Please create a new issue if this happens, thank you.

Please create a new issue if this happens, thank you.
Gusted locked as Resolved and limited conversation to collaborators 2025年08月26日 21:09:38 +02:00
This discussion has been locked. Commenting is limited to contributors.
No Branch/Tag specified
main
No results found.
Labels
Clear labels
accessibility

Reduces accessibility and is thus a "bug" for certain user groups on Codeberg.
bug

Something is not working the way it should. Does not concern outages.
bug
infrastructure

Errors evidently caused by infrastructure malfunctions or outages
Codeberg

This issue involves Codeberg's downstream modifications and settings and/or Codeberg's structures.
contributions welcome

Please join the discussion and consider contributing a PR!
docs

No bug, but an improvement to the docs or UI description will help
duplicate

This issue or pull request already exists
enhancement

New feature
infrastructure

Involves changes to the server setups, use `bug/infrastructure` for infrastructure-related user errors.
legal

An issue directly involving legal compliance
licence / ToS

involving questions about the ToS, especially licencing compliance
please chill
we are volunteers

Please consider editing your posts and remember that there is a human on the other side. We get that you are frustrated, but it's harder for us to help you this way.
public relations

Things related to Codeberg's external communication
question

More information is needed
question
user support

This issue contains a clearly stated problem. However, it is not clear whether we have to fix anything on Codeberg's end, but we're helping them fix it and/or find the cause.
s/Forgejo

Related to Forgejo. Please also check Forgejo's issue tracker.
s/Forgejo/migration

Migration related issues in Forgejo
s/Pages

Issues related to the Codeberg Pages feature
s/Weblate

Issue is related to the Weblate instance at https://translate.codeberg.org
s/Woodpecker

Woodpecker CI related issue
security

involves improvements to the sites security
service

Add a new service to the Codeberg ecosystem (instead of implementing into Gitea)
upstream

An open issue or pull request to an upstream repository to fix this issue (partially or completely) exists (i.e. Gitea, Forgejo, etc.)
wontfix

Codeberg's current set of contributors are not planning to spend time on delegating this issue.
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
6 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Codeberg/Community#1307
Reference in a new issue
Codeberg/Community
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?