Re: [ZODB-Dev] ZODB 3.8.3b1

2009-08-15 Thread Chris Withers
Jim Fulton wrote:
> It would be great if people who have databases with version data would
> try the utility out.

Where's tfm for the utility? :-)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.8.3b1

2009-08-15 Thread Chris Withers
Jim Fulton wrote:
> On Sat, Aug 15, 2009 at 8:04 AM, Chris Withers wrote:
>> Jim Fulton wrote:
>>> It would be great if people who have databases with version data would
>>> try the utility out.
>> Where's tfm for the utility? :-)
> 
> Use the -h option. There really isn't much to it. (There's also a
> doctest in the ZODB/scripts directory.)

-h assumes I have a script to run, which is what I was hoping the manual 
would lead me too...

I have a buildout with version 2.12.0a3 of zope2 specified as an egg, 
extending 
http://svn.zope.org/*checkout*/Zope/tags/2.12.0a3/versions.cfg?rev=99292.

I guess I need to specify ZODB3=3.8.3b1 in my [versions] section, but 
then what do I do?

(hmmm, zope2 2.12.0a3 relies on ZODB3 3.9.0a12, is it safe to downgrade 
this for the duration of running this script? will this script not work 
with ZODB3 3.9.x?)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.8.3b1

2009-08-15 Thread Chris Withers
Jim Fulton wrote:
> If you install ZODB3 3.8.3b1 normally, you'll get a strip_versions
> script in your bin directory. I'm not familar with the Zope 2 buildout
> or whether you can use ZODB 3.8 with Zope 2.12.

Hmm, okay, I'll play it safe then...

If I have a normal source install of Zope 2.9.10, how do I install ZODB 
3.8.3b1 such that the zope instance will actually use it?

Or do I just need to install it into site-packages of an appropriate 
python version so I can run the script on the data.fs file?

(sorry, having to guess here since I don't know how the script works - 
is it over a zeo connection? does it modify the .fs in place? does in 
generate a new .fs from an old .fs? Is it safe to use on a .fs in use by 
a storage server?)

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.8.3b1

2009-08-15 Thread Chris Withers
Jim Fulton wrote:
> $ bin/strip_versions -h
> usage: strip_versions input output
> 
> Remove version records by copying input to output, stripping any
> version records seen in input.
> 
> The input and output arguments are file-storage file names.  If the -c
> option is used, then the input and output arguments must be storage
> configuration files.

So is this safe to use on a Data.fs that's in use by a storage server?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.8.3b1

2009-08-25 Thread Chris Withers
Jim Fulton wrote:
> Yup, where I assume you mean using the in-use storage as input. The
> script makes a new copy.  After making the copy, you can change the
> server to use that. Of course, changes made after copying won't be in
> the copy, but if you just want to try the script out, you can just
> point it at an in-use file. I did.

Initial testing suggests this works just fine :-)

I used the following buildout to get the right version of ZODB in 
isolation and so didn't have to worry about affecting either the old or 
new Zope instances involved:

[buildout]
parts =
   fixer
versions = versions

[versions]
ZODB3 = 3.8.3b1

[fixer]
recipe = zc.recipe.egg
eggs = ZODB3

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] instrumenting a ZEO server?

2009-08-26 Thread Chris Withers
Hi All,

I'm wondering if there's any way to get a ZEO server to log about how 
it's performing?
(eg: how many connections, how many clients are waiting, where they're 
waiting, etc)

I'm trying to debug a problem where app servers are being dropped out of 
a load balancer pool for being unresponsive, and I think they're waiting 
on the ZEO server so I'm trying to get some stats on the ZEO server side 
as to what's going on...

As far as the clients go, DeadlockDebugger is providing some insights:

   File "/opt/Zope-2.9/lib/python/ZEO/ClientStorage.py", line 749, in loadEx
 self._lock.acquire()# for atomic processing of invalidations

I assume this is the client waiting for the storage server's lock?
Is this the ZEO server's single threadedness or is this a lock between 
threads on the app server?

   File "/opt/Zope-2.9/lib/python/ZEO/ClientStorage.py", line 769, in loadEx
 data, tid, ver = self._server.loadEx(oid, version)
   File "/opt/Zope-2.9/lib/python/ZEO/ServerStub.py", line 192, in loadEx
 return self.rpc.call("loadEx", oid, version)
   File "/opt/Zope-2.9/lib/python/ZEO/zrpc/connection.py", line 531, in call
 r_flags, r_args = self.wait(msgid)
   File "/opt/Zope-2.9/lib/python/ZEO/zrpc/connection.py", line 638, in wait
 asyncore.poll(delay, self._singleton)
   File "/usr/local/lib/python2.4/asyncore.py", line 122, in poll
 r, w, e = select.select(r, w, e, timeout)

What does this mean? I'm guessing it's the actual transfer of data from 
the storage server to the app server, right?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] instrumenting a ZEO server?

2009-08-26 Thread Chris Withers
Alan Runyan wrote:
> What version of ZODB are you using? 

Whatever ships with Zope 2.9.8

> If you have zeo on in debugging

What does this mean?

> How many clients are waiting:
> You should be able to see this in zeo log files

Not currently... maybe this relates to your mystical "zeo on in 
debugging" comment? ;-)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.0 released

2009-09-08 Thread Chris Withers
Jim Fulton wrote:
> The changes from ZODB 3.8:
> 
>   http://pypi.python.org/pypi/ZODB3/3.9.0#id1

There are some typos in this list:

- should probably be `with` when describing the with statement

- "If control exists the block" I'm guessing should be "If control exits 
the block"

- effecient -> efficient

Questions:

- when using `with` blocks and a ConflictError is raised, what happens? 
In my fantasy world, the `with` block would be tried again ;-)

- if using cache-size-bytes, is the parameter that limits the number of 
objects by number ignored? It would be ideal to specify a size in bytes 
and an unlimited number of objects...

- where can I find out more about invalidation-age?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.0 released

2009-09-09 Thread Chris Withers
Jim Fulton wrote:
>> There are some typos in this list:
>>
>> - should probably be `with` when describing the with statement
> 
> I don't know what you mean.

Databases have a new method, transaction, that can be used with the 
Python (2.5 and later) with statement:

->

Databases have a new method, transaction, that can be used with the 
Python (2.5 and later) `with` statement:


>> Questions:
>>
>> - when using `with` blocks and a ConflictError is raised, what happens?
> 
> The transaction is aborted.

That might be surprising for old-time Zope users... Still, I assume the 
ConflictError propagates through so they'll see it raised, right?

>> - if using cache-size-bytes, is the parameter that limits the number of
>> objects by number ignored?
> 
> No.

Is there any way to get this to happen?
Would seeing the number limit extremely high have the right effect?

>> - where can I find out more about invalidation-age?

http://svn.zope.org/ZODB/trunk/src/CHANGES.txt?rev=103676&r1=103674&r2=103676

There's a "that" missing from the first of the new lines ;-)

> src/ZEO/tests/invalidation-age.txt

Ah cool, now I get it :-)

typo: verificatioin -> verification

I take it this is irrelevant if you're not using persistent client 
caches? Are those safe to use now? [1]

cheers,

Chris

[1]

http://www.mail-archive.com/zodb-dev@zope.org/msg03349.html
http://www.mail-archive.com/zodb-dev@zope.org/msg01377.html

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] CRC check failed when running repozo

2009-09-14 Thread Chris Withers
Hi All,

Anyone ever see this?

Traceback (most recent call last):
   File "/opt/Zope-2.9//bin/repozo.py", line 517, in ?
 main()
   File "/opt/Zope-2.9//bin/repozo.py", line 510, in main
 do_backup(options)
   File "/opt/Zope-2.9//bin/repozo.py", line 450, in do_backup
 reposz, reposum = concat(repofiles)
   File "/opt/Zope-2.9//bin/repozo.py", line 263, in concat
 bytesread += dofile(func, ifp)
   File "/opt/Zope-2.9//bin/repozo.py", line 200, in dofile
 data = fp.read(todo)
   File "/usr/local/lib/python2.4/gzip.py", line 225, in read
 self._read(readsize)
   File "/usr/local/lib/python2.4/gzip.py", line 273, in _read
 self._read_eof()
   File "/usr/local/lib/python2.4/gzip.py", line 309, in _read_eof
 raise IOError, "CRC check failed"
IOError: CRC check failed

Zope 2.9.8...

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] How do I find out the size of a subtree of the object graph?

2009-09-14 Thread Chris Withers
Hi All,

As the subject line says with the following definitions:

- size = size on disk, in Mb

- subtee = Zope folderish type things, in this case...

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] CRC check failed when running repozo

2009-09-14 Thread Chris Withers
Adam GROSZER wrote:
> Hello,
> 
> +1 on that. Sometimes copy operations (over the network) screw up some
> bits. Happens rarely but then it hits hard.
> 
> Monday, September 14, 2009, 10:13:39 AM, you wrote:
> 
> CT> Hmm. Haven't seen that. My guess would be some low-level data corruption.
> 
> CT> Christian

My suspicion is running repozo where the previous repozo run failed and 
the output directory is corrupted.

I'm gonna try blowing away all the previous repozo output and try again...

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] How do I find out the size of a subtree of the object graph?

2009-09-14 Thread Chris Withers
Jim Fulton wrote:
> ZODB doesn't provide any direct support because it has no notion of tree.

Does it have any notion of object size on disk for a given object?

> In Zope 2, you could export the folder and look at the size of the export.

Sadly, when you're trying to figure out which folder is using all the 
space on a disk that's running out of space, that's not practical...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] How do I find out the size of a subtree of the object graph?

2009-09-14 Thread Chris Withers
Jens Vagelpohl wrote:
> 
>> Sadly, when you're trying to figure out which folder is using all the
>> space on a disk that's running out of space, that's not practical...
> 
> How about simply writing a script that crawls the ZODB and gives you 
> paths and sizes?

Indeed, and what's the magic incantation to get the size of the object 
as it is on disk?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] Problems packing Zope 2.9.8 storage

2009-09-14 Thread Chris Withers
Hi All,

I've got a ZODB that's ballooned and I'm now having problems packing 
with zeopack.

I tried with zeopack, which appeared to just hang (still in top, but no 
cpu usage for an hour or two), so I ctrl-c'ed it.

Now when I try, I just get the text "Already packing" back.

There is a .old file there, but it was last modified over a week ago.

Looking in FileStorage.py, it appears there's a possibility for an 
exception to be raised after self._pack_is_in_progress has been set to 
True but before the try/finally clause that clears 
self._pack_is_in_progress has been entered. Has anyone experienced this?
If so, what should I look to do now?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Problems packing Zope 2.9.8 storage

