[Interchange-bugs] [Bug 218] New - rollback error prevents checkout when using DBI
bugzilla-daemon@interchange.redhat.com
bugzilla-daemon@interchange.redhat.com
Thu Jun 14 10:58:01 2001
http://developer.akopia.com/bugs/show_bug.cgi?id=218
*** shadow/218 Thu Jun 14 10:57:23 2001
--- shadow/218.tmp.4796 Thu Jun 14 10:57:23 2001
***************
*** 0 ****
--- 1,87 ----
+ Bug#: 218
+ Product: Interchange
+ Version: 4.7.3
+ Platform: PC
+ OS/Version: Linux
+ Status: NEW
+ Resolution:
+ Severity: normal
+ Priority: P3
+ Component: Core
+ AssignedTo: mike@minivend.com
+ ReportedBy: matt@boltbluecorp.com
+ URL: process.html (order checkout completion)
+ Cc:
+ Summary: rollback error prevents checkout when using DBI
+
+ Overview Description:
+ Using DBI with DBD::Oracle and Oracle 8i, I get an error message following
+ checkout.
+
+ Steps to Reproduce:
+ 1) Install the Foundation demo in 4.7.3 with Oracle and CyberCash support
+ 1) Browse and add some items to the cart.
+ 3) Checkout with a passable credit card
+
+ Actual Results:
+ -----------------------^snip-----------------------
+ Sorry, there was an error in processing this form action. Please report the
+ error or try again later. (DBD::Oracle::db rollback failed: Error while
+ trying to retrieve text for error ORA-03114 (DBD ERROR: OCITransRollback) at
+ /usr/local/ic.4.7.x/lib/Vend/Table/DBI.pm line 648. )
+ -----------------------^snip-----------------------
+
+ Expected Results:
+ Should display the receipt page
+
+ Additional Info:
+ My catalog was originally installed without Oracle support or field munging. I
+ later grepped a distribution copy of foundation for FIELDMUNGE and made the
+ appropriate changes to my catalog. When I restarted ic, it ran the table
+ creation script no problem.
+
+
+ ORA-3114 reads means...
+
+ 03114, 00000, "not connected to ORACLE"
+ // *Cause:
+ // *Action:
+
+
+ The line referred to in the error message is in the following subroutine:
+
+ -----------------------^snip-----------------------
+ sub rollback {
+ my ($s) = @_;
+
+ #::logDebug("rolling back $s->[$TABLE], dsn_id=$s->[$CONFIG]{dsn_id}");
+ # This is pretty harmless, no?
+ return undef if ! defined $s->[$DBI];
+
+ # if (! defined $s->[$DBI]) {
+ # ::logError(
+ # "rollback attempted on non-open database handle for
+ table: %s",
+ # $s->[$TABLE],
+ # );
+ # return undef;
+ # }
+
+ return $s->[$DBI]->rollback();
+ }
+ -----------------------^snip-----------------------
+
+
+ The last line is returning the error into $@. I wrote a test script and could
+ verify that rollback and commit are working through the DBI. I don't know why
+ the rollback is happening, but it seems to fail because of an earlier
+ disconnect. This does NOT occur when using the GDBM data sources. This is what
+ appears in the catalog error.log
+
+
+ 172.16.42.11 qmwjb7V2:172.16.42.11 - [13/June/2001:17:25:27 +0100] foundation
+ /cgi-bin/foundation/process.html Saving userdb in mv_check.
+ 172.16.42.11 qmwjb7V2:172.16.42.11 - [13/June/2001:17:25:34 +0100] foundation
+ /cgi-bin/foundation/process.html Route main failed.
+ 172.16.42.11 qmwjb7V2:172.16.42.11 - [13/June/2001:17:25:34 +0100] foundation
+ /cgi-bin/foundation/process.html Route copy_user failed.