[ZODB-Dev] RelStorage pack with history-free storage results in POSKeyErrors
Jürgen Herrmann
Juergen.Herrmann at XLhost.de
Thu Jan 27 05:40:58 EST 2011
On Thu, 27 Jan 2011 10:32:09 +0000, Chris Withers
<chris at simplistix.co.uk> wrote:
> On 27/01/2011 03:15, Shane Hathaway wrote:
>>> Okay, so I'll do:
>>>
>>> - e2fsck -f
>
> Hmm, how do I e2fsck a mounted filesystem?
>
> The MySQL filesystem could be unmounted (after I shut down MySQL!),
> so I
> ran e2fsck on it:
>
> e2fsck -f /dev/sdb1
> e2fsck 1.41.3 (12-Oct-2008)
> Pass 1: Checking inodes, blocks, and sizes
> Pass 2: Checking directory structure
> Pass 3: Checking directory connectivity
> Pass 4: Checking reference counts
> Pass 5: Checking group summary information
> /dev/sdb1: 166/16777216 files (10.2% non-contiguous),
> 8244979/67107513
> blocks
>
>>> - mysqlcheck -c
>
> mysqlcheck -c dev_packed -u root -p
> Enter password:
> dev_packed.new_oid OK
> dev_packed.object_ref OK
> dev_packed.object_refs_added OK
> dev_packed.object_state OK
> dev_packed.pack_object OK
>
>>> What logs should I hunt through and what kind of things am I
>>> looking
>>> for?
>>
>> /var/log/messages and the like.
>> Look for kernel-level errors such as
>> block I/O errors, "oops", and system panics. Any such errors have a
>> chance of corrupting files. We need to rule out errors at the
>> kernel or
>> below.
>
> None of the above, /var/log/messages is actually pretty empty for the
> last few days. If it helps, both the app server and database server
> are
> VMWare virtual machines...
>
>> Next, follow the directions in relstorage/tests/README.txt to create
>> the
>> 4 test databases. Then run "bin/test -p -m relstorage". All tests
>> should pass.
>
> Okay, first problem, the tests only connect to localhost, which means
> I
> can't exactly test as the app server is one machine and the database
> server is another. However, the two machines are identical, so I
> setup
> the buildout on the database server with the new test section added.
>
> First up, I get the following failures:
>
> IOError: [Errno 2] No such file or directory:
>
> '/var/buildout-eggs/RelStorage-1.4.0-py2.6.egg/relstorage/tests/blob/blob_connection.txt'
>
> OSError: [Errno 2] No such file or directory:
>
> '/var/buildout-eggs/RelStorage-1.4.0-py2.6.egg/relstorage/tests/replicas.conf'
>
> My guess is that these files aren't included by setuptools?
>
> So, I checked out the 1.4.0 tag and added it as a develop egg in the
> buildout.
>
> Now I get:
>
> Running .HFMySQLBlobTests tests:
> Set up .HFMySQLBlobTests in 0.000 seconds.
> Running:
>
> Ran 70 tests with 0 failures and 0 errors in 9.903 seconds.
> Running .HPMySQLBlobTests tests:
> Tear down .HFMySQLBlobTests in 0.000 seconds.
> Set up .HPMySQLBlobTests in 0.000 seconds.
> Running:
>
> Ran 81 tests with 0 failures and 0 errors in 10.511 seconds.
> Running zope.testing.testrunner.layer.UnitTests tests:
> Tear down .HPMySQLBlobTests in 0.005 seconds.
> Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
> Running:
> 78/269 (29.0%)
>
> Error in test check16MObject
> (relstorage.tests.testmysql.HPMySQLTests)
> Traceback (most recent call last):
> File "/usr/local/lib/python2.6/unittest.py", line 279, in run
> testMethod()
> File "/home/zope/relstorage_co/relstorage/tests/reltestbase.py",
> line
> 214, in check16MObject
> self._dostoreNP(oid, data=data)
> File
>
> "/var/buildout-eggs/ZODB3-3.9.6-py2.6-linux-i686.egg/ZODB/tests/StorageTestBase.py",
>
> line 202, in _dostoreNP
> return self._dostore(oid, revid, data, 1, user, description)
> File
>
> "/var/buildout-eggs/ZODB3-3.9.6-py2.6-linux-i686.egg/ZODB/tests/StorageTestBase.py",
>
> line 190, in _dostore
> r1 = self._storage.store(oid, revid, data, '', t)
> File "/home/zope/relstorage_co/relstorage/storage.py", line 565,
> in store
> cursor, self._batcher, oid_int, prev_tid_int, data)
> File "/home/zope/relstorage_co/relstorage/adapters/mover.py", line
> 453, in mysql_store_temp
> command='REPLACE',
> File "/home/zope/relstorage_co/relstorage/adapters/batch.py", line
> 67, in insert_into
> self.flush()
> File "/home/zope/relstorage_co/relstorage/adapters/batch.py", line
> 74, in flush
> self._do_inserts()
> File "/home/zope/relstorage_co/relstorage/adapters/batch.py", line
> 110, in _do_inserts
> self.cursor.execute(stmt, tuple(params))
> File
>
> "/var/buildout-eggs/MySQL_python-1.2.3-py2.6-linux-i686.egg/MySQLdb/cursors.py",
>
> line 174, in execute
> self.errorhandler(self, exc, value)
> File
>
> "/var/buildout-eggs/MySQL_python-1.2.3-py2.6-linux-i686.egg/MySQLdb/connections.py",
>
> line 36, in defaulterrorhandler
> raise errorclass, errorvalue
> OperationalError: (1153, "Got a packet bigger than
> 'max_allowed_packet'
> bytes")
>
> 196/269 (72.9%)
>
> Error in test check16MObject
> (relstorage.tests.testmysql.HFMySQLTests)
> Traceback (most recent call last):
> File "/usr/local/lib/python2.6/unittest.py", line 279, in run
> testMethod()
> File "/home/zope/relstorage_co/relstorage/tests/reltestbase.py",
> line
> 214, in check16MObject
> self._dostoreNP(oid, data=data)
> File
>
> "/var/buildout-eggs/ZODB3-3.9.6-py2.6-linux-i686.egg/ZODB/tests/StorageTestBase.py",
>
> line 202, in _dostoreNP
> return self._dostore(oid, revid, data, 1, user, description)
> File
>
> "/var/buildout-eggs/ZODB3-3.9.6-py2.6-linux-i686.egg/ZODB/tests/StorageTestBase.py",
>
> line 190, in _dostore
> r1 = self._storage.store(oid, revid, data, '', t)
> File "/home/zope/relstorage_co/relstorage/storage.py", line 565,
> in store
> cursor, self._batcher, oid_int, prev_tid_int, data)
> File "/home/zope/relstorage_co/relstorage/adapters/mover.py", line
> 453, in mysql_store_temp
> command='REPLACE',
> File "/home/zope/relstorage_co/relstorage/adapters/batch.py", line
> 67, in insert_into
> self.flush()
> File "/home/zope/relstorage_co/relstorage/adapters/batch.py", line
> 74, in flush
> self._do_inserts()
> File "/home/zope/relstorage_co/relstorage/adapters/batch.py", line
> 110, in _do_inserts
> self.cursor.execute(stmt, tuple(params))
> File
>
> "/var/buildout-eggs/MySQL_python-1.2.3-py2.6-linux-i686.egg/MySQLdb/cursors.py",
>
> line 174, in execute
> self.errorhandler(self, exc, value)
> File
>
> "/var/buildout-eggs/MySQL_python-1.2.3-py2.6-linux-i686.egg/MySQLdb/connections.py",
>
> line 36, in defaulterrorhandler
> raise errorclass, errorvalue
> OperationalError: (1153, "Got a packet bigger than
> 'max_allowed_packet'
> bytes")
>
>
> Ran 269 tests with 0 failures and 2 errors in 38.398 seconds.
> Tearing down left over layers:
> Tear down zope.testing.testrunner.layer.UnitTests in 0.000
> seconds.
> Total: 420 tests, 0 failures, 2 errors in 58.929 seconds.
>
> This is a little weird, as I have max_allowed_packet set to 16M.
> Should these tests fail?
>
> That said, I don't think this has anything to do with the packing bug
> as
> I didn't see any exceptions or, in fact, any logging or output at all
> from zodbpack, and the only other exceptions seen were the
> POSKeyErrors...
>
> cheers,
>
> Chris
i also had to up max_allowed_packet to 32M to make the tests work.
best regards,
jürgen
--
>> XLhost.de ® - Webspace von supersmall bis eXtra Large <<
XLhost.de GmbH
Jürgen Herrmann, Geschäftsführer
Boelckestrasse 21, 93051 Regensburg, Germany
Geschäftsführer: Jürgen Herrmann
Registriert unter: HRB9918
Umsatzsteuer-Identifikationsnummer: DE245931218
Fon: +49 (0)800 XLHOSTDE [0800 95467833]
Fax: +49 (0)800 95467830
Web: http://www.XLhost.de
More information about the ZODB-Dev
mailing list