Diff for /loncom/lonsql between versions 1.57 and 1.61

version 1.57, 2003/07/30 16:49:27 version 1.61, 2004/05/20 14:15:29
Line 41  Note that a lonsql.pid file contains the Line 41  Note that a lonsql.pid file contains the
   
 =head1 OVERVIEW  =head1 OVERVIEW
   
 The SQL database in LON-CAPA is used for catalog searches against  
 resource metadata only. The authoritative version of the resource  
 metadata is an XML-file on the normal file system (same file name as  
 resource plus ".meta"). The SQL-database is a cache of these files,  
 and can be reconstructed from the XML files at any time.  
   
 The current database is implemented assuming a non-adjustable  
 architecture involving these data fields (specific to each version of  
 a resource).  
   
 =over 4  
   
 =item * title  
   
 =item * author  
   
 =item * subject  
   
 =item * notes  
   
 =item * abstract  
   
 =item * mime  
   
 =item * language  
   
 =item * creationdate  
   
 =item * lastrevisiondate  
   
 =item * owner  
   
 =item * copyright   
   
 =back   
   
 =head2 Purpose within LON-CAPA  =head2 Purpose within LON-CAPA
   
 LON-CAPA is meant to distribute A LOT of educational content to A LOT  LON-CAPA is meant to distribute A LOT of educational content to A LOT
Line 139  use strict; Line 103  use strict;
   
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA::Configuration;  use LONCAPA::Configuration;
   use LONCAPA::lonmetadata();
   
 use IO::Socket;  use IO::Socket;
 use Symbol;  use Symbol;
Line 317  my $execdir=$perlvar{'lonDaemons'}; Line 282  my $execdir=$perlvar{'lonDaemons'};
 open (PIDSAVE,">$execdir/logs/lonsql.pid");  open (PIDSAVE,">$execdir/logs/lonsql.pid");
 print PIDSAVE "$$\n";  print PIDSAVE "$$\n";
 close(PIDSAVE);  close(PIDSAVE);
 &logthis("<font color=red>CRITICAL: ---------- Starting ----------</font>");  &logthis("<font color='red'>CRITICAL: ---------- Starting ----------</font>");
   
 #  #
 # Ignore signals generated during initial startup  # Ignore signals generated during initial startup
Line 388  sub make_new_child { Line 353  sub make_new_child {
                                     $perlvar{'lonSqlAccess'},                                      $perlvar{'lonSqlAccess'},
                                     { RaiseError =>0,PrintError=>0})) {                                       { RaiseError =>0,PrintError=>0})) { 
             sleep(10+int(rand(20)));              sleep(10+int(rand(20)));
             &logthis("<font color=blue>WARNING: Couldn't connect to database".              &logthis("<font color='blue'>WARNING: Couldn't connect to database".
                      ": $@</font>");                       ": $@</font>");
                      #  "($st secs): $@</font>");                       #  "($st secs): $@</font>");
             print "database handle error\n";              print "database handle error\n";
Line 416  sub make_new_child { Line 381  sub make_new_child {
     $queryid .= $run;      $queryid .= $run;
     print $client "$queryid\n";      print $client "$queryid\n";
     #      #
     &logthis("QUERY: $query - $arg1 - $arg2 - $arg3");      # &logthis("QUERY: $query - $arg1 - $arg2 - $arg3");
     sleep 1;      sleep 1;
             #              #
             my $result='';              my $result='';
Line 448  sub make_new_child { Line 413  sub make_new_child {
             # result does not need to be escaped because it has already been              # result does not need to be escaped because it has already been
             # escaped.              # escaped.
             #$result=&escape($result);              #$result=&escape($result);
             # reply with result, append \n unless already there  
     $result.="\n" unless ($result=~/\n$/);  
             &reply("queryreply:$queryid:$result",$conserver);              &reply("queryreply:$queryid:$result",$conserver);
         }          }
         # tidy up gracefully and finish          # tidy up gracefully and finish
         #          #
         # close the database handle          # close the database handle
  $dbh->disconnect   $dbh->disconnect
             or &logthis("<font color=blue>WARNING: Couldn't disconnect".              or &logthis("<font color='blue'>WARNING: Couldn't disconnect".
                         " from database  $DBI::errstr : $@</font>");                          " from database  $DBI::errstr : $@</font>");
         # this exit is VERY important, otherwise the child will become          # this exit is VERY important, otherwise the child will become
         # a producer of more and more children, forking yourself into          # a producer of more and more children, forking yourself into
Line 511  sub do_sql_query { Line 474  sub do_sql_query {
         #prepare and execute the query          #prepare and execute the query
         my $sth = $dbh->prepare($query);          my $sth = $dbh->prepare($query);
         unless ($sth->execute()) {          unless ($sth->execute()) {
             &logthis("<font color=blue>WARNING: ".              &logthis('<font color="blue">'.
                      "Could not retrieve from database: $@</font>");                       'WARNING: Could not retrieve from database:'.
                        $sth->errstr().'</font>');
         } else {          } else {
             my $aref=$sth->fetchall_arrayref;              my $aref=$sth->fetchall_arrayref;
             foreach my $row (@$aref) {              foreach my $row (@$aref) {
Line 944  sub HUNTSMAN {                      # si Line 908  sub HUNTSMAN {                      # si
     kill 'INT' => keys %children;      kill 'INT' => keys %children;
     my $execdir=$perlvar{'lonDaemons'};      my $execdir=$perlvar{'lonDaemons'};
     unlink("$execdir/logs/lonsql.pid");      unlink("$execdir/logs/lonsql.pid");
     &logthis("<font color=red>CRITICAL: Shutting down</font>");      &logthis("<font color='red'>CRITICAL: Shutting down</font>");
     $unixsock = "mysqlsock";      $unixsock = "mysqlsock";
     my $port="$perlvar{'lonSockDir'}/$unixsock";      my $port="$perlvar{'lonSockDir'}/$unixsock";
     unlink($port);      unlink($port);
Line 955  sub HUPSMAN {                      # sig Line 919  sub HUPSMAN {                      # sig
     local($SIG{CHLD}) = 'IGNORE';  # we're going to kill our children      local($SIG{CHLD}) = 'IGNORE';  # we're going to kill our children
     kill 'INT' => keys %children;      kill 'INT' => keys %children;
     close($server);                # free up socket      close($server);                # free up socket
     &logthis("<font color=red>CRITICAL: Restarting</font>");      &logthis("<font color='red'>CRITICAL: Restarting</font>");
     my $execdir=$perlvar{'lonDaemons'};      my $execdir=$perlvar{'lonDaemons'};
     $unixsock = "mysqlsock";      $unixsock = "mysqlsock";
     my $port="$perlvar{'lonSockDir'}/$unixsock";      my $port="$perlvar{'lonSockDir'}/$unixsock";
Line 965  sub HUPSMAN {                      # sig Line 929  sub HUPSMAN {                      # sig
   
 sub DISCONNECT {  sub DISCONNECT {
     $dbh->disconnect or       $dbh->disconnect or 
     &logthis("<font color=blue>WARNING: Couldn't disconnect from database ".      &logthis("<font color='blue'>WARNING: Couldn't disconnect from database ".
              " $DBI::errstr : $@</font>");               " $DBI::errstr : $@</font>");
     exit;      exit;
 }  }
   
   
   
   
   
   
   
   
   
   
   
 # ----------------------------------- POD (plain old documentation, CPAN style)  
   
 =pod  =pod
   
 =back  =back

Removed from v.1.57  
changed lines
  Added in v.1.61


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.