[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.