Bug #379

[librerelease] removes files that were not uploaded

mtjm - over 9 years ago - . Updated about 9 years ago.

% Done:



  1. Start librerelease with some files being staged
  2. Run librestage on another package when librerelease is uploading
  3. Wait for librerelease to finish upload, remove the uploaded file and the new file which wasn't uploaded

This could also result in unsigned packages being uploaded.

4c1672b437f84a46a03a59fafea459a96c4638a4 introduced this bug.



Updated by lukeshu over 9 years ago

This will be fixed in the next release. My solution is to get a shared lock when staging, and an exclusive lock when releasing.


Updated by mtjm about 9 years ago

I don't understand how locking would help: wouldn't it delay the second librestage until librerelease finishes, keeping the CPU idle instead of building packages for several hours in some cases?

The old solution was to make a list of staged files in librerelease once and then release them. It's safe to continue staging files until the next librerelease run releases them.


Updated by lukeshu about 9 years ago

That is the case: it will block librestage.

Because sets of files can't be added to the staging directory atomically, there are a couple of race conditions so that I don't want to have the list of staged files.

Perhaps if librerelease first moved files to a temporary upload directory, and only held the lock while it was moving the files?

Although, this could also be fixed in the programs you use to build packages. Staging doesn't need to block building. treepkg/fullpkg could run the staging commands in the background. Also, they could be learn how to do parallel builds by spawning new chroot copies.

I'm closing this, and creating a "librerelease block librestage" bug.

Also available in: Atom PDF