Re: Missing informix error messages

2010-01-19 Thread m. allan noah
On Thu, Jan 14, 2010 at 7:41 PM, Jonathan Leffler
jonathan.leff...@gmail.com wrote:
 On Thu, Jan 14, 2010 at 8:49 AM, m. allan noah kitno...@gmail.com wrote:

 I have a problem with some fastcgi scripts which use DBD::Informix.

 I trust this is DBD::Informix 2008.0513 and not some earlier version.

correct.

 Which version of Perl are you using?

5.8.8  (IA64.ARCHREV_0-thread-multi-LP64)

 Which platform are you running on?

HPUX 11.31 Itanium

 Which version of Informix ClientSDK (ESQL/C) are you using?

esql -V
IBM Informix CSDK Version 3.50, IBM Informix-ESQL Version 3.50.FC3

 Fastcgi is like regular cgi, except the script does not exit after the
 request is complete, it loops back to the beginning, and waits for a
 new request. This significantly improves performance for scripts with
 large startup penalties.  The scripts are single threaded, with apache
 spawning new copies as required.
 I am connecting and disconnecting from the db on each request.

 Everything works fine, except that sql error messages can only be
 found on the first pass thru the fastcgi loop. e.g.

 DBD::Informix::st execute failed: SQL: -268: Unique constraint
 (informix.u116_31) violated.
 ISAM: -100: ISAM error: duplicate value for a record with unique key.

 On the subsequent passes i get:

 DBD::Informix::st execute failed: SQL: -268: Failed to locate SQL
 error message
 ISAM: -100: Failed to locate ISAM error message

 I've not seen that behaviour before that I recall.

 How reliable is it?  100%?  Sometimes?  Seldom but often enough to be
 annoying?

100% reliable. The first pass thru the loop has access to the
messages, all subsequent passes do not. This happens even if the first
pass does not generate an error.

 I have dumped the environment on both passes, and they are identical,
 including all the informix vars. I cannot reproduce this issue with a
 command line script, so I might have to ask some apache/fastcgi
 hackers too, but I thought I would start here.

 Normally, once the code has found the error messages once, there is no
 further problem.  It is very unusual - indeed, I'm not sure I have any
 explanation of a mechanism by which it can happen.

I've also used Env::C to dump the 'C' environment, and those vars are
also the same on each pass. I'm at a loss otherwise.

 The best I can come up with as a 'debugging' mechanism is to suggest that
 you add tracing to the system - DBI_TRACE=3 (or higher) in the environment
 or an equivalent.  Offhand, I'm not sure where the output would go with
 FastCGI in the system; you might need to work on the output file too.

I will try this and report back.

Thanks!

allan
-- 
The truth is an offense, but not a sin


Re: Missing informix error messages

2010-01-19 Thread m. allan noah
On Tue, Jan 19, 2010 at 11:06 AM, m. allan noah kitno...@gmail.com wrote:
 On Thu, Jan 14, 2010 at 7:41 PM, Jonathan Leffler
 jonathan.leff...@gmail.com wrote:
 On Thu, Jan 14, 2010 at 8:49 AM, m. allan noah kitno...@gmail.com wrote:

 I have a problem with some fastcgi scripts which use DBD::Informix.

 I trust this is DBD::Informix 2008.0513 and not some earlier version.

 correct.

 Which version of Perl are you using?

 5.8.8  (IA64.ARCHREV_0-thread-multi-LP64)

 Which platform are you running on?

 HPUX 11.31 Itanium

 Which version of Informix ClientSDK (ESQL/C) are you using?

 esql -V
 IBM Informix CSDK Version 3.50, IBM Informix-ESQL Version 3.50.FC3

 Fastcgi is like regular cgi, except the script does not exit after the
 request is complete, it loops back to the beginning, and waits for a
 new request. This significantly improves performance for scripts with
 large startup penalties.  The scripts are single threaded, with apache
 spawning new copies as required.
 I am connecting and disconnecting from the db on each request.

 Everything works fine, except that sql error messages can only be
 found on the first pass thru the fastcgi loop. e.g.

 DBD::Informix::st execute failed: SQL: -268: Unique constraint
 (informix.u116_31) violated.
 ISAM: -100: ISAM error: duplicate value for a record with unique key.

 On the subsequent passes i get:

 DBD::Informix::st execute failed: SQL: -268: Failed to locate SQL
 error message
 ISAM: -100: Failed to locate ISAM error message

 I've not seen that behaviour before that I recall.

 How reliable is it?  100%?  Sometimes?  Seldom but often enough to be
 annoying?

 100% reliable. The first pass thru the loop has access to the
 messages, all subsequent passes do not. This happens even if the first
 pass does not generate an error.

 I have dumped the environment on both passes, and they are identical,
 including all the informix vars. I cannot reproduce this issue with a
 command line script, so I might have to ask some apache/fastcgi
 hackers too, but I thought I would start here.

 Normally, once the code has found the error messages once, there is no
 further problem.  It is very unusual - indeed, I'm not sure I have any
 explanation of a mechanism by which it can happen.

 I've also used Env::C to dump the 'C' environment, and those vars are
 also the same on each pass. I'm at a loss otherwise.

 The best I can come up with as a 'debugging' mechanism is to suggest that
 you add tracing to the system - DBI_TRACE=3 (or higher) in the environment
 or an equivalent.  Offhand, I'm not sure where the output would go with
 FastCGI in the system; you might need to work on the output file too.

 I will try this and report back.