2009-09-14 Thread Chris Withers
Shane Hathaway wrote:
>> There is a .old file there, but it was last modified over a week ago.
> 
> The analysis phase of packing can take a long time.  A week is too much, 
> though. :-)

Yeah, this is off the back of an automated pack/backup/unpack/verify to 
keep two storages in sync on two database servers, one live, one hot 
standby. The process went wrong because one of the storages has 
ballooned in size...

>> If so, what should I look to do now?
> 
> If I were solving it, I would see what happens if I copy the storage to 
> RelStorage and then pack it.  Maybe that's just me though.

I thought RelStorage was slow at packing?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Problems packing Zope 2.9.8 storage

2009-09-14 Thread Chris Withers
Shane Hathaway wrote:
> Chris Withers wrote:
>> I thought RelStorage was slow at packing?
> 
> Not anymore.  I optimized packing last December/January and it has been 
> plenty fast ever since, AFAIK.

Interesting. Got any metrics on its speed compared to FileStorage, 
including packing?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Problems packing Zope 2.9.8 storage

2009-09-18 Thread Chris Withers
Shane Hathaway wrote:
> Look at this chart in particular, which suggests that RelStorage with 
> PostgreSQL or MySQL is several times faster than ZEO for heavy read loads:

Cool, now all I need is something like zeoraid for postgres (or, at a 
push, mysql)...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] tools for analysing the tail of a filestorage?

2009-09-21 Thread Chris Withers
Hi All,

I have a filestorage being used by Zope 2 that is mysteriously growing. 
I don't have confidence in the Undo tab, since this setup has two 
storages, once mounted into the other.

I tried fstail.py, and while it tells me the same info as the Undo tab 
(except with more certainty that it's showing the right storage results 
;-) it doesn't say much about the objects in question...

Are there any other tools that might tell me more?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Cleaning up a ZODB storage from 'versions'

2009-09-30 Thread Chris Withers
Jim Fulton wrote:
>> Is there a way for cleaning up a storage and removing the related
>> versions in some way?
> 
> Yes. Use the ZODB 3.8 strip_versions script.

I used this buildout to get this script available in isolation:

[buildout]
parts =
   fixer
versions = versions

[versions]
ZODB3 = 3.8.3b1

[fixer]
recipe = zc.recipe.egg
eggs = ZODB3

...it doesn't need an instance home or any such, as it just copies a 
source .fs file (which can be in use) to a new .fs fiel but minus the 
versions.

cheers,

Chris

PS: Andreas, I could have taken your usual approach and just shouted at 
you to use Google since Jim already helped me through this about a month 
ago ;-)

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] "tid to old for invq" in zeo server logs?

2009-10-19 Thread Chris Withers
Hi All,

I saw a few entries like these in the event log of a storage server that 
stopped responding for a couple of minutes:

INFO ZEO.StorageServer (30332) tid to old for invq 252618838173181593 < 
252618856850589832
--
INFO ZEO.StorageServer (30332) tid to old for invq 252618838177204172 < 
252618856850589832

What do these mean?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] "tid to old for invq" in zeo server logs?

2009-10-20 Thread Chris Withers
Jim Fulton wrote:
> It means that the server wasn't able to provide "quick" invalidations
> because a client was disconnected too long.  The message isn't very
> well worded, even aside from the misspelling.

Has that been fixed in the latest zodb? If not, if I get a chance, I'm 
happy to patch...

> Normally, in this situation, a client would then perform a full cache
> verification, which puts lots of pressure on the server, possibly
> making it unresponsive.  There's a client option
> "drop-cache-rather-than-verify" that can prevent this.

Was the present in Zope 2.9.8?

> Arguably, this
> is a "don't be stupid" option that should be enabled by default.

Happy to patch this too, if it's the right thing to do and I get a 
chance and I'm told it's okay to do so...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.3 released

2009-10-26 Thread Chris Withers
Jim Fulton wrote:
> situations when deleting items. I recommend that people running 3.9
> update to the new release as soon as reasonable. (If you're using ZEO,
> this only applies to ZEO clients, but servers.

Just wanted to check this last sentence: what needs updating? clients, 
servers or both?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] why use zc.recipe.filestorage?

2009-10-30 Thread Chris Withers
Hi All,

I'm wondering what the point of this recipe is?

Why use:

[storage]
recipe = zc.recipe.filestorage

[zeo]
recipe = zc.zodbrecipes:server
zeo.conf =
 
 path ${storage:path}
 

...when you could just use:

[zeo]
recipe = zc.zodbrecipes:server
zeo.conf =
 
 path ${buildout:directory}/databases/Data.fs
 

I feel like I'm missing something...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] why use zc.recipe.filestorage?

2009-10-30 Thread Chris Withers
Jim Fulton wrote:
>> [zeo]
>> recipe = zc.zodbrecipes:server
>> zeo.conf =
>> 
>> path ${buildout:directory}/databases/Data.fs
>> 
>>
>> I feel like I'm missing something...
> 
> You aren't missing anything. The benefit is very small.

Excellent. I shall not feel guilty about not using it then :-)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] zodb 3.8.3 strip_versions missing some versions?

2009-11-02 Thread Chris Withers
Hi All,

I'm upgrading a Zope 2.9.8 project to Zope 2.12 + zeoraid.

As I've done with previous projects, I run the .fs files through zodb 
3.8.3's strip_versions script. For both the storages in this project, 
the script found no version records.

As a first step, I'm currently running the 2.9.8 app server against a 
pair of zeo storage servers running zodb 3.9.3 and zeoraid 1.0b3

However, when I try and view the history tab of *any* page template 
within the .fs files, even a newly created one, I get an assertion error 
from zeoraid as gocept.zeoraid.storage.RAIDStorage's history method is 
getting called with version passed as an integer 20.

Anyone have any idea what that 20 means and why it's being passed like that?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.3 history call causing problems for storages that still accept version parameters

2009-11-02 Thread Chris Withers
Christian Theune wrote:
> There's a size argument following the version which probably is not
> being passed as a keyword argument so it looks like a slight API
> incompatibility. I wonder whether ZEORaid should hack around that or
> whether the caller should be changed.

Hmm... looking more closely at the traceback, the caller is:

   File "ZODB3-3.9.3-py2.6-linux-i686.egg/ZEO/StorageServer.py", line 
1382, in history
 return self.storage.history(oid, size)

Now, ZODB 3.9 doesn't support versions, which is why the versions 
parameter has vanished, I guess?

However, I wonder if maybe this call should be:

self.storage.history(oid, size=size)

...to support storages which still accept a version parameter *and* 
newer ones that don't?

Looking at RelStorage:
http://svn.zope.org/relstorage/trunk/relstorage/storage.py?rev=105120&view=auto
...I can see it's going to have the same problem.

Would anyone object if I wrote a test and fixed this on the 3.9 branch 
of ZODB? I'm not really sure what to do about the trunk...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.3 history call causing problems for storages that still accept version parameters

2009-11-02 Thread Chris Withers
Christian Theune wrote:
>> Would anyone object if I wrote a test and fixed this on the 3.9 branch
>> of ZODB? I'm not really sure what to do about the trunk...
> 
> I think that's the best idea. It's not exactly part of the policy of
> supporting old protocols but if we want to support and encourage 3rd
> party storage implementations we should leverage this simple fix for
> better backwards compatibility.

Hmmm, I'm less sure now. The problematic code is here:

http://zope3.pov.lt/trac/browser/ZODB/branches/3.9/src/ZEO/StorageServer.py#L1379

It looks like ZEOStorage308Adapter is used when the protocol specified 
is less than Z309, which it is in my case. But, the assumption here is 
that the storage being served by StorageServer effectively matches the 
Z309 API. zeoraid's RAIDStorage does not...

However, I can't see what `history` method is called if the protocol >= 
Z309. Christian, I'm guessing you guys have used zeoraid with 3.9 from 
some time now, does this issue not occur if everything is talking Z309? 
If not, why not?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] Test time on 3.9 branch

2009-11-02 Thread Chris Withers
Hi All,

Should I really expect the tests to take an hour to run on Windows?

Total: 3825 tests, 0 failures, 0 errors in 56 minutes 49.469 seconds.

As you can see, no errors or failures were reported. However, there were 
some error-ish messages interspersed in the test output. Is this to be 
expected?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Test time on 3.9 branch

2009-11-02 Thread Chris Withers
Jim Fulton wrote:
>> Should I really expect the tests to take an hour to run on Windows?
> 
> Yes.

Erk. Is there a subset I can look to run when looking to patch the 
ZEOStorage308Adapter?

>> However, there were
>> some error-ish messages interspersed in the test output. Is this to be
>> expected?
> 
> You didn't show the extra output, so I can't say. I wouldn't be surprised.

Here's the full output...

cheers,

Chris

Running .!no tests here! tests:
   Set up .!no tests here! in 0.016 seconds.
   Ran 1 tests with 0 failures and 0 errors in 0.000 seconds.
Running .BlobAdaptedFileStorageBlobTests tests:
   Tear down .!no tests here! in 0.000 seconds.
   Set up .BlobAdaptedFileStorageBlobTests in 0.000 seconds.
   Ran 87 tests with 0 failures and 0 errors in 18.062 seconds.
Running .BlobAdaptedFileStorageTests tests:
   Tear down .BlobAdaptedFileStorageBlobTests in 0.000 seconds.
   Set up .BlobAdaptedFileStorageTests in 0.000 seconds.
error: uncaptured python exception, closing channel 
<__main__.ZEOTestServer localhost:21997 at 0x11205a8> (:[Error 32] The process cannot access the file because 
it is being used by another process: 'Data.fs' [C:\P
ython26\lib\asyncore.py|read|74] 
[C:\Python26\lib\asyncore.py|handle_read_event|408] 
[c:\localsvn\zodb\src\ZEO\tests\zeoser
ver.py|handle_accept|97] 
[c:\localsvn\zodb\src\ZEO\tests\zeoserver.py|cleanup|34] 
[c:\localsvn\zodb\src\ZODB\FileStorage\Fi
leStorage.py|cleanup|1314])
warning: unhandled close event
error: uncaptured python exception, closing channel 
<__main__.ZEOTestServer localhost:27769 at 0x11205a8> (:[Error 32] The process cannot access the file because 
it is being used by another process: 'Data.fs' [C:\P
ython26\lib\asyncore.py|read|74] 
[C:\Python26\lib\asyncore.py|handle_read_event|408] 
[c:\localsvn\zodb\src\ZEO\tests\zeoser
ver.py|handle_accept|97] 
[c:\localsvn\zodb\src\ZEO\tests\zeoserver.py|cleanup|34] 
[c:\localsvn\zodb\src\ZODB\FileStorage\Fi
leStorage.py|cleanup|1314])
warning: unhandled close event
   Ran 107 tests with 0 failures and 0 errors in 9 minutes 29.578 seconds.
