[X2Go-Commits] [x2goserver] 03/04: x2goserver/sbin/x2gocleansessions: rename %remembered_sessions_status_since to %remembered_sessions_status_since_time.

git-admin at x2go.org git-admin at x2go.org
Mon Jun 22 00:13:18 CEST 2015


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch release/4.0.1.x
in repository x2goserver.

commit eeddf466f5bdaa42d4048e3b9565610c1af274f9
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Sun Jun 21 22:55:53 2015 +0200

    x2goserver/sbin/x2gocleansessions: rename %remembered_sessions_status_since to %remembered_sessions_status_since_time.
    
    Add %remembered_sessions_status_since_iterations that will come in handy
    for the next change.
---
 debian/changelog                  |    5 +++++
 x2goserver/sbin/x2gocleansessions |   28 ++++++++++++++++++----------
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 5c7dce6..cb9c2cc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -29,6 +29,11 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low
       include a timestamp instead of the "iteration count multiplied by two"
       value. Compare timestamps to see if killing hanging nxagent processes is
       necessary.
+    - x2goserver/sbin/x2gocleansessions: rename
+      %remembered_sessions_status_since to
+      %remembered_sessions_status_since_time. Add
+      %remembered_sessions_status_since_iterations that will come in handy for
+      the next change.
   * x2goserver.spec:
     - Add sudo and logcheck as BuildRequires and Requires. Don't own
       directories that are owned by sudo and logcheck. Logcheck is not
diff --git a/x2goserver/sbin/x2gocleansessions b/x2goserver/sbin/x2gocleansessions
index 7131750..1d82b6e 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -158,7 +158,8 @@ elsif ($pid == 0 )
 	$SIG{CHLD} = sub { wait };
 
 	my %remembered_sessions_status = ();
-	my %remembered_sessions_status_since = ();
+	my %remembered_sessions_status_since_time = ();
+	my %remembered_sessions_status_since_iterations = ();
 
 	while(sleep 2)
 	{
@@ -166,12 +167,13 @@ elsif ($pid == 0 )
 		my @outp=split("\n","$outp");
 
 		# forget earlier remembered blocked sessions
-		while ( my ($session, $remembered_since) = each(%remembered_sessions_status_since) )
+		while ( my ($session, $remembered_since) = each(%remembered_sessions_status_since_time) )
 		{
 			if (! join(',', @outp)=~m/$session/)
 			{
 				delete $remembered_sessions_status{$session};
-				delete $remembered_sessions_status_since{$session};
+				delete $remembered_sessions_status_since_time{$session};
+				delete $remembered_sessions_status_since_iterations{$session};
 			}
 		}
 
@@ -182,19 +184,25 @@ elsif ($pid == 0 )
 
 			# Clean up invalid sessions (i.e., those for which no nxagent process is running anymore)
 			# from the session database, if the status didn't change for more than 10 seconds.
-			if ((!@sinfo[0]) && (defined ($remembered_sessions_status_since{@sinfo[1]})) && ((gmtime (time) - $remembered_sessions_status_since{@sinfo[1]}) >= 10))
+			if ((!@sinfo[0]) && (defined ($remembered_sessions_status_since_time{@sinfo[1]})) && ((gmtime (time) - $remembered_sessions_status_since_time{@sinfo[1]}) >= 10))
 			{
 				dbsys_rmsessionsroot(@sinfo[1]);
 				next;
 			}
 
-			# Record the status of previously unseen sessions and the current time.
-			if (!(defined ($remembered_sessions_status_since{@sinfo[1]})) || ($remembered_sessions_status{@sinfo[1]} !~ m/@sinfo[4]/)) {
+			# Record the status of either previously unseen or status-changing sessions and the current time.
+			if (!(defined ($remembered_sessions_status_since_time{@sinfo[1]})) || ($remembered_sessions_status{@sinfo[1]} !~ m/@sinfo[4]/)) {
 				$remembered_sessions_status{@sinfo[1]} = @sinfo[4];
-				$remembered_sessions_status_since{@sinfo[1]} = gmtime (time);
+				$remembered_sessions_status_since_time{@sinfo[1]} = gmtime (time);
+				$remembered_sessions_status_since_iterations{@sinfo[1]} = 0;
+			}
+			else {
+				# Current status matches previously seen status and a time is recorded.
+				# Increment counter for this session.
+				++$remembered_sessions_status_since_iterations{$sinfo[1]};
 			}
 
-			#print @sinfo[1], ': ', $remembered_sessions_status_since{@sinfo[1]},' ',$remembered_sessions_status{@sinfo[1]},"\n";
+			#print @sinfo[1], ': ', $remembered_sessions_status_since_time{@sinfo[1]},' (' , $remembered_sessions_status_since_iterations{@sinfo[1]} ,'iterations) ',$remembered_sessions_status{@sinfo[1]},"\n";
 
 			# Update current status once per session. Avoids race conditions.
 			@sinfo[4] = system_capture_stdout_output ("$x2go_lib_path/x2gogetstatus", "@sinfo[1]");
@@ -203,12 +211,12 @@ elsif ($pid == 0 )
 			{
 				syslog('debug', "@sinfo[1] is blocked");
 				# Kill the process if blocked for more than 20 seconds.
-				if ((gmtime (time) - $remembered_sessions_status_since{@sinfo[1]}) >= 20)
+				if ((gmtime (time) - $remembered_sessions_status_since_time{@sinfo[1]}) >= 20)
 				{
 					# send SIGKILL to dangling X-server processes
 					syslog('warning', "@sinfo[1]: found stale X-server process (@sinfo[0]), sending SIGKILL");
 					system("kill", "-9", "@sinfo[0]");
-					delete $remembered_sessions_status_since{@sinfo[1]};
+					delete $remembered_sessions_status_since_time{@sinfo[1]};
 				}
 				my $display = @sinfo[2];
 				if (-S "/tmp/.X11-unix/X$display") {

--
Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git


More information about the x2go-commits mailing list