[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:33 CEST 2015
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2goserver.
commit f13c44b590521b3b41dca6dfc079c7906c631894
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.
Cherry-picked from release/4.0.1.x branch.
---
debian/changelog | 5 +++++
x2goserver/sbin/x2gocleansessions | 29 +++++++++++++++++++----------
2 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 0ddd829..13e7288 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -198,6 +198,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 8e374aa..7d28c05 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -146,7 +146,9 @@ 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 = ();
+
my $last_reniced = 0;
my $user;
@@ -158,12 +160,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};
}
}
@@ -174,19 +177,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]");
@@ -195,12 +204,12 @@ elsif ($pid == 0 )
{
log_message('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
log_message('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