Running .BlobFileStorageBlobTests tests:
   Tear down .BlobAdaptedFileStorageTests in 0.000 seconds.
   Set up .BlobFileStorageBlobTests in 0.000 seconds.
   Ran 87 tests with 0 failures and 0 errors in 16.563 seconds.
Running .BlobWritableCacheTests tests:
   Tear down .BlobFileStorageBlobTests in 0.000 seconds.
   Set up .BlobWritableCacheTests in 0.000 seconds.
error: uncaptured python exception, closing channel 
<__main__.ZEOTestServer localhost:23335 at 0x11225a8> (:[Error 32] The process cannot access the file because 
it is being used by another process: 'Data.fs' [C:\P
ython26\lib\asyncore.py|read|74] 
[C:\Python26\lib\asyncore.py|handle_read_event|408] 
[c:\localsvn\zodb\src\ZEO\tests\zeoser
ver.py|handle_accept|97] 
[c:\localsvn\zodb\src\ZEO\tests\zeoserver.py|cleanup|34] 
[c:\localsvn\zodb\src\ZODB\FileStorage\Fi
leStorage.py|cleanup|1314])
warning: unhandled close event
error: uncaptured python exception, closing channel 
<__main__.ZEOTestServer localhost:24274 at 0x11225a8> (:[Error 32] The process cannot access the file because 
it is being used by another process: 'Data.fs' [C:\P
ython26\lib\asyncore.py|read|74] 
[C:\Python26\lib\asyncore.py|handle_read_event|408] 
[c:\localsvn\zodb\src\ZEO\tests\zeoser
ver.py|handle_accept|97] 
[c:\localsvn\zodb\src\ZEO\tests\zeoserver.py|cleanup|34] 
[c:\localsvn\zodb\src\ZODB\FileStorage\Fi
leStorage.py|cleanup|1314])
warning: unhandled close event
   Ran 106 tests with 0 failures and 0 errors in 9 minutes 12.500 seconds.
Running .ClientStorageNonSharedBlobsBlobTests tests:
   Tear down .BlobWritableCacheTests in 0.015 seconds.
   Set up .ClientStorageNonSharedBlobsBlobTests in 0.016 seconds.
   Ran 73 tests with 0 failures and 0 errors in 1 minutes 20.750 seconds.
Running .ClientStorageSharedBlobsBlobTests tests:
   Tear down .ClientStorageNonSharedBlobsBlobTests in 0.031 seconds.
   Set up .ClientStorageSharedBlobsBlobTests in 0.000 seconds.
   Ran 73 tests with 0 failures and 0 errors in 1 minutes 23.734 seconds.
Running .DemoStorageTests tests:
   Tear down .ClientStorageSharedBlobsBlobTests in 0.015 seconds.
   Set up .DemoStorageTests in 0.000 seconds.
   Ran 50 tests with 0 failures and 0 errors in 4 minutes 16.000 seconds.
Running .FileStorageTests tests:
   Tear down .DemoStorageTests in 0.000 seconds.
   Set up .FileStorageTests in 0.000 seconds.
error: uncaptured python exception, closing channel 
<__main__.ZEOTestServer localhost:25849 at 0x110bc88> (:[Error 32] The process cannot access the file because 
it is being used by another process: 'Data.fs' [C:\P
ython26\lib\asyncore.py|read|74] 
[C:\Python26\lib\asyncore.py|handle_read_event|408] 
[c:\localsvn\zodb\src\ZEO\tests\zeoser
ver.py|handle_accept|97] 
[c:\localsvn\zodb\src\ZEO\tests\zeoserver.py|cleanup|34] 
[c:\localsvn\zodb\src\ZODB\FileStorage\Fi
leStorage.py|cleanup|1314])
warning: unhandled close event
error: uncaptured python exception, closi

Re: [ZODB-Dev] ZODB 3.9.3 history call causing problems for storages that still accept version parameters

2009-11-02 Thread Chris Withers
Jim Fulton wrote:
> I'm fine with change the storage server to pass the history size
> argument as a keyword parameter.

Okay, but where is the Z309 equivalent of ZEOStorage308Adapter's history 
method?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Test time on 3.9 branch - windows?

2009-11-02 Thread Chris Withers
Jim Fulton wrote:
 Should I really expect the tests to take an hour to run on Windows?
>>> Yes.
>> Erk. Is there a subset I can look to run when looking to patch the
>> ZEOStorage308Adapter?
> 
> Feel my windows pain.

Do the tests take much less time to run on Linux?
If so, any idea as to why?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ValueError: corrupted record when calling GetObject

2009-11-02 Thread Chris Withers
Izak Burger wrote:
> A restart "fixes" the problem. Its running version 3.7.1 of ZEO/ZODB.

I have a feeling some problems in this area were fixed recently.
Can you try ZODB 3.8 or 3.9?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] zeoraid backends dropping out

2009-11-11 Thread Chris Withers
Hi All,

Since this is the first post to this list on the issue, the setup I have is:

zeoraid1 and zeoraid2 are zeoraid servers
zeo1 and zeo2 are normal storage servers serving two file storages: 
packed and unpacked.

zeoraid1 and zeo1 are on one box, zeoraid2 and zeo2 are on the other 
both. A variety of zeo clients connect to the zeoraid servers, and each 
client has the ip addresses of both zeoraid servers in its clientstorage 
config, so they round robin in the event of a zeoraid server failure.

I'm using zodb 3.9.3 and zeoraid 1.0b3 for the servers, the clients are 
all currently Zope 2.9.8.

So, diagrammatically, the configuration is roughly:

zeoraid1 -> zeo1 zeo2
clients ->
zeoraid2 -> zeo1 zeo2

Now, last week, the packed storage on zeo1 started showing as failed in 
the zeoraids. After that, a load of data was committed to the storage, 
which all ended up in zeo2. Recovering the 10GB or so of data took a 
couple of days.

I just went to check that the recovery was finished, only to find the 
unpacked storage on zeo2 is now showing as failed in zeoraid2 (which is 
the zeoraid currently in use by the clients) and when I try to do 
"bin/zeoraid -S packed details" against zeoraid1, I get:

(20659) CW: error in notifyConnected (('127.0.0.1', 6001))
Traceback (most recent call last):
   File "ZEO/zrpc/client.py", line 476, in notify_client
 self.client.notifyConnected(self.conn)
   File "ZEO/ClientStorage.py", line 621, in notifyConnected
 self.verify_cache(stub)
   File "ZEO/ClientStorage.py", line 1308, in verify_cache
 ltid = server.lastTransaction()
   File "ZEO/ServerStub.py", line 89, in lastTransaction
 return self.rpc.call('lastTransaction')
   File "ZEO/zrpc/connection.py", line 703, in call
 raise inst # error raised by server
RAIDClosedError: Storage has been closed.

This feels exactly what happened with the packed storage on zeo1 before. 
I've looked in the zeoraid and zeo event logs on both servers and didn't 
see anything logged as an error. The only weird (and worrying!) thing I 
did see was in the zeo2 event log:

--
2009-11-11T02:52:19 WARNING ZODB.FileStorage Packed.fs truncated, 
possibly due to damaged records at 14487840095

...but the packed storage shows as optimal in both zeoraid1 and 
zeoraid2, so what does this mean?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] help with pinning zeo plone zodb3 to 3.8.1

2009-11-12 Thread Chris Withers
rafael wrote:
>   I am experiencing the following problem: i need to pin zodb3 = 3.8.1
> so I can pack (cross reference issue). 

I use the following mini buildout to get 3.8.1 on its own. In my case it 
was to run the strip_versions script, but if you run it, you'll see you 
have a bin/runzeo and bin/zeopack that you can use to get what you want.

[buildout]
parts =
   fixer
versions = versions

[versions]
ZODB3 = 3.8.3

[fixer]
recipe = zc.recipe.egg
eggs = ZODB3

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] repozo uses md5 lib, which is deprecated in python 2.6

2009-11-18 Thread Chris Withers
Hi All,

ZODB's repozo script uses the md5 library, which is deprecated in python 
2.6, resulting in annoying emails from cron jobs.

A few questions:

- Where's the tracker for ZODB nowadays to report this issue?

- Anyone know what to replace md5 with? The warning suggests hashlib, 
which landed in 2.5. I assume it's okay to just use hashlib rather than 
worry about conditionally import md5 or hashlib, given that trunk ZODB 
and 3.9 branch are only targeted at Python 2.5 and above, right?

- Does repozo have any tests? If so, how do I run them.

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] repozo uses md5 lib, which is deprecated in python 2.6

2009-11-18 Thread Chris Withers
Christian Theune wrote:
>> - Anyone know what to replace md5 with? The warning suggests hashlib,
>> which landed in 2.5. I assume it's okay to just use hashlib rather than
>> worry about conditionally import md5 or hashlib, given that trunk ZODB
>> and 3.9 branch are only targeted at Python 2.5 and above, right?
> 
> Not sure about that. Most people I see that need to support 2.4 and 2.6 
> tend to provide a wrapper-function combined with a conditional import.

My understanding was that ZODB 3.9 (and therefore trunk too) only 
targeted 2.5+, perhaps Jim can confirm?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] repozo uses md5 lib, which is deprecated in python 2.6

2009-11-19 Thread Chris Withers
Jim Fulton wrote:
> On Wed, Nov 18, 2009 at 12:00 PM, Chris Withers  
> wrote:
>> - Anyone know what to replace md5 with? The warning suggests hashlib,
> 
> Yes
> 
>> which landed in 2.5. I assume it's okay to just use hashlib rather than
>> worry about conditionally import md5 or hashlib, given that trunk ZODB
>> and 3.9 branch are only targeted at Python 2.5 and above, right?
> 
> No, ZODB works with Python 2.4 too.
> 
> It's easy to handle this with a test on sys.version_info.

OK, this is all done on trunk and 3.9 branch, I ran the test script with 
Python 2.4 and 2.6, no errors.

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.3 history call causing problems for storages that still accept version parameters

2009-11-19 Thread Chris Withers
Chris Withers wrote:
> Jim Fulton wrote:
>> I'm fine with change the storage server to pass the history size
>> argument as a keyword parameter.
> 
> Okay, but where is the Z309 equivalent of ZEOStorage308Adapter's history 
> method?

