[ZODB-Dev] Pack problem

Jim Fulton jim at zope.com
Mon Jun 30 15:42:39 CEST 2014


On Mon, Jun 30, 2014 at 8:24 AM, Alessandro Pisa
<alessandro.pisa at gmail.com> wrote:
> On 30 June 2014 12:43, Jim Fulton <jim at zope.com> wrote:
>> On Mon, Jun 30, 2014 at 3:30 AM, Alessandro Pisa
>> <alessandro.pisa at gmail.com> wrote:
>>> Hello everybody :)
>>
>> As the comment suggests, if you continued packing, the new file
>> would be as large as the old one, because no records would be
>> removed.  This is likely either because a) you've already packed to
>> that pack time before.
>> b) None of the objects written up to the pack time
>> have been written after the pack time and this there are no old records
>> to be removed.
>
> Strange, I am making a 0 day pack.

Perhaps you had a clock problem and the recent records have
timestamps in the future.

> How can I convince zeopack of that?

You pass a pack time of now. :)

> Is it possible to remove this "previous pack memory" and act as it
> would be the first pack?

Theoretically.

> Would this be effective?

At causing dangling references, possibly.

> Any suggestion for reducing the Data.fs size?

I suggest using the file-store iterator to look at the transaction
timestamps.

Something like:

  from ZODB.FileStorage import FileIterator

  it = FileIterator('s.fs')

  last = None
  for t in it:
      if last is not None:
          if t.tid <= last:
              print 'wtf', repr(t.tid)
          last = t.tid


If you've said to pack to the present and you
aren't writing to the database, then I would expect it to stop at
the end of the file, unless you have a problem with your
transaction ids.

Jim

-- 
Jim Fulton
http://www.linkedin.com/in/jimfulton


More information about the ZODB-Dev mailing list