Diff for /loncom/lonsql between versions 1.56 and 1.60

version 1.56, 2003/07/25 17:07:06 version 1.60, 2004/05/11 21:08:20
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 251  unless ($dbh = DBI->connect("DBI:mysql:l Line 216  unless ($dbh = DBI->connect("DBI:mysql:l
     my $subj="LON: $perlvar{'lonHostID'} Cannot connect to database!";      my $subj="LON: $perlvar{'lonHostID'} Cannot connect to database!";
     system("echo 'Cannot connect to MySQL database!' |".      system("echo 'Cannot connect to MySQL database!' |".
            " mailto $emailto -s '$subj' > /dev/null");             " mailto $emailto -s '$subj' > /dev/null");
   
       open(SMP,'>/home/httpd/html/lon-status/mysql.txt');
       print SMP 'time='.time.'&mysql=defunct'."\n";
       close(SMP);
   
     exit 1;      exit 1;
 } else {  } else {
     $dbh->disconnect;      $dbh->disconnect;
Line 312  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 383  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 443  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 506  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 939  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 950  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 960  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.56  
changed lines
  Added in v.1.60


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>