Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auction restart race condition on registration deadline #2641

Open
vohmar opened this issue Jan 22, 2024 · 1 comment · Fixed by #2643
Open

Auction restart race condition on registration deadline #2641

vohmar opened this issue Jan 22, 2024 · 1 comment · Fixed by #2643

Comments

@vohmar
Copy link
Contributor

vohmar commented Jan 22, 2024

Issue description: When registration due date arrives auction asks from the registry the latest status of the domains to determine if the domains were registered in time or not. After receiving this information status of the results is updated on the auction side and new task/job is run to set domain not registered status in registry side and send the domains back to auction. between the end of these two jobs there is a period where auction side is updated with not registered information, but registry still accepts new registration applications for the domains. This is what happened number of domains were registered during that time and ended up in the auction simultaneously.

How to avoid this scenario in the future:

option1: add new status "pending" to the auction reservation list in the registry that blocks any registration attempts while it's set. The idea is that auction system will set that status when registration deadline is reached and then continues processing the registration and auction statuses - discover if domains have been registered and if not then update registry auction list with domain not registered status and restarting the auctions. This will make sure that domain statuses are not updated while the auction and registry data exchange is going on. This does not affect auction end times nor waiting for payment states as auction system has info on those and does not need to request any information form registry. There is no need to change the database data structure for this option

option2: add registration due date column to registry auction table so that registry can check if registration request is valid independently from auction system...

will change the reservation list model, will add additional dependencies between registry and auction, but will effectively remove the time constraint and race condition. Value needs to be updated twice -

  • when auction is over and waiting for payment status is set (invoice issue date+7+30)
  • when invoice is paid and waiting for registration status is set (invoice payment date+30)
    or alternatively leave it blank and set the value only with waiting for registration status.
@vohmar
Copy link
Contributor Author

vohmar commented Feb 11, 2024

The fix apparently did not work. Again few registrationc were accepted after midnight and also were put back to the auction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Status: In progress
Development

Successfully merging a pull request may close this issue.

1 participant