[ZODB-Dev] Zeo server error message

2011-01-31 Thread Sylvain Viollon
Hello,

  I have a customer who run a ZEO setup with ZODB 3.8.4. They report
  this error:

2011-01-31T12:02:24 Unexpected error
Traceback (most recent call last):
  File
"/opt/zope/newbuildout/parts/zope2/lib/python/ZODB/ConflictResolution.py",
line 207, in tryToResolveConflict
resolved = resolve(old, committed, newstate)
  File
"/opt/zope/newbuildout/parts/zope2/lib/python/ZODB/ConflictResolution.py",
line 141, in __cmp__
raise ValueError(
ValueError: can't reliably compare against different
PersistentReferences

  Does anyone know to what this error relate ?

  They have been running their ZEO setup for quite a while, and never
  experienced any issue. That doesn't seems to 'break' the database either.

  I am not really sure what to say about this error.

  Regards,

  Sylvain,

-- 
Sylvain Viollon -- Infrae
t +31 10 243 7051 -- http://infrae.com
Hoevestraat 10 3033GC Rotterdam -- The Netherlands
___
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] RelStorage, history-free, pack causes POSKeyError with BTreeFolder2

2011-01-31 Thread Chris Withers
On 28/01/2011 21:58, Jürgen Herrmann wrote:
>   Afaics you use zodbpack's default of "days=0". This is known to produce
>   POSKeyErrors if the database is written to while packing.

Where is this documented?
Does this apply to history-keeping or history-free storages?

>   Try with
>   something
>   like days=0.1 .

I'll not pack a history-free storage until Shane gives it the okay...

However, I find it a bit odd that RelStorage ships with a default that 
could cause these kind of problems and no warning in the readme that 
this is the 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] RelStorage, history-free, pack causes POSKeyError with BTreeFolder2

2011-01-31 Thread Shane Hathaway
On 01/31/2011 06:02 PM, Chris Withers wrote:
> On 28/01/2011 21:58, Jürgen Herrmann wrote:
>>Afaics you use zodbpack's default of "days=0". This is known to produce
>>POSKeyErrors if the database is written to while packing.
>
> Where is this documented?

It is not known to me. :-)

> I'll not pack a history-free storage until Shane gives it the okay...

Good, because although I fixed a bug your test revealed, your test still 
fails, and I don't yet know why. :-(

Shane
___
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] Zeo server error message

2011-01-31 Thread Tres Seaver
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 01/31/2011 07:27 AM, Sylvain Viollon wrote:
> Hello,
> 
>   I have a customer who run a ZEO setup with ZODB 3.8.4. They report
>   this error:
> 
> 2011-01-31T12:02:24 Unexpected error
> Traceback (most recent call last):
>   File
> "/opt/zope/newbuildout/parts/zope2/lib/python/ZODB/ConflictResolution.py",
> line 207, in tryToResolveConflict
> resolved = resolve(old, committed, newstate)
>   File
> "/opt/zope/newbuildout/parts/zope2/lib/python/ZODB/ConflictResolution.py",
> line 141, in __cmp__
> raise ValueError(
> ValueError: can't reliably compare against different
> PersistentReferences
> 
>   Does anyone know to what this error relate ?
> 
>   They have been running their ZEO setup for quite a while, and never
>   experienced any issue. That doesn't seems to 'break' the database either.
> 
>   I am not really sure what to say about this error.

I believe this is a real bug:  the PersistentReference class is raising
a ValueError becuase the object being compared is not itself, which
implies an irresolvable conflict:  it should be raising ConflictError,
or else a custom error which would be caught by 'tryToResolveConflict'
and converted into a ConflictError.


Tres.
- -- 
===
Tres Seaver  +1 540-429-0999  tsea...@palladion.com
Palladion Software   "Excellence by Design"http://palladion.com
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk1G4aYACgkQ+gerLs4ltQ7LMQCdG1u1RF2kWZbhkgwkBbfKTkNy
U9wAoMYQ0Tv/SgiXNlCxuUDZaJWjWAnU
=PH8G
-END PGP SIGNATURE-

___
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] Error from MySQL when attempting to run zodbconvert

2011-01-31 Thread Chris Withers
Hi Shane,

I got the following error when trying to run zodbconvert against a 
clustered MySQL environment running RHCS:

   File 
"/var/buildout-eggs/MySQL_python-1.2.3-py2.6-linux-i686.egg/MySQLdb/connections.py",
 
line 36, in defaulterrorhandler
 raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1598, "Binary logging not possible. 
Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for 
binlog mode 'STATEMENT'")


Any ideas?

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] Error from MySQL when attempting to run zodbconvert