Ug, the answer is much less pleasant :-(

So, a ZODB 3.9.3 ClientStorage calls the ServerStub's history method, 
this does an rpc call:

self.rpc.call('history', oid, length)

Which comes in on the server and gets despatched straight out in:

/ZEO/zrpc/connection.py", line 581, in handle_request

This, of course, means we can't pull the keyword parameters trick, since 
ZEO's rpc doesn't support keyword parameters from what I saw...

I'm not sure what to suggest here...

- release a new version of zeoraid targeted at zodb 3.9+ that doesn't 
include any version parameters anywhere. (I dunno how Christian would 
feel about the maintenance burden)

- drop support for zodb < 3.9 in zeoraid and remove all version 
parameters. That'd be fine by me, dunno how Christian would feel.

- use some kind of StorageInterface to indicate what parameters a 
storage expects. (this would require work on both zeoraid and zeoraid :-/)

- make zrpc.connection.Connection.handle_request do some fancier work 
around 581 to check what parameters the method is expecting. I worry 
that might impact performance though...

Help?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] repozo uses md5 lib, which is deprecated in python 2.6

2009-11-19 Thread Chris Withers
Jim Fulton wrote:
>>> It's easy to handle this with a test on sys.version_info.
>> OK, this is all done on trunk and 3.9 branch, I ran the test script with
>> Python 2.4 and 2.6, no errors.
> 
> Cool, but can we please get an automated test? I don't run the manual
> tests. I never will. :)

I'm afraid that's a bit beyond my capabilities...

Also feels like a bit of an ask for fixing a deprecation warning bug ;-)
This would probably be something to do next time the .fs format changes 
in such a way that repozo needs updating...

...unless, of course, there's another tool for backing up FileStorages 
now that I should be using instead?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.3 history call causing problems for storages that still accept version parameters

2009-11-19 Thread Chris Withers
Jim Fulton wrote:
> What's wrong with the original idea of having the server pass the size
> as a keyword parameter? The ZEO protocol is irrelevant.

Okay, from the top:

>> So, a ZODB 3.9.3 ClientStorage calls the ServerStub's history method, this
>> does an rpc call:
>>
>> self.rpc.call('history', oid, length)
>>
>> Which comes in on the server and gets despatched straight out in:
>>
>> /ZEO/zrpc/connection.py", line 581, in handle_request

...which ends up calling .history(oid,length) on zeoraid on RAIDStorage 
which is implemented as follows:

 def history(self, oid, version='', size=1):
 """Return a sequence of history information dictionaries."""
 assert version is ''
 return self._apply_single_storage('history', (oid, size))[0]

...because it's designed to work with ZODB 3.8 and 3.9, but doesn't 
support versions.

We can't use the trick of making the Z308-->Z309 adapter pass the size 
as a keyword parameter, because the call in this case is actually in 
ZODB 3.9's ClientStorage, so the adapter is never used, because all 
components involved are speaking Z309.

We also can't change the ClientStorage call to pass the size as a 
keyword parameter because ZEO's rpc doesn't appear to support keyword 
parameters.

That leaves the ideas I posted in my last reply...

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] repozo uses md5 lib, which is deprecated in python 2.6

2009-11-19 Thread Chris Withers
Jim Fulton wrote:
>> Also feels like a bit of an ask for fixing a deprecation warning bug ;-)
> 
> I don't follow that.  Isn't that what you did?

No, I ran an existing test script with two versions of python and 
verified that it worked as expected in both cases, with no deprecation 
warning being emitted.

>> This would probably be something to do next time the .fs format changes in
>> such a way that repozo needs updating...
> 
> That's not what happened this time is it?

No. md5 became deprecated, the FileStorage format hasn't changed between 
Python 2.4 and 2.6. As far as I'm aware, python versions and .fs formats 
are orthogonal ;-)

> AFAICT, repozo doesn't have automated tests, or this would have been
> caught. This means that repozo is susceptible to breakage at any time.
> I didn't add repozo to ZODB, but without tests, I'd be happy to take
> it out. ;)

Then how do you backup filestorages? What's the official, supported way 
of backing up FileStorages? I'd be more than happy to switch to using 
that instead...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.3 history call causing problems for storages that still accept version parameters

2009-11-19 Thread Chris Withers
Jim Fulton wrote:
> So why not add a history method to ZEOStorage that passes size as a
> keyword argument?

I don't know what "ZEOStorage" is...

zrpc.connection.Connection appears to despatch direct to the storage, 
please correct me if I'm wrong.

In this case, that's a RAIDStorage. It doesn't have any choice in what 
parameters its history method gets called with, that's controlled by the 
ClientStorage emitting the zrpc call...

So I'm afraid I don't really understand what you're trying to suggest...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] repozo, neither official nor supported, apparently...

2009-11-19 Thread Chris Withers
Jim Fulton wrote:
> There's nothing official or supported about a backup solution without
> automated tests.
> 
> So I guess there isn't one.

Right, so what does Zope Corp use?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.3 history call causing problems for storages that still accept version parameters

2009-11-19 Thread Chris Withers
Jim Fulton wrote:
> On Thu, Nov 19, 2009 at 6:07 PM, Chris Withers  wrote:
>> Jim Fulton wrote:
>>> So why not add a history method to ZEOStorage that passes size as a
>>> keyword argument?
>> I don't know what "ZEOStorage" is...
> 
> Then we shouldn't be having this conversation.

I'm working off this traceback:

Traceback (most recent call last):
   File "ZODB3-3.9.3-py2.6-linux-i686.egg/ZEO/zrpc/connection.py", line 
581, in handle_request
 ret = meth(*args)
   File "gocept.zeoraid-1.0b6-py2.6.egg/gocept/zeoraid/storage.py", line 
219, in history
 assert version is ''

There is no ZEOStorage instance involved in this as far as I can tell. 
What am I missing?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9.3 history call causing problems for storages that still accept version parameters

2009-11-20 Thread Chris Withers
Christian Theune wrote:
>> Traceback (most recent call last):
>> File "ZODB3-3.9.3-py2.6-linux-i686.egg/ZEO/zrpc/connection.py", line
>> 581, in handle_request
>>   ret = meth(*args)
>> File "gocept.zeoraid-1.0b6-py2.6.egg/gocept/zeoraid/storage.py", line
>> 219, in history
>>   assert version is ''
>>
>> There is no ZEOStorage instance involved in this as far as I can tell.
>> What am I missing?
> 
> Check the "setup_delegation" method: the history method is patched 
> through directly so your traceback doesn't see the ZEOStorage anymore.

OK, I've committed tests and patches to deal with this issue and the 
similar issue in ZEOStorage308Adapter on the 3.9 branch.

Should I merge these changes to the trunk too?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] 3.9.4 release?

2009-11-20 Thread Chris Withers
Hi Jim,

It would be great if the two recent fixes I committed could make it into 
a 3.9.4 release some time soon...

What can I do to help this happen?
Assuming I do anything necessary, when could you do this release?
(or give Christian permission to do it :-) )

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] repozo, neither official nor supported, apparently...

2009-11-20 Thread Chris Withers
Jim Fulton wrote:
> On Thu, Nov 19, 2009 at 7:01 PM, Chris Withers  wrote:
>> Jim Fulton wrote:
>>> There's nothing official or supported about a backup solution without
>>> automated tests.
>>>
>>> So I guess there isn't one.
>> Right, so what does Zope Corp use?
> 
> We use ZRS, of course.

Well, ZRS solves the HA challenge the same way as zeoraid, if I 
understand correctly, but what about offsite backups and the like?

The project I'm currently working on uses repozo to create backups that:

- get hoovered by the hosting provider's backup mechanisms and rotated 
offsite daily

- get sprayed by rsync over ssh to a DR site on another continent

How would ZRS solve these problems?

> I'd prefer that there be a file-storage backup solution out of the box.
> repozo is the logical choice.  It sounds like it needs some love though.
> This isn't something I'd likely get to soon.

I'm not sure how much love repozo needs. It works, and it won't need 
changing until FileStorage's format changes, which I don't see happening 
any time soon.

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] 3.9.4 release?

2009-11-20 Thread Chris Withers
Jim Fulton wrote:
> I need to review the changes before the release. I'll probably reject the
> repozo change without an automated test.

Are you serious? You'd rather have a broken tool than one that isn't 
broken on the basis that the existing tests aren't part of the test 
suite that gets run by default?!

> In the future, please don't check changes directly into trunk or a
> release branch.
> Check them into a development branch. I'll review and merge.

Sure, although these are both miniscule changes...

I've learned my lesson, I won't try and contribute to ZODB development 
in future...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] 3.9.4 release?

2009-11-20 Thread Chris Withers
Tim Peters wrote:
> That's what he said -- and you made him repeat it several times by now.

Yes, I find it hard to believe that someone would deliberately break 
something that someone else has taken the trouble to fix (and run the 
tests for!)...

>> I've learned my lesson, I won't try and contribute to ZODB development
>> in future...
> 
> I think that's the wrong lesson to take.  repozo had several fatal
> bugs when I inherited it, and part of the reason is that there were no
> tests of any kind.  As the checkin comment said when I added
> testrepozo.py:
> 
> Better Than Nothing -- which is what we had before.
> 
> There wasn't time then to finish the job (i.e., to automate the
> testing and dope out some way to make failure output more /helpful/
> than just "guts don't match").  What I checked in then was essential,
> though, to verify the slew of bugfixes that went in around the same
> time.
> 
> Alas, 5 1/2 years later, repozo testing apparently remains just barely
> "Better Than Nothing", but that's really not good enough for a
> supported approach.

I'm not arguing with the above, and I'm not asking for anything more 
supported than already exists. However, requiring someone to completely 
rewrite a test suite for software that they're never needed to 
understand on the basis that they corrected some imports to make them 
compatible with a newer version of python seems unreasonable.

> So the right lessons are:  (1) to do development on a development
> branch; 

Where is the development process that requires this documented?

> and, (2) to finish the job I started if repozo is to be
> treated as more than just another random piece of flotsam in the ZODB
> ocean.

I'm fine with the status quo...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] repozo, neither official nor supported, apparently...

2009-11-20 Thread Chris Withers
Jim Fulton wrote:
> On Fri, Nov 20, 2009 at 9:32 AM, Chris Withers  wrote:
> ...
>> I'm not sure how much love repozo needs. It works, and it won't need
>> changing until FileStorage's format changes, which I don't see happening any
>> time soon.
> 
> It just occurred to me that repozo doesn't support blobs.

