Merge lp:~julian-edwards/launchpad/no-udev-diff into lp:launchpad/db-devel

Proposed by Julian Edwards
Status: Merged
Approved by: Brad Crittenden
Approved revision: no longer in the source branch.
Merged at revision: not available
Proposed branch: lp:~julian-edwards/launchpad/no-udev-diff
Merge into: lp:launchpad/db-devel
Diff against target: None lines
To merge this branch: bzr merge lp:~julian-edwards/launchpad/no-udev-diff
Reviewer Review Type Date Requested Status
Brad Crittenden (community) release-critical Approve
Gavin Panella (community) Approve
Review via email: mp+12270@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Julian Edwards (julian-edwards) wrote :

= Summary =
Don't attempt diffs for the udev package, as they will currently fail and fill
the disk with output.

See https://bugs.edge.launchpad.net/soyuz/+bug/314436

= Implementation details =
Package diffs are requested in a single place,
ISourcePackageRelease.requestDiffTo(). They are created with a status of
PENDING and some time after the process-pending-diffs script runs and looks
for PENDING diffs to process.

I've made udev packages a special case so that they are always created with a
status of FAILED, thus preventing the script from attempting a diff.

Revision history for this message
Julian Edwards (julian-edwards) wrote :

=== modified file 'lib/lp/soyuz/doc/package-diff.txt'
--- lib/lp/soyuz/doc/package-diff.txt 2009-07-16 03:31:45 +0000
+++ lib/lp/soyuz/doc/package-diff.txt 2009-09-23 10:16:13 +0000
@@ -672,6 +672,32 @@
     None

+== Problematic packages ==
+
+XXX Julian bug=314436
+Because of bug 314436, diffs of udev can generate huge output which fills the
+disk very quickly. For that reason, diffs of udev are created FAILED by
+default, which will stop the diff script from attempting to create the diff.
+
+ >>> from lp.soyuz.tests.test_publishing import SoyuzTestPublisher
+ >>> from lp.soyuz.interfaces.publishing import PackagePublishingStatus
+ >>> stp = SoyuzTestPublisher()
+ >>> discard = stp.setUpDefaultDistroSeries(hoary)
+ >>> udev_orig = stp.getPubSource(
+ ... sourcename="udev", version="1.0",
+ ... status=PackagePublishingStatus.PUBLISHED)
+ >>> udev_new = stp.getPubSource(
+ ... sourcename="udev", version="1.1",
+ ... status=PackagePublishingStatus.PENDING)
+
+ >>> udev_diff = udev_orig.sourcepackagerelease.requestDiffTo(
+ ... requester=cprov,
+ ... to_sourcepackagerelease=udev_new.sourcepackagerelease)
+
+ >>> print udev_diff.status.name
+ FAILED
+
+
 == PackageDiff privacy ==

 Packagediff decides whether the 'diff_content' file should be

=== modified file 'lib/lp/soyuz/model/sourcepackagerelease.py'
--- lib/lp/soyuz/model/sourcepackagerelease.py 2009-07-20 15:05:42 +0000
+++ lib/lp/soyuz/model/sourcepackagerelease.py 2009-09-23 10:31:47 +0000
@@ -39,7 +39,8 @@
 from lp.soyuz.interfaces.archive import (
     ArchivePurpose, IArchiveSet, MAIN_ARCHIVE_PURPOSES)
 from lp.soyuz.interfaces.build import BuildStatus
-from lp.soyuz.interfaces.packagediff import PackageDiffAlreadyRequested
+from lp.soyuz.interfaces.packagediff import (
+ PackageDiffAlreadyRequested, PackageDiffStatus)
 from lp.soyuz.interfaces.publishing import PackagePublishingStatus
 from lp.soyuz.interfaces.sourcepackagerelease import ISourcePackageRelease
 from lp.soyuz.model.build import Build
@@ -602,6 +603,14 @@
                 "%s was already requested by %s"
                 % (candidate.title, candidate.requester.displayname))

+ if self.sourcepackagename.name == 'udev':
+ # XXX Julian bug=314436
+ # Currently diff output for udev will fill disks. It's
+ # disabled until diffutils is fixed in that bug.
+ status = PackageDiffStatus.FAILED
+ else:
+ status = PackageDiffStatus.PENDING
+
         return PackageDiff(
             from_source=self, to_source=to_sourcepackagerelease,
- requester=requester)
+ requester=requester, status=status)

