[X2Go-Commits] [x2goserver] 03/03: x2goserver/sbin/x2gocleansessions: rework comment explaining what a session without an agent PID entry actually means and use the value from x2gocleansessions.agent-startup-time (if valid) instead of a hardcoded value.

git-admin at x2go.org git-admin at x2go.org
Fri Feb 28 15:37:02 CET 2020


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

x2go pushed a commit to branch master
in repository x2goserver.

commit 1a0fc87a2956f9dd50617f115f430cd0596f16ef
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Fri Feb 28 15:20:33 2020 +0100

    x2goserver/sbin/x2gocleansessions: rework comment explaining what a session without an agent PID entry actually means and use the value from x2gocleansessions.agent-startup-time (if valid) instead of a hardcoded value.
---
 debian/changelog                  |  4 ++++
 x2goserver/sbin/x2gocleansessions | 18 +++++++++++++++---
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 5b43f0fc..79d7de01 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -174,6 +174,10 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium
       the database.
     - x2goserver/sbin/x2gocleansessions: fetch and sanity-check
       x2gocleansessions.agent-startup-time from config file.
+    - x2goserver/sbin/x2gocleansessions: rework comment explaining what a
+      session without an agent PID entry actually means and use the value from
+      x2gocleansessions.agent-startup-time (if valid) instead of a hardcoded
+      value.
   * debian/control:
     + Build-depend upon lsb-release for distro version detection.
   * debian/x2goserver.manpages:
diff --git a/x2goserver/sbin/x2gocleansessions b/x2goserver/sbin/x2gocleansessions
index 047328c9..686a3f4e 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -204,9 +204,21 @@ elsif ($pid == 0 )
 
 			my @sinfo=split('\\|',"@outp[$i]");
 
-			# 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_time{@sinfo[1]})) && ((time () - $remembered_sessions_status_since_time{@sinfo[1]}) >= 10))
+			# Clean up invalid sessions (i.e., those for which nxagent failed to spawn to begin with)
+			# from the session database, if the status didn't change for more than X seconds.
+			# The agent PID field (@sinfo[0]) is currently only updated through the createsession
+			# function, which assigns a value.
+			# This value is *not* automatically removed from the DB if the process dies, so,
+			# crucially, the only situations in which the agent PID can be empty/NULL are the early
+			# stage of session creation, specifically:
+			#   - between calling insertsession (which creates a new session entry) and createsession
+			#     (which populates a session entry with additional data, including the agent PID)
+			#   - if spawning nxagent never succeeded, which is really just a special case of the
+			#     above, since insertsession was called but createsession never will be.
+			# Originally, the "allowed nxagent startup time" was hardcoded to 10 seconds, but we
+			# encountered situations/machines that need much longer to spawn nxagent, so this was
+			# made configurable.
+			if ((!@sinfo[0]) && (defined ($remembered_sessions_status_since_time{@sinfo[1]})) && ((time () - $remembered_sessions_status_since_time{@sinfo[1]}) >= $agent_startup_time))
 			{
 				dbsys_rmsessionsroot(@sinfo[1]);
 				next;

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git


More information about the x2go-commits mailing list