Indeed, I've never been comfortable with blobs due to their spotty 
support in older tools and the need to make a filesystem HA for them to 
be used in a HA environment.

As a result, I don't use them, so I'm okay with repozo not suppporting 
them. Yes, I'd love it if repozo *did* support them, but I wouldn't have 
the faintest idea of how to do that, even if I did have time to work on 
it...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] repozo, neither official nor supported, apparently...

2009-11-20 Thread Chris Withers
Jeff Shell wrote:
> For what it's worth, I've dealt with broken / unloved /
> mildly-out-of-date ZODB scripts by making a new package that my
> little company uses internally.

I don't agree with this because it's fragmenting a tiny development 
group even further, no to mention creating private forks of tools that 
mean everyone loses in terms of eyeballing...

 > It allowed me to get some useful
> tools available again,

Such as? And what stopped you working on them back in the ZODB source tree?

> and was independent from any ZODB release
> cycle. 

I have no problems with the ZODB release cycle...

>  You could always explore this option, and even do it better than me
> by sharing with the community.

This just feels wrong to me. If I *was* changing a script's behaviour 
such that it needed new tests, I'd make sure those were automatically 
run. The changes to repozo didn't require any new tests, the bug was 
provoked just by running the existing tests with python 2.6.

>  So if 'repozo' needs love, even if it's simple love, I would
> recommend that someone make a 'z3c.zodbtools' or 'z3c.repozo' or
> 'z3c.fsbackup' project.

I couldn't agree less. This kind of fragmentation helps no-one. It's 
something I'd only consider as a last resort, and then the most likely 
action is just to roll my own sdist with a funky version number and 
stick it on the customer's index server.

> Hell, I'll look at the package I've made and
> see if I can do something along those lines as a starting/example
> point. 

I'd much prefer to see your fixes worked back into the 3.9 branch and 
trunk of ZODB...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] 3.9.4 release?

2009-11-20 Thread Chris Withers
Jim Fulton wrote:
>> +class RepozoTests(unittest.TestCase):
>> +
>> +def test_importability(self):
>> +from ZODB.scripts import repozo
>> +
> 
> I appreciate your dedication to quality.
> 
> That test passes under ZODB 3.9.3 with Python 2.6.

...but it will emit a deprecation warning, which I thought we considered 
to be a test failure?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Zope 2.12 and blobs

2009-11-20 Thread Chris Withers
Jim Fulton wrote:
> No, we should tell them they should use a mostly untested tool to do backups
> that doesn't work with blobs. That should inspire confidence.
> 
> Does Zope 2.12 use Blobs?

Not by default, no.

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] blobs

2009-11-20 Thread Chris Withers
Jeff Shell wrote:
> On Nov 20, 2009, at 11:52 AM, Jim Fulton wrote:
>>> If configured, sure.
>> I would not trust repozo + blob backups.
> 
> I don't trust Blobs. A year ago, I reverted all of the code I had for our CMS 
> that supported Blobs as it was impossible to copy their data in a basic Zope 
> 3 copy/past/move. I think that may have been fixed, but since there's 
> practically zero documentation on how to use blobs, use them wisely, use them 
> well, and use them in fairly plain Zope 3-ish applications, I lost confidence.

That fairly accurately sums up how I feel about blobs...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] errors logged at info in ZEO's connection

2009-11-20 Thread Chris Withers
Hi All (although I guess predominantly Jim),

ZEO/zprc/connection.py contains this rather odd piece of code:

 raise
 except Exception, msg:
 if not isinstance(msg, self.unlogged_exception_types):
 self.log("%s() raised exception: %s" % (name, msg),
  logging.INFO, exc_info=True)

Any objections to me changing this on the 3.9 branch and trunk to:

 raise
 except Exception, msg:
 if not isinstance(msg, self.unlogged_exception_types):
 self.logger.exception(
 "%s() raised exception: %s" % (name, msg),
 )

...and making sure there's a test of some sort that demonstrates this?

It seems a bit bizarre that exceptions are logged at INFO rather than 
ERROR...

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] errors logged at info in ZEO's connection

2009-11-20 Thread Chris Withers
Jim Fulton wrote:
>> It seems a bit bizarre that exceptions are logged at INFO rather than
>> ERROR...
> 
> Agreed.  A simple fix and test on a branch would be appreciated.

Done:

http://svn.zope.org/ZODB/branches/chrisw-error_logging/

It would be great if this, too, could make it in a 3.9.4 release...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] client cache bugs when a client switches from one zeo server to another

2009-11-24 Thread Chris Withers
Hi All,

So, I got the following errors when using a setup I'll describe shortly:

o Module Products.ZCatalog.CatalogBrains, line 86, in getObject
o Module OFS.Traversable, line 250, in restrictedTraverse
o Module OFS.Traversable, line 226, in unrestrictedTraverse
   __traceback_info__: ([], 'tvi-101108-rb3')
o Module OFS.ObjectManager, line 728, in __getitem__
KeyError: 'An object id'

This catalog is maintained in sync with the content as changes to one 
are always committed in the same transaction as changes to the other.

o Module Products.BTreeFolder2.BTreeFolder2, line 293, in 
getBatchObjectListing
IndexError: 124

This looks like an impossible error that occurs when a BTreeFolder's 
object count doesn't match the length of its objectIds().

These errors would be bizarre and disturbing were it not that they went 
away as soon as I restarted the Zope instance. That suggests client 
cache corruption to me as the client in question has no persistent cache.

So anyway, the setup is one Zope 2.9.8 client connected to two zeoraid 
1.0b7 zeo servers. The client has been switching between the two zeoraid 
servers while I've been testing zeoraid by bringing it up and down.

So, I'm left wondering:

- have there been any client cache bugs fixed with Zope 2.9.8 that would 
cause this kind of behaviour when a client has multiple zeo servers and 
switches between the two due to failure of one of them?

- (mainly at Christian) can you think of anything in zeoraid that might 
cause this behaviour?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Repozo tests -- not

2009-12-01 Thread Chris Withers
Jim Fulton wrote:
> Well, not really fair enough.  I just looked at the change that Chris
> made.  It has a bug
> that would be caught by your test if anyone tried to port repozo to
> Python 3. 

Which alternate reality are you talking about here? ;-)

> I'm going to back out these changes.  

Wow. Well, okay, whatever. I have an sdist cut from a revision where 
those changes do exist. It's annoying 'cos it means I won't be using 
3.9.4 if that ever lands, but I'm not sure I care.

 >  We are doing users a
 > serious disservice
 > giving  them such an important tool with minimal tests and no
 > automated tests.

Yes, because effectively deleting work that people have contributed is a 
*really* great way of encouraging people to contribute...

Nevermind...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Repozo tests -- not

2009-12-01 Thread Chris Withers
Martin Aspeli wrote:
>   - there were no tests for the existing code

There are tests, they're just manual and spew a lot of output even when 
passing, but they do (as best I could tell) exercise the backup and 
restore cycle quite heavily.

I ran these before and after to verify they didn't fail but did exhibit 
the behaviour I was trying to fix before I started and didn't fail *and* 
didn't exhibit the behaviour I was trying to fix after.

>   - Tres wrote a trivial test for the trivial fix

Indeed. His test exhibited the problem prior to the fix and showed it to 
be fixed after. (since the problem was a warning generated on import)

>   - You now found some different problem in the same code,

...but didn't say what it is. Jim seemed to hint it was a Python 3 
problem. I'd warrant there are much more serious problems to be worrying 
about for Python 3 first. If Python 3 compatibility is now a requirement 
for any patches submitted, then we're well and truly fucked.

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Repozo tests -- not

2009-12-02 Thread Chris Withers
Jim Fulton wrote:
> BTW, offline back ups if file-storage even with Blobs is
> straightforward without repozo.

I couldn't parse this, could you restate particularly wrt to what ou 
mean by offline? If there's a way other than repozo, then it would be 
great to know what it was...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Repozo tests -- not

2009-12-02 Thread Chris Withers
Jim Fulton wrote:
> If you take the database down,

Right, that was what I was hoping you didn't mean ;-)
That's useless then.

> Repozo gives you, for FileStorage:
> 
> - Online backups -- you can back up a database while it is running
> - Incremental backups
> 
> Of course, it isn't being actively supported.

Of course, it's having the snot hammered out of it by what I would guess 
is the largest group of ZODB users who run backups of any sort.

Myself, I use it to reconstitute a 20GB database on a backup server once 
an hour, followed by running one of the myriad of zodb checker tools on 
the backup.

It may not be actively supported but I'd wager we as a community would 
find out soon enough if it developed problems.

I'll reiterate that in the universe the majority of zodb users inhabit, 
dropping repozo is simply not an acceptable thing to do.

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Repozo tests -- not

2009-12-02 Thread Chris Withers
Jeff Shell wrote:
> I'm not sure whose expectations you're satisfying as the items in 
> ZODB.scripts are a wild and inconsistent mess. It's been trial and error just 
> to find ones that seem to work, outside of repozo.

Oh the irony of the one script that Jim is looking to remove, because 
someone dared to do some maintenance on it ;-)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Making ZODB / ZEO faster

2009-12-04 Thread Chris Withers
Jim Fulton wrote:
> On Fri, Dec 4, 2009 at 11:31 AM, Erik Dahl  wrote:
> ...
>> I haven't dove into the relstorage yet but have heard it will perform
>> better.
> 
> It doesn't.  See:
> 
>   https://mail.zope.org/pipermail/zodb-dev/2009-October/012758.html

Jim,

That's a little sweeping and some might see you as a little biased in 
this ;-)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk

___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB 3.9/3.8 incompatibility (was Re: Data.fs size grows non-stop)

2009-12-10 Thread Chris Withers
Marius Gedminas wrote:
>   * In ZODB 3.8, the 'version' argument of ClientStorage.history (as well
> as other kinds of storages, I suppose) is mandatory.  In ZODB 3.9
> it's gone.
> 
> Solved by peeking into the method signature with inspect.getargspec()
> and supplying a version only if it's needed.

I believe this may be fixed with 3.9.4 is released.
...but it sounds like your code isn't ending up using the Z303 adapter, 
which is why you're running into the problem.

How are you mixing versions? 3.8 on client and 3.9 on server or?
(sorry, I lost the previous thread and saw this as a new one when Jim 
changed the subject line...)

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] RFC: compatibility of ZEO clients and servers running different Python versions