Revision history for this message
Gavin Panella (allenap) :
review: Approve
Revision history for this message
Brad Crittenden (bac) wrote :

Julian the changes look good. Please add a date to the XXX comments you've added as shown in https://dev.launchpad.net/XXXPolicy

review: Approve (release-critical)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/soyuz/doc/package-diff.txt'
--- lib/lp/soyuz/doc/package-diff.txt 2009-07-16 03:31:45 +0000
+++ lib/lp/soyuz/doc/package-diff.txt 2009-09-23 10:16:13 +0000
@@ -672,6 +672,32 @@
672 None672 None
673673
674674
675== Problematic packages ==
676
677XXX Julian bug=314436
678Because of bug 314436, diffs of udev can generate huge output which fills the
679disk very quickly. For that reason, diffs of udev are created FAILED by
680default, which will stop the diff script from attempting to create the diff.
681
682 >>> from lp.soyuz.tests.test_publishing import SoyuzTestPublisher
683 >>> from lp.soyuz.interfaces.publishing import PackagePublishingStatus
684 >>> stp = SoyuzTestPublisher()
685 >>> discard = stp.setUpDefaultDistroSeries(hoary)
686 >>> udev_orig = stp.getPubSource(
687 ... sourcename="udev", version="1.0",
688 ... status=PackagePublishingStatus.PUBLISHED)
689 >>> udev_new = stp.getPubSource(
690 ... sourcename="udev", version="1.1",
691 ... status=PackagePublishingStatus.PENDING)
692
693 >>> udev_diff = udev_orig.sourcepackagerelease.requestDiffTo(
694 ... requester=cprov,
695 ... to_sourcepackagerelease=udev_new.sourcepackagerelease)
696
697 >>> print udev_diff.status.name
698 FAILED
699
700
675== PackageDiff privacy ==701== PackageDiff privacy ==
676702
677Packagediff decides whether the 'diff_content' file should be703Packagediff decides whether the 'diff_content' file should be
678704
=== modified file 'lib/lp/soyuz/model/sourcepackagerelease.py'
--- lib/lp/soyuz/model/sourcepackagerelease.py 2009-07-20 15:05:42 +0000
+++ lib/lp/soyuz/model/sourcepackagerelease.py 2009-09-23 10:31:47 +0000
@@ -39,7 +39,8 @@
39from lp.soyuz.interfaces.archive import (39from lp.soyuz.interfaces.archive import (
40 ArchivePurpose, IArchiveSet, MAIN_ARCHIVE_PURPOSES)40 ArchivePurpose, IArchiveSet, MAIN_ARCHIVE_PURPOSES)
41from lp.soyuz.interfaces.build import BuildStatus41from lp.soyuz.interfaces.build import BuildStatus
42from lp.soyuz.interfaces.packagediff import PackageDiffAlreadyRequested42from lp.soyuz.interfaces.packagediff import (
43 PackageDiffAlreadyRequested, PackageDiffStatus)
43from lp.soyuz.interfaces.publishing import PackagePublishingStatus44from lp.soyuz.interfaces.publishing import PackagePublishingStatus
44from lp.soyuz.interfaces.sourcepackagerelease import ISourcePackageRelease45from lp.soyuz.interfaces.sourcepackagerelease import ISourcePackageRelease
45from lp.soyuz.model.build import Build46from lp.soyuz.model.build import Build
@@ -602,6 +603,14 @@
602 "%s was already requested by %s"603 "%s was already requested by %s"
603 % (candidate.title, candidate.requester.displayname))604 % (candidate.title, candidate.requester.displayname))
604605
606 if self.sourcepackagename.name == 'udev':
607 # XXX Julian bug=314436
608 # Currently diff output for udev will fill disks. It's
609 # disabled until diffutils is fixed in that bug.
610 status = PackageDiffStatus.FAILED
611 else:
612 status = PackageDiffStatus.PENDING
613
605 return PackageDiff(614 return PackageDiff(
606 from_source=self, to_source=to_sourcepackagerelease,615 from_source=self, to_source=to_sourcepackagerelease,
607 requester=requester)616 requester=requester, status=status)

Subscribers

People subscribed via source and target branches

to status/vote changes: