[Yum] 2.4.2 on HP-UX and IRIX

Albert Chin yum at mlists.thewrittenword.com
Sun Jan 15 19:00:44 UTC 2006


On Sun, Jan 15, 2006 at 01:42:39PM -0500, seth vidal wrote:
> 
> > I presume self.rpmdb is what you're talking about. Because it causes
> > the __db.### Berkeley DB environment files to be opened, no further
> > instances can be opened and mmap()'ed. However, populateTs() in
> > yum/depsolve.py does so, causing the problem.
> > 
> > I suppose one option is to stuff self.rpmdb.[member] with any info
> > needed by future uses of self.rpmdb and then close the DB after
> > self.rpmdb.addDB().
> > 
> 
> Maybe I'm missing it - where does populateTs() reopen the rpmdb?

The call to self.ts.addInstall():
                self.ts.addInstall(hdr, (hdr, rpmfile), txmbr.ts_state)

I don't know if it's easy to see this without printf()'s in the
Berkeley DB source code. Running strace on the process should also
show multiple opens of db.###. You'll see several opens followed by
several mmap() calls. Then, you see them again after the call above.
In between, the initial mmap()'s have not been munmap()'ed because
self.read_ts.ts and self.read_ts are still active. They become
inactive in closeRpmDB() but that doesn't occur until yum ends.

> Are you talking about the rpmdb or the transaction set?

Well, in this case, both open the __db.### environment files.

> And what version of rpm are you using this on?

rpm-4.2.4. I don't think the version matters though.

-- 
albert chin (china at thewrittenword.com)



More information about the Yum mailing list