2010-04-20 Thread Chris Withers
Jim Fulton wrote:
> Because of the complexity of the solution, I'm, sadly, inclined to
> leave things as they are:
> 
> - Can't use Python 2.4 clients with Python 2.5 or 2.6 servers
> - Can use Python 2.6 clients with 2.4 servers.
> - Can't use Python 2.5 or 2.6 servers with clients running ZODB 3.7 or
>   earlier.
> 
> I wonder what other people think.

Personally, I'm certainly okay with this.
It'd be great to have it advertised somewhere prominent though...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Problem with handling of data managers that join transactions after savepoints

2010-05-11 Thread Chris Withers
Jim Fulton wrote:
>>> I plan to implement A soon if there are no objections.
>>>
>>> Unless someone somehow convinced me to do D, I'll also add an
>>> assertion in the Transaction.join method to raise an error if a
>>> data manager joins more than once.
>> Option A sounds sensible. It also means I won't have to change
>> anything in the zope.sqlalchemy data manager.
> 
> Very cool. I was hoping non-ZODB-data-manager authors
> were paying attention. :)
> 
> If anyone knows of any other, I would appreciate someone forwarding
> this thread to them.

zope.sendmail and MaildropHost have data managers.
I've seen some file-based things that was a data manager and a few 
others in people's BFG stacks, maybe they can pipe up and/or let the 
others of those wsgi components know.

I'm also likely about to write one, but I'm dumb, so can't comment 
meaningfully on the options ;-)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk

___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] The database root: It's a trap!

2010-05-12 Thread Chris Withers
Jim Fulton wrote:
> A. Change ZODB so that new databases have BTrees as root objects.
> 
>This has the advantage that BTrees are scalable.  It has a number
>of down sides:
> 
>- BTrees should only be used when keys are known to have a stable
>  ordering.  If we had a scalable hash data structure, that would
>  be better.
> 
>- This encourages mistake 2 above.
> 
> B. Change ZODB so that the root object is a variant of persistent
>mapping that either refuses to store more than a small number of
>objects, or at least issues a warning when more than a small
>number of objects is stored.

C. I'd really like to be able to configure what the root object is as 
database creation time. That way it can be application specific.

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] The database root: It's a trap!

2010-05-12 Thread Chris Withers
Jim Fulton wrote:
>> C. I'd really like to be able to configure what the root object is as
>> database creation time. That way it can be application specific.
> 
> That sounds reasonable, but doesn't address the default behavior.

Default would be an OOBTree for me...

Scales, no thinking or scary warnings required :-)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Restoring from repozo and reusing an index file?

2010-06-11 Thread Chris Withers
Paul Winkler wrote:
> 3 should be pretty fast as its an incremental backup.
> 4 may take a little while but iirc it's not too bad for this db -  
> maybe 10 minutes.
> Most of the downtime is caused by rebuilding the index which takes way  
> longer (30 min?)
> 
> So I had two questions:
> 
> 1) would it be safe to copy the index file from the old host and just  
> use that with the filestorage generated by repozo?

Almost certainly not.

> 2) should I maybe ditch repozo and just rsync everything?  That'd  
> replace step 3 with a second call to rsync, and eliminate steps 4 and  
> 6.  But I'm not sure how fast it is at updating a big binary file.  I  
> think I'll do an experiment today and report back on this option.

I suppose you could look at zeoraid.

Have you tried just starting with an empty index file?

Chris

___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZEORaid was Re: Restoring from repozo and reusing an index file?

2010-06-12 Thread Chris Withers
Christian Theune wrote:
> On 06/11/2010 05:50 PM, Alan Runyan wrote:
 I suppose you could look at zeoraid.
>>> Hadn't thought of that, will look at it, thanks!
>> Anyone using ZEORaid in production?
> 
> I hope not. There's still open issues with split brain situations 

IIUC, that can be mitigated by only having one zeoraid server live at a 
time?

> and a 
> mysterious bug WRT oid generation 

This one's new to me, where can I find out more?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZEORaid was Re: Restoring from repozo and reusing an index file?

2010-06-12 Thread Chris Withers
Christian Theune wrote:
> On 06/12/2010 09:47 AM, Chris Withers wrote:
>> Christian Theune wrote:
>>> On 06/11/2010 05:50 PM, Alan Runyan wrote:
>>>>>> I suppose you could look at zeoraid.
>>>>> Hadn't thought of that, will look at it, thanks!
>>>> Anyone using ZEORaid in production?
>>> I hope not. There's still open issues with split brain situations
>> IIUC, that can be mitigated by only having one zeoraid server live at a
>> time?
> 
> Yes. Our goal is to mitigate even splits by making the system read-only 
> and manually allowing to specify which parts are active in that case.
> 
> An automatic voting procedure would then require more than 2 
> participants, but with even splits you at least won't fail horribly.

*nods sagely while looking a little blank* ;-)

>>> and a
>>> mysterious bug WRT oid generation
>> This one's new to me, where can I find out more?
> 
> The one you reported quite a while ago that ended in mixed-up OID results.

Have you got a url to the tracker issue?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZEORaid was Re: Restoring from repozo and reusing an index file?

2010-06-18 Thread Chris Withers
Christian Theune wrote:
> and a
> mysterious bug WRT oid generation
 This one's new to me, where can I find out more?
>>>
>>> The one you reported quite a while ago that ended in mixed-up OID
>>> results.
>>
>> Have you got a url to the tracker issue?
> 
> I think it was this one:
> https://bugs.edge.launchpad.net/gocept.zeoraid/+bug/485976

Okay, but again, this one seems to be mitigated by only running one 
zeoraid server at a time, right?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] tracking back to what code caused a conflicting object change

2010-07-28 Thread Chris Withers

Hi All,

Forwarding here as there may be more people with the relevant knowledge 
around.

So, the key thing I'm trying to find is what code is changing the 
conflicting objects? (primarily since I'm not aware of any doing so, so 
it must be inadvertantly getting executed)

Any ideas gratefully received!

Chris

PS: apologies for the inline forwarding, zope.org's MTAs are still 
incorrectly configured to reject messages forwarded as attachments...

 Original Message 
Subject: [Zope] ConflictError from 
Products.Transience.TransientObject.TransientObject
Date: Tue, 27 Jul 2010 11:45:26 +0100
From: Chris Withers 
To: zope list user 

Hi All,

I have an old Zope 2.9.8 instance which has recently started throwing
the following unresolved ConflictErrors:

Traceback (innermost last):
   Module Zope2.App.startup, line 173, in zpublisher_exception_hook
   Module ZPublisher.Publish, line 121, in publish
   Module Zope2.App.startup, line 240, in commit
   Module transaction._manager, line 96, in commit
   Module transaction._transaction, line 380, in commit
   Module transaction._transaction, line 378, in commit
   Module transaction._transaction, line 433, in _commitResources
   Module ZODB.Connection, line 479, in commit
   Module ZODB.Connection, line 1050, in _commit_savepoint
   Module tempstorage.TemporaryStorage, line 202, in store
ConflictError: database conflict error (oid 0x046a, class
Products.Transience.TransientObject.TransientObject, serial this txn
started with 0x0387c9f23edea155 2010-07-27 10:26:14.735074, serial
currently committed 0x0387c9f28a1ff766 2010-07-27 10:26:32.373016)

To my knowledge, the request that throws this isn't touching the session
or temp_folder, but I guess something is.

How can I find out what code is actually touch this and so causing this
conflict?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
  - http://www.simplistix.co.uk
___
Zope maillist  -  z...@zope.org
https://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists -
  https://mail.zope.org/mailman/listinfo/zope-announce
  https://mail.zope.org/mailman/listinfo/zope-dev ) Original 
Message 
Subject: [Zope] (also) ConflictError from 
Products.Transience.Transience.Increaser
Date: Tue, 27 Jul 2010 11:47:09 +0100
From: Chris Withers 
To: zope list user 
References: <4c4eb8c6.8050...@simplistix.co.uk>

Chris Withers wrote:
> To my knowledge, the request that throws this isn't touching the session 
> or temp_folder, but I guess something is.
> 
> How can I find out what code is actually touch this and so causing this 
> conflict?

In similar circumstances, I also see:

Traceback (innermost last):
Module Zope2.App.startup, line 173, in zpublisher_exception_hook
Module ZPublisher.Publish, line 121, in publish
Module Zope2.App.startup, line 240, in commit
Module transaction._manager, line 96, in commit
Module transaction._transaction, line 380, in commit
Module transaction._transaction, line 378, in commit
Module transaction._transaction, line 433, in _commitResources
Module ZODB.Connection, line 479, in commit
Module ZODB.Connection, line 1050, in _commit_savepoint
Module tempstorage.TemporaryStorage, line 202, in store
ConflictError: database conflict error (oid 0x29, class
Products.Transience.Transience.Increaser, serial this txn started with
0x0387c9ffb271bc44 2010-07-27 10:39:41.822878, serial currently
committed 0x0387ca0108963711 2010-07-27 10:41:02.012526)

How can I find out what's going on to cause this conflict?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
  - http://www.simplistix.co.uk
___
Zope maillist  -  z...@zope.org
https://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists -
  https://mail.zope.org/mailman/listinfo/zope-announce
  https://mail.zope.org/mailman/listinfo/zope-dev )

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] [Zope-dev] Undo tab in Zope 2.12

2010-08-26 Thread Chris Withers
Chris Withers wrote:
> ...often appears to be empty when it shouldn't be.
> 
> Has anyone else observed this?

The answer turned out to be ZODB 2.10b4 being used on the storage server 
side.

I found a clue in the ChangeLog but it sure would be nice if there was 
some logging of some sort to warn what was going on...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] attempting to undo an un-undoable transaction gives "NotImplementedError" with ZODB 3.9.5

2010-08-26 Thread Chris Withers
Here's an example:

2010-08-26 22:49:01 ERROR txn.-1338986496 Failed to abort resource 
manager:  at 47516176>
Traceback (most recent call last):
   File "transaction-1.1.0-py2.6.egg/transaction/_transaction.py", line 
475, in abort
 rm.abort(self)
   File "transaction-1.1.0-py2.6.egg/transaction/_transaction.py", line 
548, in abort
 self.manager.abort(o, txn)
   File "ZODB3-3.9.5-py2.6-macosx-10.3-fat.egg/ZODB/DB.py", line 985, in 
abort
 raise NotImplementedError
NotImplementedError

This used to give a meaningful error message.

Anyone know why it no longer does?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] attempting to undo an un-undoable transaction gives "NotImplementedError" with ZODB 3.9.5