2011-01-31 Thread Chris Withers
On 31/01/2011 16:30, Chris Withers wrote:
> I got the following error when trying to run zodbconvert against a
> clustered MySQL environment running RHCS:
>
> File
> "/var/buildout-eggs/MySQL_python-1.2.3-py2.6-linux-i686.egg/MySQLdb/connections.py",
> line 36, in defaulterrorhandler
>   raise errorclass, errorvalue
> _mysql_exceptions.OperationalError: (1598, "Binary logging not possible.
> Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for
> binlog mode 'STATEMENT'")

I fixed this by setting binlog-format to MIXED rather than STATEMENT in 
my.cnf. There don't appear to be any downsides to this, so maybe this 
should go in the docs somewhere?

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] RelStorage, history-free, pack causes POSKeyError with BTreeFolder2

2011-01-31 Thread Jim Fulton
On Fri, Jan 28, 2011 at 4:58 PM, Jürgen Herrmann
 wrote:
...
>  Afaics you use zodbpack's default of "days=0". This is known to produce
>  POSKeyErrors if the database is written to while packing.

It can lead to POSKeyErrors under certain pathological cases, but Is not
generally a problem in practice.

An example where it could be a problem:

x = Foo()
self._p_jar.add(x)
transaction.commit()

At this point, x is in the database and is thus garbage.  For the sake
of this discussion, assume the database is packed to this point in
time and x is removed from the database.

self.x = x
transaction.commit()

At this point, self refers to an object that is no longer in the
db. At some later time, once self has been ghostified and x is removed
from local cache, if we try to access x, we'll get a poskey error.

I would argue that the application code above is broken.

Note that the storage could validate the reference to x when self is
saved, but no storage that I know of does, for performance reasons.
In some future version of ZODB, it might be nice to change the
database record structure to make this sort of check easier.


Jim

--
Jim Fulton
http://www.linkedin.com/in/jimfulton
___
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] bug with RelStorage's zodbconvert --clear when clearing a large DB with MySQL

2011-01-31 Thread Chris Withers
Hi Shane,

This one's less serious if it is what I think it is:

Traceback (most recent call last):
   File "bin/zodbconvert", line 24, in 
 relstorage.zodbconvert.main()
   File 
"/var/buildout-eggs/RelStorage-1.4.0-py2.6.egg/relstorage/zodbconvert.py", 
line 89, in main
 destination.zap_all()
   File 
"/var/buildout-eggs/RelStorage-1.4.0-py2.6.egg/relstorage/storage.py", 
line 308, in zap_all
 self._rollback_load_connection()
   File 
"/var/buildout-eggs/RelStorage-1.4.0-py2.6.egg/relstorage/storage.py", 
line 217, in _rollback_load_connection
 self._load_conn.rollback()
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')

My guess is that the zap_all took so long that the server had gone away 
by the time the sql statement had be executed.

Still, far from 100% on that but thought I'd let you know.

I also had a segfault trying to do the same conversion which I'm 
attributing to the MySQL server being restarted by an overeager DBA 
mid-converstion but still, that shouldn't cause a segfault, 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
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Error from MySQL when attempting to run zodbconvert

2011-01-31 Thread Shane Hathaway
On 01/31/2011 06:30 PM, Chris Withers wrote:
> Hi Shane,
>
> I got the following error when trying to run zodbconvert against a
> clustered MySQL environment running RHCS:
>
> File
> "/var/buildout-eggs/MySQL_python-1.2.3-py2.6-linux-i686.egg/MySQLdb/connections.py",
> line 36, in defaulterrorhandler
>   raise errorclass, errorvalue
> _mysql_exceptions.OperationalError: (1598, "Binary logging not possible.
> Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for
> binlog mode 'STATEMENT'")

That's why you have to use row-based replication instead of 
statement-based replication.

Shane

___
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] bug with RelStorage's zodbconvert --clear when clearing a large DB with MySQL

2011-01-31 Thread Shane Hathaway
On 02/01/2011 12:19 AM, Chris Withers wrote:
> Hi Shane,
>
> This one's less serious if it is what I think it is:
>
> Traceback (most recent call last):
> File "bin/zodbconvert", line 24, in
>   relstorage.zodbconvert.main()
> File
> "/var/buildout-eggs/RelStorage-1.4.0-py2.6.egg/relstorage/zodbconvert.py",
> line 89, in main
>   destination.zap_all()
> File
> "/var/buildout-eggs/RelStorage-1.4.0-py2.6.egg/relstorage/storage.py",
> line 308, in zap_all
>   self._rollback_load_connection()
> File
> "/var/buildout-eggs/RelStorage-1.4.0-py2.6.egg/relstorage/storage.py",
> line 217, in _rollback_load_connection
>   self._load_conn.rollback()
> _mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
>
> My guess is that the zap_all took so long that the server had gone away
> by the time the sql statement had be executed.

My guess is MySQL is configured to drop connections when they are idle. 
  That is a bad idea IMHO, so I think raising that exception is the 
right thing to do, not a bug.

> I also had a segfault trying to do the same conversion which I'm
> attributing to the MySQL server being restarted by an overeager DBA
> mid-converstion but still, that shouldn't cause a segfault, right?

I don't know why it would.

Shane
___
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