[prev] [thread] [next] [lurker] [Date index for 2004/06/02]
On Fri, May 21, 2004 at 02:14:16PM +0100, Andy Wardley wrote: > I'm seeing some errors when trying to install Siesta. I've tried both > 0.65 from CPAN and the latest snapshot from the web site. > > First, I was getting some warnings. Class::DBI (0.96) was warning about > the 'sort' parameter being deprecated in favour of 'order_by'. The first > patch attached makes the change, although it will presumably break > compatability with pre-0.96 Class:DBI. Sassen frassen Class::DBI. > > I was also seeing some warnings from line 127 of Siesta.pm because > $Siesta::Config::LOG_LEVEL was undefined, due to the fact that I don't > have a /usr/local/siesta/siesta.conf file yet. > > The second patch changes Config.pm.in to call a setup method to set > the package variable to their default values even if the config file > doesn't exist. I created a new setup() method but left the original > load_from() intact, just in case it's currently being used in other > parts of code. I also added C<use Siesta::Config> to Siesta.pm, as > implemented in the third patch. I suspect that this may not be the > right thing to do, but it seems to solve the immediate problem. Hrm. Most of that will have been oboleted by the recent work I did as patches #1505-1510 I'm afraid. > Now, having got all that out of the way, I'm still seeing a couple of > errors. > > Failed Test Stat Wstat Total Fail Failed List of Failed > ------------------------------------------------------------------------------- > t/09defer.t 255 65280 22 6 27.27% 17-22 > t/09plugin_order.t 255 65280 11 2 18.18% 10-11 > t/20fullsend.t 2 512 1 1 100.00% 1 > Failed 3/18 test scripts, 83.33% okay. 9/222 subtests failed, 95.95% okay. > > The first two fail with a Class::DBI call_trigger() method failure. > > t/09defer...................ok 16/22Can't locate object method "call_trigger" via package "Class::DBI::Object::Has::Been::Deleted" at /usr/local/lib/perl5/site_perl/5.8.0/Class/DBI.pm line 723, <DATA> line 12. > > t/09plugin_order............ok 9/11Can't locate object method "call_trigger" via package "Class::DBI::Object::Has::Been::Deleted" at /usr/local/lib/perl5/site_perl/5.8.0/Class/DBI.pm line 723. > > The third complains thusly: > > t/20fullsend................Siesta::Plugin::process called directly at /home/abw/projects/siesta/Siesta-0.65-abw/blib/lib/Siesta/Plugin.pm line 44. > > A cursory glance at the code for either of these problems doesn't offer > any enlightenment. I suspect the Class::DBI problem is another version > compatibility problem, but I can't track it down. > > Any clues gratefully received. It looks like most of it works so I'll > press on. I've just took a quick stab on a clean perl with the lastest release of everything, and suspect that this is a bug in the new Class::DBI caching code. From the 0.96 Changes file. 0.96 New Functionality - Maintain live object index so subsequent requests for same row return the same object (Perrin Harkins) Now without hunting down that code I think it's showing up because of an 'interesting' quirk in SQLites auto-incrementing id columns. Rather than being a true sequence, it just finds the maximum value for the key, and adds 1 to it. This means you see patterns like this: INSERT INTO foo (bar) VALUES ('baz'); SELECT id FROM BAR; mysql | SQLite 1 | 1 INSERT INTO foo (bar) VALUES ('baz'); SELECT id FROM BAR; mysql | SQLite 1 | 1 2 | 2 DELETE FROM foo WHERE id = 2; SELECT id FROM BAR; mysql | SQLite 1 | 1 INSERT INTO foo (bar) VALUES ('baz'); SELECT id FROM BAR; mysql | SQLite 1 | 1 3 | 2 Then all you need is for that object index to be really naiive and sticky, and keep the version that gets blessed into 'Class::DBI::Has::Been::Deleted' when you called ->delete on it and foop - big bang! Certainly the 09defer.t would tickle this. When I get a tuit I'll get onto either Tony or the Class::DBI::SQLite maintainer. -- Richard Clamp <richardc@xxxxxxxxx.xxx>
Generated at 13:56 on 01 Jul 2004 by mariachi 0.52