2010-09-09 Thread Chris Withers
On 09/09/2010 21:47, Jim Fulton wrote:
>> 2010-08-26 22:49:01 ERROR txn.-1338986496 Failed to abort resource
>> manager:> object at 0x2d509f0>  at 47516176>
>> Traceback (most recent call last):
>>File "transaction-1.1.0-py2.6.egg/transaction/_transaction.py", line
>> 475, in abort
>>  rm.abort(self)
>>File "transaction-1.1.0-py2.6.egg/transaction/_transaction.py", line
>> 548, in abort
>>  self.manager.abort(o, txn)
>>File "ZODB3-3.9.5-py2.6-macosx-10.3-fat.egg/ZODB/DB.py", line 985, in
>> abort
>>  raise NotImplementedError
>> NotImplementedError
>>
>> This used to give a meaningful error message.
>
> In 3.7 and earlier.
>
>>
>> Anyone know why it no longer does?
>
> The resource manager abort method used to be a pass. In 3.9 in raises
> an exception, which hides the undo exception.

That's bad, right?

> An app should capture
> the undo exception information before calling abort.

"the app" here is Zope 2's publisher process, right?

> My guess is that this works much better in ZODB 3.10.

Any particular reason?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Stripping version data from databases

2010-09-10 Thread Chris Withers
On 09/09/2010 15:10, Jim Fulton wrote:
> I suspect we'll see more cases where people have databases that have
> versioned records
> that they don't know how to get rid of.  (We had a case like this
> internally, but we stopped
> caring about the database in question before we had to deal with it. :)
>
> I'd be happy to throw together a script that stripped version records using
> the storage iteration and restore protocols.  I would want someone else to
> review and (possibly :) test it.  I'm can't commit to much effort on it 
> though.
> I'm not willing to include this in ZODB, but would probably put it in my
> public script "zoo", http://svn.zope.org/Sandbox/J1m/scripts/.

Didn't you do this already?

https://mail.zope.org/pipermail/zodb-dev/2009-August/012676.html

https://mail.zope.org/pipermail/zodb-dev/2009-August/012684.html

...and the buildout I use to run it:

https://mail.zope.org/pipermail/zodb-dev/2009-August/012690.html

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] "Versions aren't supported" message in Plone 4 upgrade

2010-09-20 Thread Chris Withers
On 09/09/2010 23:31, David Glick wrote:
> I meant that we exported the database under Plone 3.x and reimported to
> a new database in the same Zope instance (still Plone 3.x with the same
> versions of all software).  *Then* proceeded with a normal upgrade to
> 4.0 using the normal method and the new Data.fs.

...or you could just use the micro-buildout I linked to previously which 
lets you just strip out the versions.

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZODB history problem with Zope 2.12.7

2010-09-28 Thread Chris Withers
On 28/09/2010 12:55, Tres Seaver wrote:
> On 09/28/2010 03:36 AM, Chris Withers wrote:
>> On 28/09/2010 00:12, Marius Gedminas wrote:
>>> --- ./OFS/History.py.orig   2010-09-28 02:11:56.535745440 +0300
>>> +++ ./OFS/History.py2010-09-28 02:12:00.043764683 +0300
>>> @@ -151,6 +151,9 @@
>>>base = aq_base(self)
>>>base._p_activate()   # make sure we're not a ghost
>>>base.__setstate__(state) # change the state
>>> +for attr in dir(base):
>>> +if attr.startswith('_v_'):
>>> +delattr(base, attr)
>>>base._p_changed = True   # marke object as dirty
>>>self.manage_afterHistoryCopy()
>>
>> Thanks, I guess I'll monkey patch for now, here's the bug:
>>
>> https://bugs.launchpad.net/zope2/+bug/649605
>>
>> However, I'm curious, so the above will fix the object in the current
>> thread, but what about objects in other threads?
>>
>> (or do _v_ attributes get killed off at the start of each transaction?)
>
> Only when objects are ghostified (due to an invalidation from another
> thread or process) or evicted from the cache.  I'm not quite sure how
> the case you are triggering occurs, but if that code saves the new-old
> version of the template to the ZODB, then any instances in other
> threads' connection caches should be invalidated.

Feel free to repeat the steps I originally posted and are in the bug 
description ;-)

Looks like the History.py code isn't doing something it should, but I 
don't know when or what changed to make this so. I'll CC zodb-dev in 
case Jim knows of any changes in ZODB (I'm using 3.9.6) that might be 
relevant...

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] semantics of _v_ attributes?

2010-10-06 Thread Chris Withers
Hi All,

I'm trying to fix this bug:
https://bugs.launchpad.net/zope2/+bug/649605

...and I'm struggling to find documentation on the semantics of _v_ 
attributes.

In particular, surely this code:

 base._p_activate()   # make sure we're not a ghost
 base.__setstate__(state) # change the state
 base._p_changed = True   # marke object as dirty

...should be enough to indicate that all _v_ attributes should be dropped?

If it isn't, what is the correct way to indicate to Persistent/ZODB that 
all _v_ attribute should be dropped not only for the current object but 
for all occurrences of that object across all connections to the current 
ZODB?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] semantics of _v_ attributes?

2010-10-06 Thread Chris Withers
On 06/10/2010 15:19, Jim Fulton wrote:
> _v_ attributes should be dropped whenever an object's state is
> cleared.

It would be great if there was some clear documentation covering all 
this in the ZODB package...

> So, you want to update an object using old state.
>
> I would use:
>
>base._p_invalidate() # remove state, including volatiles, no matter what
>base._p_activate()   # make sure we're not a ghost
>base.__setstate__(state) # change the state
>base._p_changed = True   # marke object as dirty
>
> This isn't foolproof, depending on how an object uses _v_.  For
> example if __setstate__ sets _v_s if they aren't already set, then the
> above code would likely fail, as the _v_s would reflect the old state,
> not the new.

Okay, it works for the Zope 2.12 problem at hand:
https://bugs.launchpad.net/zope2/+bug/649605

> If this use case is important, it would be better for ZODB tp provide
> an API to handle this directly, so you didn't have to hack together
> existing APIs.

Well, I have customers who think it's important, but it depends on 
whether you still think Zope 2 with TTW editing is important ;-)

> I assume this code will ultimately be followed by a commit.

Correct.

> Well, for your use case, you're going to be committing a change to the
> object.  That will cause instances of the object in all other
> connections to be invalidated, dropping their volatile attributes.

Cool :-) I'll take this on trust, I don't want to contemplate trying to 
write a test that proves it ;-)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] zodb 3.9.6 performance tuning?

2010-10-12 Thread Chris Withers
Hi,

After recently moving a medium-sized customer project from Zope 2.9.8 to 
Zope 2.12.7 sitting on ZODB 3.9.6 by way of zeoraid b7, I'm now seeing 
some fairly weird and bad behaviour that we didn't have before.

So, everything was fine after the migration. However, today I turned on 
a batch job which pumps content into the storage.

This appears to be *much* slower than on Zope 2.9.8 (with its included 
ZODB release) and also appears to cause the web clients to be slow 
enough when its running that they start dropping out of the load 
balancer pool.

How can I debug what's going on? Is there any way to get diagnostics out 
of a 3.9.6 zeo server to find out what it's up to?

cheers,

Chris

PS: If it helps, it looks like the zeoraid process is using an order of 
magnitude more cpu than the zeo process, according to top, but even 
that's only 30% of the CPU load...

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] persistent client caches okay to use again in ZODB 3.9.6?

2010-10-12 Thread Chris Withers
Hi All,

I'm wondering if some of my issues might be alleviated by persistent 
client caches.

Now, I have the impression that these were unreliable and buggy and had 
been so for some time.

Is this still the case? If not, where are the docs on how to configure 
them nowadays?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] persistent client caches okay to use again in ZODB 3.9.6?

2010-10-12 Thread Chris Withers
On 12/10/2010 17:11, Jim Fulton wrote:
>> Now, I have the impression that these were unreliable and buggy and had
>> been so for some time.
>
> They became much better in later 3.8 releases and still much better lately.
>
> We've been using them in production for quite a while.

Any docs on recommended settings around?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] blocked transactions?

2010-10-13 Thread Chris Withers
Hi All,

What do the following error message mean:

--
2010-10-12T17:05:58 INFO ZEO.StorageServer (24471/192.168.100.100:54407) 
Transaction blocked waiting for storage. Clients waiting: 3.
--

2010-10-12T17:07:16 INFO ZEO.StorageServer (24471/192.168.100.105:50112) 
Blocked transaction restarted.  Clients waiting: 2

...and would ZODB 3.10 help fix them?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] RelStorage and ZODB 3.10?

2010-10-13 Thread Chris Withers
Hi Shane,

Does RelStorage 1.4 work with ZODB 3.10?
(In particular, the Undo changes and the tightened storage API..)

I see the mention of 3.10.0b7, but just wanted to check that means 
you're okay with 3.10 final ;-)

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] blocked transactions?

2010-10-13 Thread Chris Withers
On 13/10/2010 14:06, Jim Fulton wrote:
> On Wed, Oct 13, 2010 at 4:02 AM, Chris Withers  wrote:
>> Hi All,
>>
>> What do the following error message mean:
>>
>> --
>> 2010-10-12T17:05:58 INFO ZEO.StorageServer (24471/192.168.100.100:54407)
>> Transaction blocked waiting for storage. Clients waiting: 3.
>> --
>>
>> 2010-10-12T17:07:16 INFO ZEO.StorageServer (24471/192.168.100.105:50112)
>> Blocked transaction restarted.  Clients waiting: 2
>>
>> ...and would ZODB 3.10 help fix them?
>
> These aren't error messages. You can tell because they say "INFO".

If you say so ;-)

Their occurences coincided with an app server cluster of 4 clients 
locking up completely...

I would dearly love to know why that happened. Any way to interrogate a 
running zeo server to find out what it thinks it's up to?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] blocked transactions?

2010-10-13 Thread Chris Withers
On 13/10/2010 15:23, Jim Fulton wrote:
>> Their occurences coincided with an app server cluster of 4 clients locking
>> up completely...
>
> Did the numbers get much bigger than 3?

Nope.

>> I would dearly love to know why that happened.
>
> Typically, it's due to a client that votes and fails to call finish.

Wouldn't I see storage errors in that case?
The only errors I saw were these and quite a few:

   File 
"/var/buildout-eggs/ZODB3-3.9.6-py2.6-linux-i686.egg/ZEO/ServerStub.py", 
line 377, in stub
 raise ValueError("Timeout waiting for protocol handshake")
ValueError: Timeout waiting for protocol handshake

>> Any way to interrogate a
>> running zeo server to find out what it thinks it's up to?
>
> You can connect to the monitor port in 3.9 and earlier,

