Details
-
Type: Bug
-
Status: Done/Fixed
-
Priority: Major
-
Resolution: Duplicate
-
Affects Version/s: 4.5.6
-
Fix Version/s: Unscheduled
-
Component/s: CiviEvent
-
Labels:None
-
Documentation Required?:None
Description
I am experimenting with civicrm (drupal) on localhost.
I open several registration tabs to simulate mutliple people attempting to register for an event at once. The location of this page on my machine is http://localhost/drupal/index.php?q=civicrm/event/register&id=7&reset=1
As long as the event is not full when I open the registration page, I am able to register for an event. This is STILL true even if the event fills up after I have opened the page.
Curious, I looked at my mySQL logs and the source code. I found two things:
1. When a person registers for an event, there is no check if the event is currently full. It is not broken, it just doesn't exist.
2. When a person navigates to the event registration page, there is a check to see if the event is full. However, this check is not in a transaction. Therefore, it is possible that this could result in stale information (say, if somebody is currently adding themselves to the event). Not as serious as point #1 but still an issue.
Scenario: A group has a very popular event with limited seating. Lets say there are 100 seats. As soon as they open registration, their site is hit by massive traffic. 1000 people manage to open the registration page before the event fills up. All 1000 people are able to register for the event.