[open-ils-commits] ***SPAM*** [GIT] Evergreen ILS branch rel_2_7 updated. de94a7f54a89b4c06a66cfd5ed6ab27060979fe6
Evergreen Git
git at git.evergreen-ils.org
Wed Nov 5 10:12:21 EST 2014
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_2_7 has been updated
via de94a7f54a89b4c06a66cfd5ed6ab27060979fe6 (commit)
from ff1bf76459802e1f8c4795449bba463a0b662e85 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit de94a7f54a89b4c06a66cfd5ed6ab27060979fe6
Author: Bill Erickson <berickxx at gmail.com>
Date: Mon Oct 20 22:55:20 2014 -0400
LP#1366964 Update libdbi connection test error parsing
Modern version of libdbi return a slightly different error message for
queries which fail mid-transaction, causing an C-based DB backends to
exit abruptly unnecessarily. Update the error message test to include
the new format.
Includes Perl live test for confirming functionality.
Signed-off-by: Bill Erickson <berickxx at gmail.com>
Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
diff --git a/Open-ILS/src/c-apps/oils_sql.c b/Open-ILS/src/c-apps/oils_sql.c
index 77cb12c..6c7d061 100644
--- a/Open-ILS/src/c-apps/oils_sql.c
+++ b/Open-ILS/src/c-apps/oils_sql.c
@@ -271,8 +271,12 @@ int oilsIsDBConnected( dbi_conn handle ) {
"ignored until end of transaction block\n";
const char* msg;
dbi_conn_error( handle, &msg );
- if( strcmp( msg, ok_msg )) {
- osrfLogError( OSRF_LOG_MARK, "Database connection isn't working" );
+ // Newer versions of dbi_conn_error return codes within the error msg.
+ // E.g. 3624914: ERROR: current transaction is aborted, commands ignored until end of transaction block
+ // Substring test should work regardless.
+ const char* substr = strstr(msg, ok_msg);
+ if( substr == NULL ) {
+ osrfLogError( OSRF_LOG_MARK, "Database connection isn't working : %s", msg );
return 0;
} else
return 1; // ignoring SELECT due to previous error; that's okay
diff --git a/Open-ILS/src/perlmods/live_t/08-lp1366964-libdbi-error.t b/Open-ILS/src/perlmods/live_t/08-lp1366964-libdbi-error.t
new file mode 100644
index 0000000..3164a6c
--- /dev/null
+++ b/Open-ILS/src/perlmods/live_t/08-lp1366964-libdbi-error.t
@@ -0,0 +1,39 @@
+#!perl
+
+use Test::More tests => 2;
+
+diag("Tests libdbi transaction error reporting");
+
+use strict; use warnings;
+
+use OpenILS::Utils::TestUtils;
+use OpenILS::Utils::CStoreEditor (':funcs');
+use OpenILS::Utils::Fieldmapper;
+my $script = OpenILS::Utils::TestUtils->new();
+$script->bootstrap;
+
+my $e = new_editor(xact => 1);
+$e->init;
+
+# create a copy status object with ID 1, which will fail.
+my $stat = Fieldmapper::config::copy_status->new;
+$stat->id(1);
+
+# when functioning well, this should happen and fail quickly
+my $start = time;
+$e->create_config_copy_status($stat);
+my $evt = $e->die_event; # this part takes the longest
+my $duration = time - $start;
+
+cmp_ok($duration, '<', '10',
+ 'Confirm cstore reports standard query error in a timely fashion');
+
+if ($evt) {
+ is($evt->{textcode}, 'DATABASE_QUERY_FAILED',
+ 'CStoreEditor returns standard query error');
+} else {
+ fail('CStoreEditor returned no event');
+}
+
+
+
-----------------------------------------------------------------------
Summary of changes:
Open-ILS/src/c-apps/oils_sql.c | 8 +++-
.../perlmods/live_t/08-lp1366964-libdbi-error.t | 39 ++++++++++++++++++++
2 files changed, 45 insertions(+), 2 deletions(-)
create mode 100644 Open-ILS/src/perlmods/live_t/08-lp1366964-libdbi-error.t
hooks/post-receive
--
Evergreen ILS
More information about the open-ils-commits
mailing list