And, setting $dbh-trace(10,'/tmp/foo') yields the same output for
both passes, with the exception of the error messages.

I'm left scratching my head here, but I'll keep trying to reproduce it
at the command line.

allan
-- 
The truth is an offense, but not a sin


Missing informix error messages

2010-01-14 Thread m. allan noah
I have a problem with some fastcgi scripts which use DBD::Informix.

Fastcgi is like regular cgi, except the script does not exit after the
request is complete, it loops back to the beginning, and waits for a
new request. This significantly improves performance for scripts with
large startup penalties.  The scripts are single threaded, with apache
spawning new copies as required.
I am connecting and disconnecting from the db on each request.

Everything works fine, except that sql error messages can only be
found on the first pass thru the fastcgi loop. e.g.

DBD::Informix::st execute failed: SQL: -268: Unique constraint
(informix.u116_31) violated.
ISAM: -100: ISAM error: duplicate value for a record with unique key.

On the subsequent passes i get:

DBD::Informix::st execute failed: SQL: -268: Failed to locate SQL
error message
ISAM: -100: Failed to locate ISAM error message

I have dumped the environment on both passes, and they are identical,
including all the informix vars. I cannot reproduce this issue with a
command line script, so I might have to ask some apache/fastcgi
hackers too, but I thought I would start here.

allan
-- 
The truth is an offense, but not a sin


Re: Missing informix error messages

2010-01-14 Thread Jonathan Leffler
On Thu, Jan 14, 2010 at 8:49 AM, m. allan noah kitno...@gmail.com wrote:

 I have a problem with some fastcgi scripts which use DBD::Informix.


I trust this is DBD::Informix 2008.0513 and not some earlier version.
Which version of Perl are you using?
Which platform are you running on?
Which version of Informix ClientSDK (ESQL/C) are you using?


 Fastcgi is like regular cgi, except the script does not exit after the
 request is complete, it loops back to the beginning, and waits for a
 new request. This significantly improves performance for scripts with
 large startup penalties.  The scripts are single threaded, with apache
 spawning new copies as required.
 I am connecting and disconnecting from the db on each request.

 Everything works fine, except that sql error messages can only be
 found on the first pass thru the fastcgi loop. e.g.

 DBD::Informix::st execute failed: SQL: -268: Unique constraint
 (informix.u116_31) violated.
 ISAM: -100: ISAM error: duplicate value for a record with unique key.

 On the subsequent passes i get:

 DBD::Informix::st execute failed: SQL: -268: Failed to locate SQL
 error message
 ISAM: -100: Failed to locate ISAM error message


I've not seen that behaviour before that I recall.

How reliable is it?  100%?  Sometimes?  Seldom but often enough to be
annoying?


 I have dumped the environment on both passes, and they are identical,
 including all the informix vars. I cannot reproduce this issue with a
 command line script, so I might have to ask some apache/fastcgi
 hackers too, but I thought I would start here.


Normally, once the code has found the error messages once, there is no
further problem.  It is very unusual - indeed, I'm not sure I have any
explanation of a mechanism by which it can happen.

The best I can come up with as a 'debugging' mechanism is to suggest that
you add tracing to the system - DBI_TRACE=3 (or higher) in the environment
or an equivalent.  Offhand, I'm not sure where the output would go with
FastCGI in the system; you might need to work on the output file too.

-- 
Jonathan Leffler jonathan.leff...@gmail.com  #include disclaimer.h
Guardian of DBD::Informix - v2008.0513 - http://dbi.perl.org
Blessed are we who can laugh at ourselves, for we shall never cease to be
amused.