Soyuz/TechnicalDetails/UploadProcessor

Not logged in - Log In / Register

Revision 2 as of 2011-09-09 14:57:00

Clear message

Soyuz Upload Processing

Once package files are available on the upload servers, we need to run the Upload Processor to deal with them. This usually runs periodically from a cron job.

The Upload Processor

The process-upload.py script is initiated with a single argument which is the base directory of the file upload area - let's call it $BASE. The catch is that this is the parent of $INCOMING because once things are processed from $INCOMING they are moved elsewhere.

The file structure looks like this:

$BASE/
     |
     +-incoming/   ← $INCOMING
     |
     +-accepted/
     |
     +-failed/
     |
     +-rejected/

process-upload.py does many, many checks and then moves the files from the upload into:

The upload processor always sends email whether the package was accepted or rejected, except in the following circumstances:

Ancestry and auto-acceptance

When a package is accepted, it can then go into one of three separate states in the PackageUpload table:

  1. if it is considered new, that is we've never seen that package before in the upload context, it is held in the distroseries NEW queue.
  2. if it's not new and has "ancestry" in the distroseries context, but the distroseries is either frozen or released, it is held in the UNAPPROVED queue
  3. if it's not new and doesn't meet the previous condition, it is "auto-accepted" - the PackageUpload moves to the DONE state and a PENDING publishing record is created.

If a package being uploaded is for a PPA then it is always auto-accepted. PPAs do not have distroseries queues.