Open MPI logo

MTT Users Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [MTT users] MTT server side problem
From: Pavel Shamis (Pasha) (pasha_at_[hidden])
Date: 2008-05-19 07:32:34


Hello,
Did you have chance to review this patch ?

Regards,
Pasha

Josh Hursey wrote:
> Sorry for the delay on this. I probably will not have a chance to look
> at it until later this week or early next. Thank you for the work on
> the patch.
>
> Cheers,
> Josh
>
> On May 12, 2008, at 8:08 AM, Pavel Shamis (Pasha) wrote:
>
>> Hi Josh,
>> I ported the error handling mechanism from submit/index.php to to the
>> database.inc. Please review.
>>
>> Thanks,
>> Pasha
>>
>> Josh Hursey wrote:
>>> Pasha,
>>>
>>> I'm looking at the patch a bit closer and even though at a high
>>> level the do_pg_connect, do_pg_query, simple_select, and select
>>> functions do the same thing the versions in submit/index.php have
>>> some additional error handling mechanisms that the ones in
>>> database.inc do not have. Specifically they send email when the
>>> functions fail with messages indicating what failed so corrections
>>> can be made.
>>>
>>> So though I agree that we should unify the functionality I cannot
>>> recommend this patch since it will result in losing useful error
>>> handling functionality. Maybe there is another way to clean this up
>>> to preserve the error reporting.
>>>
>>> -- Josh
>>>
>>> On May 7, 2008, at 11:56 AM, Pavel Shamis (Pasha) wrote:
>>>
>>>> Hi Josh,
>>>> I had the original problem with some old revision from trunk.
>>>> Today I updated the server to latest revision from trunk + the
>>>> patch and everything looks good.
>>>>
>>>> Can I commit the patch ?
>>>>
>>>> Pasha
>>>>
>>>>
>>>> Ethan Mallove wrote:
>>>>> On Wed, May/07/2008 06:04:07PM, Pavel Shamis (Pasha) wrote:
>>>>>
>>>>>> Hi Josh.
>>>>>>
>>>>>>> Looking at the patch I'm a little bit conserned. The
>>>>>>> "get_table_fields()" is, as you mentioned, no longer used so
>>>>>>> should be removed. However the other functions are critical to
>>>>>>> the submission script particularly 'do_pg_connect' which opens
>>>>>>> the connection to the backend database.
>>>>>>>
>>>>>> All the functions are implemented in $topdir/database.inc file.
>>>>>> And the "database.inc" implementation is better because it use
>>>>>> password and username from config.ini. The original
>>>>>> implementation from submit/index use
>>>>>> hardcoded values defined in the file.
>>>>>>
>>>>>>> Are you using the current development trunk (mtt/trunk) or the
>>>>>>> stable release branch (mtt/branches/ompi-core-testers)?
>>>>>>>
>>>>>> trunk
>>>>>>
>>>>>>> Can you send us the error messages that you were receiving?
>>>>>>>
>>>>>> 1. On client side I see ""*** WARNING: MTTDatabase client did not
>>>>>> get a serial"
>>>>>> As result of the error some of MTT results is not visible via the
>>>>>> web reporter
>>>>>> 2. On server side I found follow error message:
>>>>>> [client 10.4.3.214] PHP Fatal error: Allowed memory size of
>>>>>> 33554432 bytes exhausted (tried to allocate 23592960
>>>>>> bytes) in /.autodirect/swgwork/MTT/mtt/submit/index.php(79) :
>>>>>> eval()'d code on line 77515
>>>>>> [Mon May 05 19:26:05 2008] [notice] caught SIGTERM, shutting down
>>>>>> [Mon May 05 19:30:54 2008] [notice] suEXEC mechanism enabled
>>>>>> (wrapper: /usr/sbin/suexec)
>>>>>> [Mon May 05 19:30:54 2008] [notice] Digest: generating secret for
>>>>>> digest authentication ...
>>>>>> [Mon May 05 19:30:54 2008] [notice] Digest: done
>>>>>> [Mon May 05 19:30:54 2008] [notice] LDAP: Built with OpenLDAP
>>>>>> LDAP SDK
>>>>>> [Mon May 05 19:30:54 2008] [notice] LDAP: SSL support unavailable
>>>>>> My memory limit in php.ini file was set on 256MB !
>>>>>>
>>>>>
>>>>>
>>>>> Looks like PHP is actually using a 32MB limit ("Allowed
>>>>> memory size of 33554432 ..."). Does a (Apache?) daemon need
>>>>> to be restarted for the php.ini file to take effect? To
>>>>> check your settings, this little PHP script will print an
>>>>> HTML page of all the active system settings (search on
>>>>> "memory_limit").
>>>>> <?php
>>>>> phpinfo();
>>>>> ?>
>>>>>
>>>>> -Ethan
>>>>>
>>>>>
>>>>>
>>>>>> Regards,
>>>>>> Pasha
>>>>>>
>>>>>>
>>>>>>> Cheers,
>>>>>>> Josh
>>>>>>>
>>>>>>> On May 7, 2008, at 4:49 AM, Pavel Shamis (Pasha) wrote:
>>>>>>>
>>>>>>>
>>>>>>>> Hi,
>>>>>>>> I upgraded the server side (the mtt is still running , so don't
>>>>>>>> know if the problem was resolved)
>>>>>>>> During upgrade I had some problem with the submit/index.php
>>>>>>>> script, it had some duplicated functions and some of them were
>>>>>>>> broken.
>>>>>>>> Please review the attached patch.
>>>>>>>>
>>>>>>>> Pasha
>>>>>>>>
>>>>>>>> Ethan Mallove wrote:
>>>>>>>>
>>>>>>>>> On Tue, May/06/2008 06:29:33PM, Pavel Shamis (Pasha) wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>> I'm not sure which cron jobs you're referring to. Do you
>>>>>>>>>>> mean these?
>>>>>>>>>>>
>>>>>>>>>>> https://svn.open-mpi.org/trac/mtt/browser/trunk/server/php/cron
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> I talked about this one:
>>>>>>>>>> https://svn.open-mpi.org/trac/mtt/wiki/ServerMaintenance
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> I'm guessing you would only be concerned with the below
>>>>>>>>> periodic-maintenance.pl script, which just runs
>>>>>>>>> ANALYZE/VACUUM queries. I think you can start that up
>>>>>>>>> whenever you want (and it should optimize the Reporter).
>>>>>>>>>
>>>>>>>>> https://svn.open-mpi.org/trac/mtt/browser/trunk/server/sql/cron/periodic-maintenance.pl
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -Ethan
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>> The only thing there are the regular
>>>>>>>>>>> mtt-results_at_[hidden] email alerts and some out-of-date
>>>>>>>>>>> DB monitoring junk. You can ignore that stuff.
>>>>>>>>>>>
>>>>>>>>>>> Josh, are there some nightly (DB
>>>>>>>>>>> pruning/cleaning/vacuuming?) cron jobs that Pasha should be
>>>>>>>>>>> running?
>>>>>>>>>>>
>>>>>>>>>>> -Ethan
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>
>>>>>>>>>>>> Ethan Mallove wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Pasha,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I thought this issue was solved in r1119 (see below). Do you
>>>>>>>>>>>>> have the latest mtt/server scripts?
>>>>>>>>>>>>>
>>>>>>>>>>>>> https://svn.open-mpi.org/trac/mtt/changeset/1119/trunk/server/php/submit
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> -Ethan
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, May/06/2008 03:26:43PM, Pavel Shamis (Pasha) wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> About the issue:
>>>>>>>>>>>>>> 1. On client side I see ""*** WARNING: MTTDatabase client
>>>>>>>>>>>>>> did not get a serial"
>>>>>>>>>>>>>> As result of the error some of MTT results is not visible
>>>>>>>>>>>>>> via the web reporter
>>>>>>>>>>>>>> 2. On server side I found follow error message:
>>>>>>>>>>>>>> [client 10.4.3.214] PHP Fatal error: Allowed memory size
>>>>>>>>>>>>>> of 33554432 bytes exhausted (tried to allocate 23592960
>>>>>>>>>>>>>> bytes) in
>>>>>>>>>>>>>> /.autodirect/swgwork/MTT/mtt/submit/index.php(79) :
>>>>>>>>>>>>>> eval()'d code on line 77515
>>>>>>>>>>>>>> [Mon May 05 19:26:05 2008] [notice] caught SIGTERM,
>>>>>>>>>>>>>> shutting down
>>>>>>>>>>>>>> [Mon May 05 19:30:54 2008] [notice] suEXEC mechanism
>>>>>>>>>>>>>> enabled (wrapper: /usr/sbin/suexec)
>>>>>>>>>>>>>> [Mon May 05 19:30:54 2008] [notice] Digest: generating
>>>>>>>>>>>>>> secret for digest authentication ...
>>>>>>>>>>>>>> [Mon May 05 19:30:54 2008] [notice] Digest: done
>>>>>>>>>>>>>> [Mon May 05 19:30:54 2008] [notice] LDAP: Built with
>>>>>>>>>>>>>> OpenLDAP LDAP SDK
>>>>>>>>>>>>>> [Mon May 05 19:30:54 2008] [notice] LDAP: SSL support
>>>>>>>>>>>>>> unavailable
>>>>>>>>>>>>>> My memory limit in php.ini file was set on 256MB !
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Any ideas ?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Pavel Shamis (Pasha)
>>>>>>>>>>>>>> Mellanox Technologies
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> mtt-users mailing list
>>>>>>>>>>>>>> mtt-users_at_[hidden]
>>>>>>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Pavel Shamis (Pasha)
>>>>>>>>>>>> Mellanox Technologies
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> mtt-users mailing list
>>>>>>>>>>>> mtt-users_at_[hidden]
>>>>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Pavel Shamis (Pasha)
>>>>>>>>>> Mellanox Technologies
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> mtt-users mailing list
>>>>>>>>>> mtt-users_at_[hidden]
>>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>>> Pavel Shamis (Pasha)
>>>>>>>> Mellanox Technologies
>>>>>>>>
>>>>>>>> Index: submit/index.php
>>>>>>>> ===================================================================
>>>>>>>>
>>>>>>>> --- submit/index.php (revision 1200)
>>>>>>>> +++ submit/index.php (working copy)
>>>>>>>> @@ -1,6 +1,7 @@
>>>>>>>> <?php
>>>>>>>> # Copyright (c) 2006 Cisco Systems, Inc. All rights
>>>>>>>> reserved.
>>>>>>>> # Copyright (c) 2006-2007 Sun Microsystems, Inc. All rights
>>>>>>>> reserved.
>>>>>>>> +# Copyright (c) 2008 Mellanox Technologies. All rights
>>>>>>>> reserved.
>>>>>>>>
>>>>>>>> #
>>>>>>>> #
>>>>>>>> @@ -24,8 +25,7 @@ if (file_exists("$topdir/config.inc")) {
>>>>>>>> ini_set("memory_limit", "32M");
>>>>>>>>
>>>>>>>> $topdir = '..';
>>>>>>>> -$ompi_home = '/l/osl/www/doc/www.open-mpi.org';
>>>>>>>> -include_once("$ompi_home/dbpassword.inc");
>>>>>>>> +include_once("$topdir/database.inc");
>>>>>>>> include_once("$topdir/reporter.inc");
>>>>>>>>
>>>>>>>>
>>>>>>>> @@ -1465,60 +1465,6 @@ function get_table_indexes($table_name,
>>>>>>>> return simple_select($sql_cmd);
>>>>>>>> }
>>>>>>>>
>>>>>>>> -# Function used to determine which _POST fields
>>>>>>>> -# to INSERT. Prevent non-existent fields from being
>>>>>>>> -# INSERTed
>>>>>>>> -function get_table_fields($table_name) {
>>>>>>>> -
>>>>>>>> - global $dbname;
>>>>>>>> - global $id;
>>>>>>>> -
>>>>>>>> - # These indexes are special in that they link phases
>>>>>>>> - # together and hence, can and do show up in _POST
>>>>>>>> - if ($table_name == "test_build")
>>>>>>>> - $special_indexes = array("mpi_install$id");
>>>>>>>> - elseif ($table_name == "test_run")
>>>>>>>> - $special_indexes = array("test_build$id");
>>>>>>>> -
>>>>>>>> - # Crude way to tell whether a field is an index
>>>>>>>> - $is_not_index_clause =
>>>>>>>> - "\n\t (table_name = '$table_name' AND NOT " .
>>>>>>>> - "\n\t (data_type = 'integer' AND " .
>>>>>>>> - "\n\t column_name ~ '_id$' AND " .
>>>>>>>> - "\n\t table_catalog = '$dbname'))";
>>>>>>>> -
>>>>>>>> - $is_special_index_clause =
>>>>>>>> - "\n\t (table_name = '$table_name' AND " .
>>>>>>>> - "\n\t (column_name = '$special_indexes[0]'))";
>>>>>>>> -
>>>>>>>> - $is_index_columns = array(
>>>>>>>> - "column_name",
>>>>>>>> - "data_type",
>>>>>>>> - "column_default");
>>>>>>>> -
>>>>>>>> - $sql_cmd = "\n SELECT " . join(",",$is_index_columns) .
>>>>>>>> - "\n\t FROM information_schema.columns WHERE " .
>>>>>>>> - "\n\t " .
>>>>>>>> - $is_not_index_clause . " OR " .
>>>>>>>> - $is_special_index_clause . ';';
>>>>>>>> -
>>>>>>>> - do_pg_connect();
>>>>>>>> -
>>>>>>>> - # This table will be easier to manage if it's
>>>>>>>> - # keyed by column, instead of index
>>>>>>>> - $tmp = array();
>>>>>>>> - $arr = array();
>>>>>>>> - $arr = select($sql_cmd);
>>>>>>>> -
>>>>>>>> - foreach ($is_index_columns as $col) {
>>>>>>>> - $tmp[$col] = array();
>>>>>>>> - for ($i = 0; $i < sizeof($arr); $i++) {
>>>>>>>> - $tmp[$col][] = $arr[$i][$col];
>>>>>>>> - }
>>>>>>>> - }
>>>>>>>> - return $tmp;
>>>>>>>> -}
>>>>>>>> -
>>>>>>>> #
>>>>>>>> # Useful display of all the parameters posted.
>>>>>>>> # Warning: this function could explode the memory footprint
>>>>>>>> causing the
>>>>>>>> @@ -1622,90 +1568,6 @@ function is_null_($var) {
>>>>>>>>
>>>>>>>> ######################################################################
>>>>>>>>
>>>>>>>>
>>>>>>>> -function do_pg_connect() {
>>>>>>>> -
>>>>>>>> - global $dbname;
>>>>>>>> - global $user;
>>>>>>>> - global $pass;
>>>>>>>> - global $pgsql_conn;
>>>>>>>> - static $connected = false;
>>>>>>>> -
>>>>>>>> - if (!$connected) {
>>>>>>>> - $pgsql_conn =
>>>>>>>> - pg_connect("host=localhost port=5432
>>>>>>>> dbname=$dbname user=$user password=$pass");
>>>>>>>> -
>>>>>>>> - # Exit if we cannot connect
>>>>>>>> - if (!$pgsql_conn) {
>>>>>>>> - mtt_abort("\nCould not connect to the $dbname
>>>>>>>> database; " .
>>>>>>>> - "submit this run later.");
>>>>>>>> - }
>>>>>>>> - else {
>>>>>>>> - $connected = true;
>>>>>>>> -
>>>>>>>> - # Serialize all transactions by default - Safer
>>>>>>>> that way.
>>>>>>>> - do_pg_query("SET SESSION CHARACTERISTICS AS
>>>>>>>> TRANSACTION ISOLATION LEVEL SERIALIZABLE", false);
>>>>>>>> - }
>>>>>>>> -
>>>>>>>> - # pg_set_error_verbosity($pgsql_conn,
>>>>>>>> PGSQL_ERRORS_VERBOSE); # PHP 5 needed
>>>>>>>> - # pg_trace($_ENV['HOME'] . "/pgsql.trace", 'w',
>>>>>>>> $pgsql_conn);
>>>>>>>> - # debug("\npg_options: " .
>>>>>>>> var_export(pg_options($pgsql_conn)));
>>>>>>>> - }
>>>>>>>> -}
>>>>>>>> -
>>>>>>>> -function do_pg_query($cmd, $silent) {
>>>>>>>> - $db_res = null;
>>>>>>>> -
>>>>>>>> - do_pg_connect();
>>>>>>>> -
>>>>>>>> - debug("\nSQL: $cmd\n");
>>>>>>>> - if (! ($db_res = pg_query($cmd))) {
>>>>>>>> - $out = "\nSQL QUERY: " . $cmd .
>>>>>>>> - "\nSQL ERROR: " . pg_last_error() .
>>>>>>>> - "\nSQL ERROR: " . pg_result_error();
>>>>>>>> -
>>>>>>>> - # Some errors are unsurprising, allow for silence in
>>>>>>>> - # such cases
>>>>>>>> - if (! $silent) {
>>>>>>>> - mtt_error($out);
>>>>>>>> - mtt_send_mail($out);
>>>>>>>> - }
>>>>>>>> - }
>>>>>>>> - debug("\nDatabase rows affected: " .
>>>>>>>> pg_affected_rows($db_res) . "\n");
>>>>>>>> -
>>>>>>>> - return $db_res;
>>>>>>>> -}
>>>>>>>> -
>>>>>>>> -# Fetch scalar value
>>>>>>>> -function select_scalar($cmd) {
>>>>>>>> -
>>>>>>>> - $set = array();
>>>>>>>> - $set = simple_select($cmd);
>>>>>>>> - return array_shift($set);
>>>>>>>> -}
>>>>>>>> -
>>>>>>>> -# Fetch 1D array
>>>>>>>> -function simple_select($cmd) {
>>>>>>>> -
>>>>>>>> - do_pg_connect();
>>>>>>>> -
>>>>>>>> - $rows = null;
>>>>>>>> -
>>>>>>>> - debug("\nSQL: $cmd\n");
>>>>>>>> - if (! ($result = pg_query($cmd))) {
>>>>>>>> - $out = "\nSQL QUERY: " . $cmd .
>>>>>>>> - "\nSQL ERROR: " . pg_last_error() .
>>>>>>>> - "\nSQL ERROR: " . pg_result_error();
>>>>>>>> - mtt_error($out);
>>>>>>>> - mtt_send_mail($out);
>>>>>>>> - }
>>>>>>>> - $max = pg_num_rows($result);
>>>>>>>> - for ($i = 0; $i < $max; ++$i) {
>>>>>>>> - $row = pg_fetch_array($result, $i, PGSQL_NUM);
>>>>>>>> - $rows[] = $row[0];
>>>>>>>> - }
>>>>>>>> - return $rows;
>>>>>>>> -}
>>>>>>>> -
>>>>>>>> # Fetch an associative hash (column name => value)
>>>>>>>> function associative_select($cmd) {
>>>>>>>>
>>>>>>>> @@ -1722,21 +1584,6 @@ function associative_select($cmd) {
>>>>>>>> return pg_fetch_array($result);
>>>>>>>> }
>>>>>>>>
>>>>>>>> -# Fetch 2D array
>>>>>>>> -function select($cmd) {
>>>>>>>> - do_pg_connect();
>>>>>>>> -
>>>>>>>> - debug("\nSQL: $cmd\n");
>>>>>>>> - if (! ($result = pg_query($cmd))) {
>>>>>>>> - $out = "\nSQL QUERY: " . $cmd .
>>>>>>>> - "\nSQL ERROR: " . pg_last_error() .
>>>>>>>> - "\nSQL ERROR: " . pg_result_error();
>>>>>>>> - mtt_error($out);
>>>>>>>> - mtt_send_mail($out);
>>>>>>>> - }
>>>>>>>> - return pg_fetch_all($result);
>>>>>>>> -}
>>>>>>>> -
>>>>>>>> ######################################################################
>>>>>>>>
>>>>>>>>
>>>>>>>> # Function for reporting errors back to the client
>>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Pavel Shamis (Pasha)
>>>>>> Mellanox Technologies
>>>>>>
>>>>>> _______________________________________________
>>>>>> mtt-users mailing list
>>>>>> mtt-users_at_[hidden]
>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Pavel Shamis (Pasha)
>>>> Mellanox Technologies
>>>
>>>
>>
>>
>> --
>> Pavel Shamis (Pasha)
>> Mellanox Technologies
>>
>> Index: database.inc
>> ===================================================================
>> --- database.inc (revision 1200)
>> +++ database.inc (working copy)
>> @@ -3,6 +3,7 @@
>> #
>> # Copyright (c) 2006 Sun Microsystems, Inc.
>> # All rights reserved.
>> +# Copyright (c) 2008 Mellanox Technologies. All rights reserved.
>> # $COPYRIGHT$
>> #
>> # Additional copyrights may follow
>> @@ -100,10 +101,13 @@ function do_pg_connect() {
>> $pgsql_conn =
>> pg_connect("host=localhost port=5432
>> dbname=$mtt_database_name user=$mtt_database_username
>> password=$mtt_database_password");
>> if (!$pgsql_conn) {
>> - print("\nCould not connect to '$dbname' database.");
>> - exit;
>> + mtt_abort("\nCould not connect to the $dbname database; " .
>> + "submit this run later.");
>> + } else {
>> + $connected = true;
>> +# Serialize all transactions by default - Safer that way.
>> + do_pg_query("SET SESSION CHARACTERISTICS AS TRANSACTION
>> ISOLATION LEVEL SERIALIZABLE", false);
>> }
>> - $connected = true;
>> }
>> }
>>
>> @@ -113,12 +117,17 @@ function do_pg_query($cmd, $silent) {
>>
>> $start = time();
>>
>> - debug_sql($cmd, 2);
>> + debug("\nSQL: $cmd\n");
>> if (! ($db_res = pg_query($cmd))) {
>> + $out = "\nSQL QUERY: " . $cmd .
>> + "\nSQL ERROR: " . pg_last_error() .
>> + "\nSQL ERROR: " . pg_result_error();
>> +
>> +# Some errors are unsurprising, allow for silence in
>> +# such cases
>> if (! $silent) {
>> - print("\npostgres: " .
>> - pg_last_error() . "\n" .
>> - pg_result_error());
>> + mtt_error($out);
>> + mtt_send_mail($out);
>> }
>> }
>>
>> @@ -137,21 +146,9 @@ function do_pg_query($cmd, $silent) {
>>
>> # Fetch scalar value
>> function select_scalar($cmd) {
>> - do_pg_connect();
>> -
>> - $rows = null;
>> -
>> - debug_sql($cmd, 2);
>> - if (! ($result = pg_query($cmd))) {
>> - print("\npostgres: " . pg_last_error() . "\n" .
>> - pg_result_error());
>> - }
>> - $max = pg_num_rows($result);
>> - for ($i = 0; $i < $max; ++$i) {
>> - $row = pg_fetch_array($result, $i, PGSQL_NUM);
>> - $rows[] = $row[0];
>> - }
>> - return array_shift($rows);
>> + $set = array();
>> + $set = simple_select($cmd);
>> + return array_shift($set);
>> }
>>
>> # Fetch 1D array
>> @@ -160,10 +157,13 @@ function simple_select($cmd) {
>>
>> $rows = null;
>>
>> - debug_sql($cmd, 2);
>> + debug("\nSQL: $cmd\n");
>> if (! ($result = pg_query($cmd))) {
>> - print("\npostgres: " . pg_last_error() . "\n" .
>> - pg_result_error());
>> + $out = "\nSQL QUERY: " . $cmd .
>> + "\nSQL ERROR: " . pg_last_error() .
>> + "\nSQL ERROR: " . pg_result_error();
>> + mtt_error($out);
>> + mtt_send_mail($out);
>> }
>> $max = pg_num_rows($result);
>> for ($i = 0; $i < $max; ++$i) {
>> @@ -177,10 +177,13 @@ function simple_select($cmd) {
>> function select($cmd) {
>> do_pg_connect();
>>
>> - debug_sql($cmd, 2);
>> + debug("\nSQL: $cmd\n");
>> if (! ($result = pg_query($cmd))) {
>> - print("\npostgres: " . pg_last_error() . "\n" .
>> - pg_result_error());
>> + $out = "\nSQL QUERY: " . $cmd .
>> + "\nSQL ERROR: " . pg_last_error() .
>> + "\nSQL ERROR: " . pg_result_error();
>> + mtt_error($out);
>> + mtt_send_mail($out);
>> }
>> return pg_fetch_all($result);
>> }
>> Index: submit/index.php
>> ===================================================================
>> --- submit/index.php (revision 1200)
>> +++ submit/index.php (working copy)
>> @@ -1,6 +1,7 @@
>> <?php
>> # Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
>> # Copyright (c) 2006-2007 Sun Microsystems, Inc. All rights reserved.
>> +# Copyright (c) 2008 Mellanox Technologies. All rights reserved.
>>
>> #
>> #
>> @@ -24,8 +25,7 @@ if (file_exists("$topdir/config.inc")) {
>> ini_set("memory_limit", "32M");
>>
>> $topdir = '..';
>> -$ompi_home = '/l/osl/www/doc/www.open-mpi.org';
>> -include_once("$ompi_home/dbpassword.inc");
>> +include_once("$topdir/database.inc");
>> include_once("$topdir/reporter.inc");
>>
>>
>> @@ -1465,60 +1465,6 @@ function get_table_indexes($table_name,
>> return simple_select($sql_cmd);
>> }
>>
>> -# Function used to determine which _POST fields
>> -# to INSERT. Prevent non-existent fields from being
>> -# INSERTed
>> -function get_table_fields($table_name) {
>> -
>> - global $dbname;
>> - global $id;
>> -
>> - # These indexes are special in that they link phases
>> - # together and hence, can and do show up in _POST
>> - if ($table_name == "test_build")
>> - $special_indexes = array("mpi_install$id");
>> - elseif ($table_name == "test_run")
>> - $special_indexes = array("test_build$id");
>> -
>> - # Crude way to tell whether a field is an index
>> - $is_not_index_clause =
>> - "\n\t (table_name = '$table_name' AND NOT " .
>> - "\n\t (data_type = 'integer' AND " .
>> - "\n\t column_name ~ '_id$' AND " .
>> - "\n\t table_catalog = '$dbname'))";
>> -
>> - $is_special_index_clause =
>> - "\n\t (table_name = '$table_name' AND " .
>> - "\n\t (column_name = '$special_indexes[0]'))";
>> -
>> - $is_index_columns = array(
>> - "column_name",
>> - "data_type",
>> - "column_default");
>> -
>> - $sql_cmd = "\n SELECT " . join(",",$is_index_columns) .
>> - "\n\t FROM information_schema.columns WHERE " .
>> - "\n\t " .
>> - $is_not_index_clause . " OR " .
>> - $is_special_index_clause . ';';
>> -
>> - do_pg_connect();
>> -
>> - # This table will be easier to manage if it's
>> - # keyed by column, instead of index
>> - $tmp = array();
>> - $arr = array();
>> - $arr = select($sql_cmd);
>> -
>> - foreach ($is_index_columns as $col) {
>> - $tmp[$col] = array();
>> - for ($i = 0; $i < sizeof($arr); $i++) {
>> - $tmp[$col][] = $arr[$i][$col];
>> - }
>> - }
>> - return $tmp;
>> -}
>> -
>> #
>> # Useful display of all the parameters posted.
>> # Warning: this function could explode the memory footprint causing the
>> @@ -1622,90 +1568,6 @@ function is_null_($var) {
>>
>> ######################################################################
>>
>> -function do_pg_connect() {
>> -
>> - global $dbname;
>> - global $user;
>> - global $pass;
>> - global $pgsql_conn;
>> - static $connected = false;
>> -
>> - if (!$connected) {
>> - $pgsql_conn =
>> - pg_connect("host=localhost port=5432 dbname=$dbname
>> user=$user password=$pass");
>> -
>> - # Exit if we cannot connect
>> - if (!$pgsql_conn) {
>> - mtt_abort("\nCould not connect to the $dbname database; " .
>> - "submit this run later.");
>> - }
>> - else {
>> - $connected = true;
>> -
>> - # Serialize all transactions by default - Safer that way.
>> - do_pg_query("SET SESSION CHARACTERISTICS AS TRANSACTION
>> ISOLATION LEVEL SERIALIZABLE", false);
>> - }
>> -
>> - # pg_set_error_verbosity($pgsql_conn, PGSQL_ERRORS_VERBOSE);
>> # PHP 5 needed
>> - # pg_trace($_ENV['HOME'] . "/pgsql.trace", 'w', $pgsql_conn);
>> - # debug("\npg_options: " .
>> var_export(pg_options($pgsql_conn)));
>> - }
>> -}
>> -
>> -function do_pg_query($cmd, $silent) {
>> - $db_res = null;
>> -
>> - do_pg_connect();
>> -
>> - debug("\nSQL: $cmd\n");
>> - if (! ($db_res = pg_query($cmd))) {
>> - $out = "\nSQL QUERY: " . $cmd .
>> - "\nSQL ERROR: " . pg_last_error() .
>> - "\nSQL ERROR: " . pg_result_error();
>> -
>> - # Some errors are unsurprising, allow for silence in
>> - # such cases
>> - if (! $silent) {
>> - mtt_error($out);
>> - mtt_send_mail($out);
>> - }
>> - }
>> - debug("\nDatabase rows affected: " . pg_affected_rows($db_res) .
>> "\n");
>> -
>> - return $db_res;
>> -}
>> -
>> -# Fetch scalar value
>> -function select_scalar($cmd) {
>> -
>> - $set = array();
>> - $set = simple_select($cmd);
>> - return array_shift($set);
>> -}
>> -
>> -# Fetch 1D array
>> -function simple_select($cmd) {
>> -
>> - do_pg_connect();
>> -
>> - $rows = null;
>> -
>> - debug("\nSQL: $cmd\n");
>> - if (! ($result = pg_query($cmd))) {
>> - $out = "\nSQL QUERY: " . $cmd .
>> - "\nSQL ERROR: " . pg_last_error() .
>> - "\nSQL ERROR: " . pg_result_error();
>> - mtt_error($out);
>> - mtt_send_mail($out);
>> - }
>> - $max = pg_num_rows($result);
>> - for ($i = 0; $i < $max; ++$i) {
>> - $row = pg_fetch_array($result, $i, PGSQL_NUM);
>> - $rows[] = $row[0];
>> - }
>> - return $rows;
>> -}
>> -
>> # Fetch an associative hash (column name => value)
>> function associative_select($cmd) {
>>
>> @@ -1722,21 +1584,6 @@ function associative_select($cmd) {
>> return pg_fetch_array($result);
>> }
>>
>> -# Fetch 2D array
>> -function select($cmd) {
>> - do_pg_connect();
>> -
>> - debug("\nSQL: $cmd\n");
>> - if (! ($result = pg_query($cmd))) {
>> - $out = "\nSQL QUERY: " . $cmd .
>> - "\nSQL ERROR: " . pg_last_error() .
>> - "\nSQL ERROR: " . pg_result_error();
>> - mtt_error($out);
>> - mtt_send_mail($out);
>> - }
>> - return pg_fetch_all($result);
>> -}
>> -
>> ######################################################################
>>
>> # Function for reporting errors back to the client
>
>