[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm /lonnet/perl lonnet.pm

raeburn raeburn at source.lon-capa.org
Thu Jan 28 17:12:54 EST 2021


raeburn		Thu Jan 28 22:12:54 2021 EDT

  Modified files:              
    /loncom/interface	loncommon.pm 
    /loncom/lonnet/perl	lonnet.pm 
  Log:
  - Switching user sessions for users from other institutions on next access
    - Check if domain config for offload of users from other institutions 
      is in effect when finding a server to which to offload a user session.
    - If current server's offload targets all set to switch on next access
      set the offload target to the least loaded server in the user's domain.
  
  
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.1351 loncom/interface/loncommon.pm:1.1352
--- loncom/interface/loncommon.pm:1.1351	Sat Jan  2 21:07:36 2021
+++ loncom/interface/loncommon.pm	Thu Jan 28 22:12:53 2021
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.1351 2021/01/02 21:07:36 raeburn Exp $
+# $Id: loncommon.pm,v 1.1352 2021/01/28 22:12:53 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -8599,7 +8599,7 @@
                 unless (&Apache::lonnet::allowed('mau',$dom_in_use)) {
                     my %domdefs = &Apache::lonnet::get_domain_defaults($dom_in_use);
                     my $lonhost = $Apache::lonnet::perlvar{'lonHostID'};
-                    my $offload;
+                    my ($offload,$offloadoth);
                     if (ref($domdefs{'offloadnow'}) eq 'HASH') {
                         if ($domdefs{'offloadnow'}{$lonhost}) {
                             $offload = 1;
@@ -8612,6 +8612,7 @@
                                     (!(($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')))) {
                                     unless (&Apache::lonnet::shared_institution($env{'user.domain'})) {
                                         $offload = 1;
+                                        $offloadoth = 1;
                                         $dom_in_use = $env{'user.domain'};
                                     }
                                 }
@@ -8620,6 +8621,12 @@
                     }
                     if ($offload) {
                         my $newserver = &Apache::lonnet::spareserver(30000,undef,1,$dom_in_use);
+                        if (($newserver eq '') && ($offloadoth)) {
+                            my @domains = &Apache::lonnet::current_machine_domains();
+                            if (($dom_in_use ne '') && (!grep(/^\Q$dom_in_use\E$/, at domains))) { 
+                                ($newserver) = &Apache::lonnet::choose_server($dom_in_use);
+                            }
+                        }
                         if (($newserver) && ($newserver ne $lonhost)) {
                             my $numsec = 5;
                             my $timeout = $numsec * 1000;
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.1438 loncom/lonnet/perl/lonnet.pm:1.1439
--- loncom/lonnet/perl/lonnet.pm:1.1438	Sun Jan 17 01:58:56 2021
+++ loncom/lonnet/perl/lonnet.pm	Thu Jan 28 22:12:54 2021
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.1438 2021/01/17 01:58:56 raeburn Exp $
+# $Id: lonnet.pm,v 1.1439 2021/01/28 22:12:54 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1445,6 +1445,15 @@
             $canhost = 0;
         }
     }
+    if ($canhost) {
+        if (ref($defdomdefaults{'offloadoth'}) eq 'HASH') {
+            if ($defdomdefaults{'offloadoth'}{$try_server}) {
+                unless (&shared_institution($udom,$try_server)) {
+                    $canhost = 0;
+                }
+            }
+        }
+    }
     if (($canhost) && ($uint_dom)) {
         my @intdoms;
         my $internet_names = &get_internet_names($try_server);
@@ -2689,6 +2698,9 @@
         if (ref($domconfig{'usersessions'}{'offloadnow'}) eq 'HASH') {
             $domdefaults{'offloadnow'} = $domconfig{'usersessions'}{'offloadnow'};
         }
+        if (ref($domconfig{'usersessions'}{offloadoth'} eq 'HASH') {
+            $domdefaults{'offloadoth'} = $domconfig{'usersessions'}{'offloadoth'};
+        }
     }
     if (ref($domconfig{'selfenrollment'}) eq 'HASH') {
         if (ref($domconfig{'selfenrollment'}{'admin'}) eq 'HASH') {
@@ -14217,9 +14229,12 @@
 }
 
 sub shared_institution {
-    my ($dom) = @_;
+    my ($dom,$lonhost) = @_;
+    if ($lonhost eq '') {
+        $lonhost = $perlvar{'lonHostID'};
+    }
     my $same_intdom;
-    my $hostintdom = &internet_dom($perlvar{'lonHostID'});
+    my $hostintdom = &internet_dom($lonhost);
     if ($hostintdom ne '') {
         my %iphost = &get_iphost();
         my $primary_id = &domain($dom,'primary');




More information about the LON-CAPA-cvs mailing list