When that's configured, what information does it provide and how do I 
get it? (if there are docs, lemme know and I'll go read them instead)

> You almost certainly want to set transaction-timeout in
> your server configuration.  This will cause transactions that take too
> long to be terminated.  We use a transaction timeout of 300 seconds.

5 mins is pretty high, though, right? Surely if all clients end up 
hanging for 230 seconds, they'll all be dropped by a load balancer?

Related: how can I find out how long transactions are taking?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] blocked transactions?

2010-10-13 Thread Chris Withers
On 13/10/2010 15:40, Jim Fulton wrote:
>> Wouldn't I see storage errors in that case?
>
> No. Unless you set a transaction timeout, the storage will
> wait for the finish indefinitely.

...I meant on the client side. There were no errors other than the 
protocol timeout ones below:

>>   File
>> "/var/buildout-eggs/ZODB3-3.9.6-py2.6-linux-i686.egg/ZEO/ServerStub.py",
>> line 377, in stub
>> raise ValueError("Timeout waiting for protocol handshake")
>> ValueError: Timeout waiting for protocol handshake
>
> These were on the client, not the server.
>
> That's odd.
>
> This suggests that there's something else going on with your storage
> server and that the transactions waiting messages are a red herring.

Indeed. I'd dearly love to know what, sadly, the storage server is 
zeoraid, and I can't expect you to help with that ;-)
(zeoraid then talks to back end zeo servers, and the only 
out-of-the-ordinary stuff logged was on the zeoraid servers, and it was 
those blocked messages)

>> When that's configured, what information does it provide and how do I get
>> it? (if there are docs, lemme know and I'll go read them instead)
>
> Go read the code or try it.

Will do.

>> Related: how can I find out how long transactions are taking?
>
> Note that we're really talking about how long commits are taking,
> specifically the time between vote and finish. You can determine that
> from the waiting messages.

So there's no logging I can turn on to see how long commits are taking, 
unless I can get more of those 'transaction blocked' messages to show up?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] blocked transactions?

2010-10-13 Thread Chris Withers
On 13/10/2010 15:59, Jim Fulton wrote:
>> So there's no logging I can turn on to see how long commits are taking,
>> unless I can get more of those 'transaction blocked' messages to show up?
>
> You can set the log level to debug. This will log the entire ZEO
> protocol. Analysis will take require a bit of work.  (Note that ZEO
> 3.10 no longer does this level of logging even at the debug level, as
> it slowed the server down.)

yeah, slowing the server down is what I'm worried about so I'm not gonna 
do this unless someone tells me I really need to ;-)

> You could temporarily hack the ZEO storage server code to collect
> statisics. That would probably be easier than debug logging.

It worries me a little that this kind of thing, which feels important 
for ZODB tuning, isn't available without hackery. Are there any plans to 
get some storage server stats accumulation?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] zodb monitor port / tailing a .fs

2010-10-13 Thread Chris Withers
On 13/10/2010 15:23, Jim Fulton wrote:
> You can connect to the monitor port in 3.9 and earlier,
> if the monitor port is configured.  In 3.10, the monitor server is
> replaced by a ZEO client method, server_status. This tells you
> much the same information that's in the log messages.

Okay, monitor port up and running now.
I see commits listed when I'm not expecting any.

Do we have any kind of "tail -f /some/filestorage.fs" yet? (or have we 
always had such a tool) to see what the last few transactions in the 
underlying file storage look like in a human-readable form?

cheers,

Chrus

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] persistent client caches okay to use again in ZODB 3.9.6?

2010-10-13 Thread Chris Withers
On 12/10/2010 17:56, Jim Fulton wrote:
> Currently the only configuration "docs" are in the .xml Alan provided a link 
> to.
>
> The best size will depend on the app.

Is there a downside to "too big", provided there's plenty of disk space 
free on the app servers?

> There are some docs in
> http://svn.zope.org/ZODB/trunk/doc/, although I don't know if they're 
> accurate.

...yeah, those look a lot like the original docs that Guido(?) wrote.

> In ZODB 3.10, the cache tracing analysis tools actually work and produce
> meaningful numbers if you start tracing with an empty cache.

Okay, does that mean the stuff that's documented should be ignored for 
ZODB 3.9?

I went for the following in the end:

...
   cache-size 200Mb
   client app
   wait   on
 
 mount-point /
 cache-size   5
 cache-size-bytes 500Mb

Any obvious issues with that?

One problem I did hit, though, was if I restarted an app server, I got:

   File 
"/var/buildout-eggs/ZODB3-3.9.6-py2.6-linux-i686.egg/ZODB/config.py", 
line 210, in open
 **options)
   File 
"/var/buildout-eggs/ZODB3-3.9.6-py2.6-linux-i686.egg/ZEO/ClientStorage.py", 
line 395, in __init__
 self._cache = self.ClientCacheClass(cache_path, size=cache_size)
   File 
"/var/buildout-eggs/ZODB3-3.9.6-py2.6-linux-i686.egg/ZEO/cache.py", line 
194, in __init__
 self._lock_file = zc.lockfile.LockFile(path + '.lock')
   File 
"/var/buildout-eggs/zc.lockfile-1.0.0-py2.6.egg/zc/lockfile/__init__.py", line 
76, in __init__
 _lock_file(fp)
   File 
"/var/buildout-eggs/zc.lockfile-1.0.0-py2.6.egg/zc/lockfile/__init__.py", line 
59, in _lock_file
 raise LockError("Couldn't lock %r" % file.name)
LockError: Couldn't lock 'zec.lock'

...and yet the app server came up fine. What does this error message imply?

The above did not, however, occur if I stopped and then started the app 
server...

Race condition?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] zodb monitor port / tailing a .fs

2010-10-13 Thread Chris Withers
On 14/10/2010 01:28, Darryl Dixon - Winterhouse Consulting wrote:
>> Do we have any kind of "tail -f /some/filestorage.fs" yet? (or have we
>> always had such a tool) to see what the last few transactions in the
>> underlying file storage look like in a human-readable form?
>
> fsdump.py gets you pretty close (ZODB/scripts/fsdump.py). Between that and
> the Undo log for the DB inside Zope, you might be able to figure it out...

..well, the Undo log shows no entries ;-)

...and fsdump appears to have no way of saying "show me the last few 
transactions in this 35GB file" :-(

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] zodb monitor port / tailing a .fs

2010-10-13 Thread Chris Withers
On 14/10/2010 01:30, Laurence Rowe wrote:
> There's also fstail:
>
> $ bin/zopepy -m ZODB.scripts.fstail var/filestorage/Data.fs

That looks more like it..

Any ideas what options there are to it?
 From reading the source, I see a -n, but no idea what it should do.

I'm looking for a "more detail" knob, and also a 'tail -f' equivalent...

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] transaction commits don't have to write data?

2010-10-13 Thread Chris Withers
On 14/10/2010 01:21, Chris Withers wrote:
> On 13/10/2010 15:23, Jim Fulton wrote:
>> You can connect to the monitor port in 3.9 and earlier,
>> if the monitor port is configured.  In 3.10, the monitor server is
>> replaced by a ZEO client method, server_status. This tells you
>> much the same information that's in the log messages.
>
> Okay, monitor port up and running now.
> I see commits listed when I'm not expecting any.

...but using fstail, I see no new transactions in the last 6 hrs.

Is it normal/ok/etc to commits in the monitor server output but without 
and actual transaction showing up in fstail?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] zodb monitor port / tailing a .fs

2010-10-14 Thread Chris Withers
On 14/10/2010 02:40, Darryl Dixon - Winterhouse Consulting wrote:
>> ...and fsdump appears to have no way of saying "show me the last few
>> transactions in this 35GB file" :-(
>
> Yeah it's pretty verbose. I usually just pump the output to a text file

...yeah, but a 35GB zodb is going to result in, what, a 120? 200? GB 
text file. I don't think I actually have that much disk space lying 
around on these servers, let alone how long fsdump would take to produce 
it ;-)

I wonder how hard it'd be to add some kind of start-at-the-end feature 
to fstail?

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] RelStorage Questions

2010-10-14 Thread Chris Withers
Hi Shane,

For all of these, if there are docs, please point me in their direction. 
I've been working from:

http://pypi.python.org/pypi/RelStorage

In my case, I'm looking at ZODB 3.9.6, Zope 2.12.7 onto MySQL 5.1 
provided as a two machine cluster maintained by a hosting company. This 
sound good? Any different versions I should look at?

 From the features section: "multiple ZODB instances can share the same 
database"; does this mean I can put more than one storage in the same 
mysql database? Is this a good idea or should I stick to one storage per 
mysql database?

 From the RelStorage options section:

- I'll have one storage with keep-history true and one with it false. 
Both will require packing and garbage collection, right? What's the 
recommended method and frequency of doing that? I'm guessing the 
zodbpack script but wanted to doubt check that does both pack and 
garbage collection.

- How do you pick the right pack-duty-cycle?

- poll-interval

- when is it recommended to use memcached caching? How do you decide to 
pick what values to use for cache-prefix, cache-local-mb and 
cache-delta-size-limit?

- Under what situations would you recommend changing the 
commit-lock-timeout from its default of 30 seconds?

 From the MySQL Adapter options section:

- When is/isn't gzip compression a good idea? What is actually being 
compressed by this options?

- Should I worry about init_command, read_default_file, 
read_default_group and client_flag or just ignore them?

- What does load_infile actually do? Should it be used or avoided?

Sorry for all the questions, hope these aren't too much of a pain to answer!

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] One more RelStorage question

2010-10-14 Thread Chris Withers
Hi Shane,

I forgot to ask...

Is RelStorage suitable for a temporary storage?

If so, what would be the recommended options for the following storage:

   
 # Temporary storage database (for sessions)
 
   name temporary storage for sessioning
 
 mount-point /temp_folder
 container-class Products.TemporaryFolder.TemporaryContainer
   

...and could one database containing such a temporary storage be used by 
more than one client, and would that be a good idea?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] persistent client caches okay to use again in ZODB 3.9.6?

2010-10-14 Thread Chris Withers
On 14/10/2010 17:09, Jim Fulton wrote:
>> What does this error message imply?
>
> That two processes were trying to access the cache.
>
>> The above did not, however, occur if I stopped and then started the app
>> server...
>>
>> Race condition?
>
> Hopefully, you screwed up somehow and started the process while it was
> already running. :)

I don't think so. This is using zc.recipe.rhrc to drive zope2instance

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
 - http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


  1   2   3   4   5   >