PATCH: plague-0.5.0: PackageJob.py: NameError _and_ YumBaseError (unable to kill its job)
Dan Williams
dcbw at redhat.com
Sun Nov 19 23:34:31 UTC 2006
On Fri, 2006-11-17 at 22:43 -0500, Joe Todaro wrote:
>
> Dan Williams wrote on 11/13/2006 03:26:58 PM:
>
> > On Sun, 2006-11-05 at 23:48 -0500, Joe Todaro wrote:
> > >
> > > ---- PROBLEM # 1 ---- Depsolve step keeps crashing due to a typo
> in
> > > the script:
> > >
> > > 364 (fuse-sshfs): Starting depsolve for arches: ['x86_64',
> 'i386'].
> > > Exception in thread PackageJob: 364/fuse-sshfs:
> > > [...snip...]
> > > > File "/usr/share/plague/server/PackageJob.py", line 513, in
> > > > _arch_deps_solved
> > > > base.log = logger.Logger(threshold=threshold,
> > > file_object=sys.stdout)
> > > > NameError: global name 'logger' is not defined
> >
> > Fixed, thanks!
>
> My pleasure - glad to help.
>
> >
> > >
> > > ---- PROBLEM # 2 ---- Unable to kill any job that fails due to a
> > > missing package/s in the yum repos:
> > >
> > > > File "/usr/share/plague/server/PackageJob.py", line 548, in
> > > _arch_deps_solved
> > > > pkg = base.returnPackageByDep(dep)
> > > > File "__init__.py", line 1342, in returnPackageByDep
> > > > YumBaseError: No Package found for fuse-devel
> >
> > What version of yum do you have on this machine?
>
> yum-2.4.2-2
Ok, can you do the following, so we can find out which module
YumBaseError lives in in yum-2.4.2/yum-utils:
grep -r "YumBaseError" /usr/lib/python2.3/site-packages
(or if you have python 2.4, use python2.4 instead of course).
Thanks,
Dan
>
> > The versions of the
> > yum python libraries are a bit confusing here; and that's probably
> where
> > the error is coming from. It appears that an unexpected error is
> > getting thrown, and we need to catch that error. However, I'm not
> sure
> > where exactly it's coming from to catch it. Can you try to get this
> > error again and then paste in about 10 lines of code from around the
> > Line # in PackageJob.py that this backtrace comes from? (ie, line
> 548
> > here), and mark the line numbers too?
>
> 537 try:
> 538 base.doSackSetup(archlist)
> 539 except yum.Errors.RepoError, exc:
> 540 raise DepError(str(exc))
> 541
> 542 for dep in srpm.requiresList():
> 543 if dep.startswith("rpmlib("):
> 544 continue
> 545 if use_repomd:
> 546 try:
> 547 pkg = base.returnPackageByDep(dep)
> 548 except repomd.mdErrors.PackageSackError,
> exc:
> 549 raise DepError(str(exc))
> 550 else:
> 551 try:
> 552 pkg = base.returnPackageByDep(dep)
> 553 except yum.Errors.PackageSackError, exc:
> 554 raise DepError(str(exc))
> 555 except yum.Errors.YumBaseError, exc:
> 556 raise DepError(str(exc))
> 557 except DepError, exc:
> 558 self._last_depsolve_error = str(exc)
> 559 print "%s (%s/%s): Depsolve Error: %s" %
> (self.uid, self.package, arch, str(exc))
> 560 success = False
>
> >
> > The fix you posted for this hunk isn't the "correct" fix;
>
> Actually, it wasn't intended to "fix" the (YumBaseError) problem
> itself -- rather it was just intended to provide us with a means by
> which we'd be able to "recover* from the negative effects of the
> problem, which was a plague-server that wouldn't allow us to *kill*
> the associated buildjob because the buildjob wasn't in "waiting"
> state -- it was in "depsolve" which is where it got stuck. Anyway,
> recycling the plague-server did not help -- it just kept restarting
> the buildjob which just kept failing in the same place even after we
> downloaded the missing package (fuse-devel) to the yum repo and ran
> the createrepo command in-between plague-server restarts.
>
> > that would be
> > to catch the exception and to re-throw it as a DepSolveError as is
> done
> > for the other 'execpt' blocks around there.
> >
> > Cheers,
> > Dan
> >
> > >
> > > ---- PATCH ----
> > >
> > > Here's the patch that resolved the above 2 problems for us:
> > >
> > >
> > >
> > > ----- REQUEST ----
> > >
> > > Can someone please review it... especially the fix to PROBLEM # 2,
> > > that could potentially be masking a bigger problem..
> > >
> > > Here's the code for your convenience (...these are the updates we
> made
> > > to the _latest_ version of PackageJob.py):
> > >
> > > $ cd /usr/share/plague/server
> > > $ diff PackageJob.py PackageJob.py.working
> > > 513c513
> > > < base.log = logger.Logger(threshold=threshold,
> > > file_object=sys.stdout)
> > > ---
> > > > base.log = Logger(threshold=threshold,
> > > file_object=sys.stdout)
> > > 698c698
> > > < if self._curstage == 'waiting':
> > > ---
> > > > if self._curstage in ['waiting', 'depsolve']:
> > >
> > >
> > > Thanks,
> > > Joe
> > > --
> > > Fedora-buildsys-list mailing list
> > > Fedora-buildsys-list at redhat.com
> > > https://www.redhat.com/mailman/listinfo/fedora-buildsys-list
> >
> > --
> > Fedora-buildsys-list mailing list
> > Fedora-buildsys-list at redhat.com
> > https://www.redhat.com/mailman/listinfo/fedora-buildsys-list
> --
> Fedora-buildsys-list mailing list
> Fedora-buildsys-list at redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-buildsys-list
More information about the buildsys
mailing list