Skip Menu |

Preferred bug tracker

Please visit the preferred bug tracker to report your issue.

This queue is for tickets about the DBIx-Class-Migration CPAN distribution.

Report information
The Basics
Id: 76379
Status: resolved
Priority: 0/
Queue: DBIx-Class-Migration

People
Owner: Nobody in particular
Requestors: lxp [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.020
Fixed in: (no value)



Subject: migration-sqlite.t test failure
While attempting to install via cpanminus: $ cpanm DBIx::Class::Migration --> Working on DBIx::Class::Migration Fetching http://search.cpan.org/CPAN/authors/id/J/JJ/JJNAPIORK/DBIx-Class-Migration-0.020.tar.gz ... OK Configuring DBIx-Class-Migration-0.020 ... OK Building and testing DBIx-Class-Migration-0.020 ... FAIL ! Installing DBIx::Class::Migration failed. See .../.cpanm/build.log for details. cpanminus build log is attached. A quick Googling turns up this result, which may or may not be relevant to the failure I have experienced: https://metacpan.org/module/DBD::SQLite#Transaction-and-Database-Locking
Subject: build.log
cpanm (App::cpanminus) 1.5010 on perl 5.012003 built for x86_64-linux Work directory is /home/lx/.cpanm/work/1333804669.16878 You have make /usr/bin/make You have LWP 6.04 You have /bin/tar: tar (GNU tar) 1.25 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason. You have /usr/bin/unzip Searching DBIx::Class::Migration on cpanmetadb ... --> Working on DBIx::Class::Migration Fetching http://search.cpan.org/CPAN/authors/id/J/JJ/JJNAPIORK/DBIx-Class-Migration-0.020.tar.gz -> OK Unpacking DBIx-Class-Migration-0.020.tar.gz Entering DBIx-Class-Migration-0.020 Checking configure dependencies from META.yml Checking if you have ExtUtils::MakeMaker 6.30 ... Yes (6.62) Configuring DBIx-Class-Migration-0.020 Running Makefile.PL Checking if your kit is complete... Looks good Writing Makefile for DBIx::Class::Migration Writing MYMETA.yml and MYMETA.json -> OK Checking dependencies from MYMETA.json ... Checking if you have Test::Requires 0 ... Yes (0.06) Checking if you have Test::Most 0 ... Yes (0.25) Checking if you have File::Path 0 ... Yes (2.08_01) Checking if you have File::Spec::Functions 0 ... Yes (3.33) Checking if you have DBD::SQLite 1.35 ... Yes (1.35) Checking if you have MooseX::Traits::Pluggable 0 ... Yes (0.10) Checking if you have File::Spec 0 ... Yes (3.33) Checking if you have Config::MySQL 0.02 ... Yes (0.02) Checking if you have JSON::XS 2.32 ... Yes (2.32) Checking if you have DBIx::Class::DeploymentHandler 0.002100 ... Yes (0.002112) Checking if you have MooseX::Getopt 0 ... Yes (0.39) Checking if you have DBIx::Class::Fixtures 1.001014 ... Yes (1.001015) Checking if you have MooseX::Types::LoadableClass 0 ... Yes (0.008) Checking if you have File::Path 0 ... Yes (2.08_01) Checking if you have DBIx::Class::Schema::Loader 0.07017 ... Yes (0.07021) Checking if you have Moose 0 ... Yes (2.0403) Checking if you have File::Copy 0 ... Yes (2.18) Checking if you have SQL::Translator 0.11010 ... Yes (0.11010) Checking if you have version 0.77 ... Yes (0.97) Checking if you have Class::Load 0 ... Yes (0.19) Checking if you have Pod::Parser 1.51 ... Yes (1.51) Checking if you have File::ShareDir::ProjectDistDir 0.003001 ... Yes (0.3.1) Checking if you have MooseX::Attribute::ENV 0.02 ... Yes (0.02) Checking if you have File::Temp 0 ... Yes (0.22) Checking if you have Devel::PartialDump 0 ... Yes (0.15) Building and testing DBIx-Class-Migration-0.020 cp lib/DBIx/Class/Migration/Sandbox.pm blib/lib/DBIx/Class/Migration/Sandbox.pm cp lib/DBIx/Class/Migration/MySQLSandbox.pm blib/lib/DBIx/Class/Migration/MySQLSandbox.pm cp lib/DBIx/Class/Migration/Tutorial/AddMySQL.pod blib/lib/DBIx/Class/Migration/Tutorial/AddMySQL.pod cp lib/DBIx/Class/Migration/SqliteSandbox.pm blib/lib/DBIx/Class/Migration/SqliteSandbox.pm cp lib/DBIx/Class/Migration/RunScript/Trait/SchemaLoader.pm blib/lib/DBIx/Class/Migration/RunScript/Trait/SchemaLoader.pm cp lib/Catalyst/TraitFor/Model/DBIC/Schema/FromMigration.pm blib/lib/Catalyst/TraitFor/Model/DBIC/Schema/FromMigration.pm cp lib/DBIx/Class/Migration/Tutorial.pod blib/lib/DBIx/Class/Migration/Tutorial.pod cp lib/DBIx/Class/Migration/TargetDirSandboxBuilder.pm blib/lib/DBIx/Class/Migration/TargetDirSandboxBuilder.pm cp lib/DBIx/Class/Migration/ShareDirBuilder.pm blib/lib/DBIx/Class/Migration/ShareDirBuilder.pm cp lib/Catalyst/TraitFor/Model/DBIC/Schema/FromMigration/_MigrationHelper.pm blib/lib/Catalyst/TraitFor/Model/DBIC/Schema/FromMigration/_MigrationHelper.pm cp lib/DBIx/Class/Migration/Script.pm blib/lib/DBIx/Class/Migration/Script.pm cp lib/DBIx/Class/Migration/Tutorial/SecondMigration.pod blib/lib/DBIx/Class/Migration/Tutorial/SecondMigration.pod cp lib/DBIx/Class/Migration/Tutorial/FirstMigration.pod blib/lib/DBIx/Class/Migration/Tutorial/FirstMigration.pod cp lib/DBIx/Class/Migration/TempDirSandboxBuilder.pm blib/lib/DBIx/Class/Migration/TempDirSandboxBuilder.pm cp lib/DBIx/Class/Migration/SchemaLoader.pm blib/lib/DBIx/Class/Migration/SchemaLoader.pm cp lib/DBIx/Class/Migration.pm blib/lib/DBIx/Class/Migration.pm cp lib/DBIx/Class/Migration/Population.pm blib/lib/DBIx/Class/Migration/Population.pm cp lib/DBIx/Class/Migration/Tutorial/Conclusion.pod blib/lib/DBIx/Class/Migration/Tutorial/Conclusion.pod cp lib/DBIx/Class/Migration/Tutorial/ThirdMigration.pod blib/lib/DBIx/Class/Migration/Tutorial/ThirdMigration.pod cp lib/DBIx/Class/Migration/PostgresqlSandbox.pm blib/lib/DBIx/Class/Migration/PostgresqlSandbox.pm cp lib/DBIx/Class/Migration/Tutorial/Catalyst.pod blib/lib/DBIx/Class/Migration/Tutorial/Catalyst.pod cp lib/DBIx/Class/Migration/FAQ.pod blib/lib/DBIx/Class/Migration/FAQ.pod cp lib/DBIx/Class/Migration/TempDirBuilder.pm blib/lib/DBIx/Class/Migration/TempDirBuilder.pm cp lib/Test/DBIx/Class/FixtureCommand/Population.pm blib/lib/Test/DBIx/Class/FixtureCommand/Population.pm cp lib/DBIx/Class/Migration/Tutorial/Setup.pod blib/lib/DBIx/Class/Migration/Tutorial/Setup.pod cp lib/DBIx/Class/Migration/Tutorial/Testing.pod blib/lib/DBIx/Class/Migration/Tutorial/Testing.pod cp lib/DBIx/Class/Migration/Features.pod blib/lib/DBIx/Class/Migration/Features.pod cp lib/DBIx/Class/Migration/RunScript.pm blib/lib/DBIx/Class/Migration/RunScript.pm cp bin/dbic-migration blib/script/dbic-migration /home/lx/perl5/perlbrew/perls/perl-5.12.3/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/dbic-migration Manifying blib/man1/dbic-migration.1 Manifying blib/man3/DBIx::Class::Migration::Sandbox.3 Manifying blib/man3/DBIx::Class::Migration::MySQLSandbox.3 Manifying blib/man3/DBIx::Class::Migration::Tutorial::AddMySQL.3 Manifying blib/man3/DBIx::Class::Migration::RunScript::Trait::SchemaLoader.3 Manifying blib/man3/DBIx::Class::Migration::SqliteSandbox.3 Manifying blib/man3/Catalyst::TraitFor::Model::DBIC::Schema::FromMigration.3 Manifying blib/man3/DBIx::Class::Migration::Tutorial.3 Manifying blib/man3/DBIx::Class::Migration::Tutorial::SecondMigration.3 Manifying blib/man3/DBIx::Class::Migration::Script.3 Manifying blib/man3/Catalyst::TraitFor::Model::DBIC::Schema::FromMigration::_MigrationHelper.3 Manifying blib/man3/DBIx::Class::Migration::ShareDirBuilder.3 Manifying blib/man3/DBIx::Class::Migration::TargetDirSandboxBuilder.3 Manifying blib/man3/DBIx::Class::Migration::Tutorial::FirstMigration.3 Manifying blib/man3/DBIx::Class::Migration::SchemaLoader.3 Manifying blib/man3/DBIx::Class::Migration::TempDirSandboxBuilder.3 Manifying blib/man3/DBIx::Class::Migration::Population.3 Manifying blib/man3/DBIx::Class::Migration.3 Manifying blib/man3/DBIx::Class::Migration::Tutorial::Conclusion.3 Manifying blib/man3/DBIx::Class::Migration::Tutorial::ThirdMigration.3 Manifying blib/man3/DBIx::Class::Migration::Tutorial::Catalyst.3 Manifying blib/man3/DBIx::Class::Migration::PostgresqlSandbox.3 Manifying blib/man3/DBIx::Class::Migration::FAQ.3 Manifying blib/man3/Test::DBIx::Class::FixtureCommand::Population.3 Manifying blib/man3/DBIx::Class::Migration::TempDirBuilder.3 Manifying blib/man3/DBIx::Class::Migration::Tutorial::Testing.3 Manifying blib/man3/DBIx::Class::Migration::Tutorial::Setup.3 Manifying blib/man3/DBIx::Class::Migration::Features.3 Manifying blib/man3/DBIx::Class::Migration::RunScript.3 PERL_DL_NONLAZY=1 /home/lx/perl5/perlbrew/perls/perl-5.12.3/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/00-clean.t .............. ok t/help.t .................. skipped: Test requires module 'Test::Trap' but it's not found t/migration-mysql.t ....... skipped: DBICM_TEST_MYSQL not set t/migration-postgresql.t .. skipped: DBICM_TEST_PG not set DBIx::Class::ResultSet::populate(): execute_array() aborted with 'database is locked' at populate slice: { code => "bel" } at /home/lx/.cpanm/work/1333804669.16878/DBIx-Class-Migration-0.020/t/share/migrations/SQLite/deploy/1/002-artists.pl line 8 # Tests were run but no plan was declared and done_testing() was not seen. SV = IV(0x5238818) at 0x5238820 REFCNT = 1 FLAGS = (ROK,READONLY) RV = 0x5240938 SV = PVHV(0x518ae60) at 0x5240938 REFCNT = 1 FLAGS = (OBJECT,SHAREKEYS) STASH = 0x36e1f00 "DBI::db" ARRAY = 0x0 KEYS = 0 FILL = 0 MAX = 7 RITER = -1 EITER = 0x0 SV = IV(0x52039c8) at 0x52039d0 REFCNT = 1 FLAGS = (ROK,READONLY) RV = 0x521ebf8 SV = PVHV(0x5221850) at 0x521ebf8 REFCNT = 1 FLAGS = (OBJECT,SHAREKEYS) STASH = 0x36e1f00 "DBI::db" ARRAY = 0x0 KEYS = 0 FILL = 0 MAX = 7 RITER = -1 EITER = 0x0 t/migration-sqlite.t ...... Dubious, test returned 2 (wstat 512, 0x200) All 13 subtests passed SV = IV(0x458bcc0) at 0x458bcc8 REFCNT = 1 FLAGS = (ROK,READONLY) RV = 0x45871e8 SV = PVHV(0x45a22e0) at 0x45871e8 REFCNT = 1 FLAGS = (OBJECT,SHAREKEYS) STASH = 0x29e9720 "DBI::db" ARRAY = 0x0 KEYS = 0 FILL = 0 MAX = 7 RITER = -1 EITER = 0x0 SV = IV(0x457efe0) at 0x457efe8 REFCNT = 1 FLAGS = (ROK,READONLY) RV = 0x4556460 SV = PVHV(0x4582d60) at 0x4556460 REFCNT = 1 FLAGS = (OBJECT,SHAREKEYS) STASH = 0x29e9720 "DBI::db" ARRAY = 0x0 KEYS = 0 FILL = 0 MAX = 7 RITER = -1 EITER = 0x0 t/runscript.t ............. ok t/use.t ................... ok Test Summary Report ------------------- t/migration-sqlite.t (Wstat: 512 Tests: 13 Failed: 0) Non-zero exit status: 2 Parse errors: No plan found in TAP output Files=7, Tests=37, 108 wallclock secs ( 0.07 usr 0.03 sys + 10.22 cusr 0.87 csys = 11.19 CPU) Result: FAIL Failed 1/7 test programs. 0/37 subtests failed. make: *** [test_dynamic] Error 255 -> FAIL Installing DBIx::Class::Migration failed. See /home/lx/.cpanm/build.log for details.
Further information on this failure: The failure is occurring on the $migration->install line within the NEW_SCOPE_FOR_SCHEMA block of t/migration-sqlite.t, which is line 95 in my copy of the file. When this line is executed, the process hangs for 30 seconds and then dies with the errors shown in the previous message of this ticket. This message makes specific reference to a 30-second timeout in SQLite: http://lists.scsys.co.uk/pipermail/dbd-sqlite/2009-April/000021.html Show quoted text
> SQLite doesn't really do locking.. It just runs a sort of > busy-wait loop, with a 30 second time-out. So if one process > holds a transaction for >30 seconds, other processes will > fail with the error you're seeing.
This suggests that a previous transaction in this test is not completing before the next one begins. Without a proper understanding of DBIx::Class::Migration at this stage, and therefore without an understanding of what is occurring in this test, I can't determine whether this problem is due to how SQLite is being used or due to DBD::SQLite (or SQLite) itself. Hope this helps!
There was a small change in the newer release of DBIC:DeploymentHandler which caused this problem to become evident. I've patch this code and will send it on to CPAN in a bit. Great debugging work, this did help me figure it out. If you can't wait til version 0.021 you can downgrade DBIC:DH to 0.002111 (this regression was caused by a code improvement in 0.002112) in the meantime. thanks for the report! John On Mon Apr 09 01:32:38 2012, LXP wrote: Show quoted text
> Further information on this failure: > > The failure is occurring on the $migration->install line within > the NEW_SCOPE_FOR_SCHEMA block of t/migration-sqlite.t, which > is line 95 in my copy of the file. > > When this line is executed, the process hangs for 30 seconds > and then dies with the errors shown in the previous message of > this ticket. > > This message makes specific reference to a 30-second timeout in > SQLite: > > http://lists.scsys.co.uk/pipermail/dbd-sqlite/2009-April/000021.html >
> > SQLite doesn't really do locking.. It just runs a sort of > > busy-wait loop, with a 30 second time-out. So if one process > > holds a transaction for >30 seconds, other processes will > > fail with the error you're seeing.
> > This suggests that a previous transaction in this test is not > completing before the next one begins. > > Without a proper understanding of DBIx::Class::Migration at > this stage, and therefore without an understanding of what is > occurring in this test, I can't determine whether this problem > is due to how SQLite is being used or due to DBD::SQLite (or > SQLite) itself. > > Hope this helps!
Thanks, John! Version 0.021 solved the problem for me.
Sending the previous mail has failed. Please contact your admin, they can find more details in the logs.