Last modified: 2009-07-21 12:47:22 UTC
The encryption key used at SPI during the licensing update had a large bit depth and as a result, gpg took an average of 0.144 s to decrypt a ballot. Since the current architecture requires that gpg be called once per ballot, 17000 ballots took fully 40 minutes to decrypt in a dedicated script. The online PHP could not even begin to process this before timing out. While part of the issue is the 17000 ballots, even with only 1000 ballots (less than a typical Board Vote) this would take 2.4 minutes and time out a typical 30 second PHP execution. Using a shorter key can counteract this to a degree (I tested a small key that had a 0.03s average execution.) I'm not sure how to deal with this, but regardless I think it is important to test the tallier and verify that will work for the size of vote expected. One ad hoc approach is to use set_time_limit to disable the execution limit, though if one is expecting a long execution one probably ought to still stream some form of a progress indicator to the browser (how many people would sit still for tens of minutes if the browser didn't appear to be doing anything?)
The command-line dumping and tallying system as of r53591 should be able to handle elections of any size, providing you're patient enough. Marking fixed.