This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch release/4.0.1.x in repository x2goserver. from 8592542 x2goserver/sbin/x2gocleansessions: give suspended-but-running sessions a grace period of one iteration. new 4ecf8b4 x2goserver/sbin/x2gocleansessions: fix ugly missing whitespace. new 27b0fd7 x2goserver/sbin/x2gocleansessions: move up session status sync a bit, don't update session state when session has been removed from the database. new c968382 x2goserver/sbin/x2gocleansessions: unify log messages. Move dangling line around. new 9db387f x2goserver/sbin/x2gocleansessions: whitespace only. new 6203e20 x2goserver/sbin/x2gocleansessions: also delete entries in the other, overlooked hashes. new 0954384 x2goserver/sbin/x2gocleansessions: move socket and lock file cleanup into time-based block for finished/failed sessions. new eff9f17 x2goserver/sbin/x2gocleansessions: add @remembered_finished_sessions array. The 7 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: debian/changelog | 15 ++++++++ x2goserver/sbin/x2gocleansessions | 72 +++++++++++++++++++++++-------------- 2 files changed, 61 insertions(+), 26 deletions(-) -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
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 4ecf8b467b893867c54d217f0ea29af1938d46a1 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jun 22 17:34:51 2015 +0200 x2goserver/sbin/x2gocleansessions: fix ugly missing whitespace. --- debian/changelog | 1 + x2goserver/sbin/x2gocleansessions | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 0458a3d..96d6405 100644 --- a/debian/changelog +++ b/debian/changelog @@ -36,6 +36,7 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low the next change. - x2goserver/sbin/x2gocleansessions: give suspended-but-running sessions a grace period of one iteration. Fixes: #888. + - x2goserver/sbin/x2gocleansessions: fix ugly missing whitespace. * 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 40aecdb..b2cf766 100755 --- a/x2goserver/sbin/x2gocleansessions +++ b/x2goserver/sbin/x2gocleansessions @@ -207,7 +207,7 @@ elsif ($pid == 0 ) # Update current status once per session. Avoids race conditions. @sinfo[4] = system_capture_stdout_output ("$x2go_lib_path/x2gogetstatus", "@sinfo[1]"); - if (@sinfo[4]eq 'F') + if (@sinfo[4] eq 'F') { syslog('debug', "@sinfo[1] is blocked"); # Kill the process if blocked for more than 20 seconds. -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
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 27b0fd76c4428ca45f30eeb577b1aafb205083c9 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jun 22 23:48:45 2015 +0200 x2goserver/sbin/x2gocleansessions: move up session status sync a bit, don't update session state when session has been removed from the database. --- debian/changelog | 3 +++ x2goserver/sbin/x2gocleansessions | 12 +++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 96d6405..72803d9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -37,6 +37,9 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low - x2goserver/sbin/x2gocleansessions: give suspended-but-running sessions a grace period of one iteration. Fixes: #888. - x2goserver/sbin/x2gocleansessions: fix ugly missing whitespace. + - x2goserver/sbin/x2gocleansessions: move up session status sync a bit, + don't update session state when session has been removed from the + database. * 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 b2cf766..5bedba0 100755 --- a/x2goserver/sbin/x2gocleansessions +++ b/x2goserver/sbin/x2gocleansessions @@ -190,6 +190,15 @@ elsif ($pid == 0 ) next; } + # Update current status once per session. Avoids race conditions. + my $current_status = system_capture_stdout_output ("$x2go_lib_path/x2gogetstatus", "@sinfo[1]"); + if (length ($current_status)) { + @sinfo[4] = $current_status; + } + else { + syslog ('debug', "@sinfo[1]: removed from database, not updating status."); + } + # 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]; @@ -204,9 +213,6 @@ elsif ($pid == 0 ) #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]"); - if (@sinfo[4] eq 'F') { syslog('debug', "@sinfo[1] is blocked"); -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
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 c9683820054f6246e870251e3049a6a8ab56cf6e Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jun 22 23:55:34 2015 +0200 x2goserver/sbin/x2gocleansessions: unify log messages. Move dangling line around. --- debian/changelog | 2 ++ x2goserver/sbin/x2gocleansessions | 21 ++++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index 72803d9..c0f4530 100644 --- a/debian/changelog +++ b/debian/changelog @@ -40,6 +40,8 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low - x2goserver/sbin/x2gocleansessions: move up session status sync a bit, don't update session state when session has been removed from the database. + - x2goserver/sbin/x2gocleansessions: unify log messages. Move dangling + line around. * 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 5bedba0..a372ac9 100755 --- a/x2goserver/sbin/x2gocleansessions +++ b/x2goserver/sbin/x2gocleansessions @@ -215,10 +215,12 @@ elsif ($pid == 0 ) if (@sinfo[4] eq 'F') { - syslog('debug', "@sinfo[1] is blocked"); + syslog ('debug', "@sinfo[1]: is blocked, adding to finished list."); + # Kill the process if blocked for more than 20 seconds. if ((gmtime (time) - $remembered_sessions_status_since_time{@sinfo[1]}) >= 20) { + syslog ('debug', "@sinfo[1]: blocked for more than 20 seconds."); # 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]"); @@ -227,12 +229,12 @@ elsif ($pid == 0 ) my $display = @sinfo[2]; if (-S "/tmp/.X11-unix/X$display") { # remove the NX-X11 socket file (as the agent will not have managed after a kill -9) - syslog('warning', "@sinfo[1], pid @sinfo[0] cleaning up stale X11 socket file: /tmp/.X11-unix/X$display"); + syslog('warning', "@sinfo[1], pid @sinfo[0]: cleaning up stale X11 socket file: /tmp/.X11-unix/X$display"); unlink("/tmp/.X11-unix/X$display"); } if (-e "/tmp/.X$display-lock") { # remove the NX-X11 lock file (as the agent will not have managed after a kill -9) - syslog('warning', "@sinfo[1], pid @sinfo[0] cleaning up stale X11 lock file: /tmp/.X$display-lock"); + syslog('warning', "@sinfo[1], pid @sinfo[0]: cleaning up stale X11 lock file: /tmp/.X$display-lock"); unlink("/tmp/.X$display-lock"); } syslog('debug', "@sinfo[1]: unmounting all shares"); @@ -242,20 +244,21 @@ elsif ($pid == 0 ) } elsif (! check_pid (@sinfo[0],@sinfo[1],@sinfo[12])) { + syslog('debug', "@sinfo[1], pid @sinfo[0]: does not exist, changing status from @sinfo[4] to F"); system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "$x2go_lib_path/x2gochangestatus 'F' @sinfo[1]"); my $display = @sinfo[2]; if (-S "/tmp/.X11-unix/X$display") { # remove the NX-X11 socket file (we don't know how the agent disappeared, # someone might have shot it with kill -9) - syslog('warning', "@sinfo[1], pid @sinfo[0] cleaning up stale X11 socket file: /tmp/.X11-unix/X$display"); + syslog('warning', "@sinfo[1], pid @sinfo[0]: cleaning up stale X11 socket file: /tmp/.X11-unix/X$display"); unlink("/tmp/.X11-unix/X$display"); } if (-e "/tmp/.X$display-lock") { # remove the NX-X11 lock file (we don't know how the agent disappeared, # someone might have shot it with kill -9) - syslog('warning', "@sinfo[1], pid @sinfo[0] cleaning up stale X11 lock file: /tmp/.X$display-lock"); + syslog('warning', "@sinfo[1], pid @sinfo[0]: cleaning up stale X11 lock file: /tmp/.X$display-lock"); unlink("/tmp/.X$display-lock"); - } syslog('debug', "@sinfo[1], pid @sinfo[0] does not exist, changing status from @sinfo[4] to F"); + } syslog('debug', "@sinfo[1]: unmounting all shares"); system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "export HOSTNAME && x2goumount-session @sinfo[1]"); } @@ -266,7 +269,7 @@ elsif ($pid == 0 ) if (is_suspended(@sinfo[1],@sinfo[11])) { system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "$x2go_lib_path/x2gochangestatus S @sinfo[1]"); - syslog('debug', "@sinfo[1] is suspended, changing status from @sinfo[4] to S"); + syslog('debug', "@sinfo[1]: is suspended, changing status from @sinfo[4] to S"); syslog('debug', "@sinfo[1]: unmounting all shares"); system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "export HOSTNAME && x2goumount-session @sinfo[1]"); #remove port forwarding @@ -282,7 +285,7 @@ elsif ($pid == 0 ) syslog('debug', "@sinfo[1]: unmounting all shares"); system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "export HOSTNAME && x2goumount-session @sinfo[1]"); system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "x2gosuspend-session @sinfo[1]"); - syslog('debug', "@sinfo[1] was found running and has now been suspended"); + syslog('debug', "@sinfo[1]: was found running and has now been suspended"); } elsif ($remembered_sessions_status_since_iterations{@sinfo[1]} == 2) { # Issue a diagnostic warning in case suspension was already tried, but failed to @@ -298,7 +301,7 @@ elsif ($pid == 0 ) syslog('debug', "@sinfo[1]: unmounting all shares"); system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "export HOSTNAME && x2goumount-session @sinfo[1]"); system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "x2goterminate-session @sinfo[1]"); - syslog('debug', "@sinfo[1] has been requested for termination via the session DB"); + syslog('debug', "@sinfo[1]: termination has been requested via the session DB"); #remove port forwarding system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "$x2go_lib_path/x2gormforward @sinfo[1]"); } -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
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 9db387f31570b8315adf9a24c9aeaffdee765f30 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jun 22 23:57:00 2015 +0200 x2goserver/sbin/x2gocleansessions: whitespace only. --- debian/changelog | 1 + x2goserver/sbin/x2gocleansessions | 1 + 2 files changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index c0f4530..ab2516a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -42,6 +42,7 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low database. - x2goserver/sbin/x2gocleansessions: unify log messages. Move dangling line around. + - x2goserver/sbin/x2gocleansessions: whitespace only. * 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 a372ac9..4718ac0 100755 --- a/x2goserver/sbin/x2gocleansessions +++ b/x2goserver/sbin/x2gocleansessions @@ -246,6 +246,7 @@ elsif ($pid == 0 ) { syslog('debug', "@sinfo[1], pid @sinfo[0]: does not exist, changing status from @sinfo[4] to F"); system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "$x2go_lib_path/x2gochangestatus 'F' @sinfo[1]"); + my $display = @sinfo[2]; if (-S "/tmp/.X11-unix/X$display") { # remove the NX-X11 socket file (we don't know how the agent disappeared, -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
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 6203e204a4756d92df03f3e36f8aacd61d6a4a69 Author: Mihai Moldovan <ionic@ionic.de> Date: Tue Jun 23 00:02:47 2015 +0200 x2goserver/sbin/x2gocleansessions: also delete entries in the other, overlooked hashes. --- debian/changelog | 2 ++ x2goserver/sbin/x2gocleansessions | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index ab2516a..cfc8788 100644 --- a/debian/changelog +++ b/debian/changelog @@ -43,6 +43,8 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low - x2goserver/sbin/x2gocleansessions: unify log messages. Move dangling line around. - x2goserver/sbin/x2gocleansessions: whitespace only. + - x2goserver/sbin/x2gocleansessions: also delete entries in the other, + overlooked hashes. * 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 4718ac0..6a19c10 100755 --- a/x2goserver/sbin/x2gocleansessions +++ b/x2goserver/sbin/x2gocleansessions @@ -224,7 +224,11 @@ elsif ($pid == 0 ) # 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]"); + + # Remove all references to this sessions. We will never see it again. + delete $remembered_sessions_status{@sinfo[1]}; delete $remembered_sessions_status_since_time{@sinfo[1]}; + delete $remembered_sessions_status_since_iterations{@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
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 0954384a82e888fcebcc61f1e56aecb0b9d57865 Author: Mihai Moldovan <ionic@ionic.de> Date: Tue Jun 23 00:05:25 2015 +0200 x2goserver/sbin/x2gocleansessions: move socket and lock file cleanup into time-based block for finished/failed sessions. --- debian/changelog | 2 ++ x2goserver/sbin/x2gocleansessions | 31 ++++++++++++++++--------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/debian/changelog b/debian/changelog index cfc8788..debf495 100644 --- a/debian/changelog +++ b/debian/changelog @@ -45,6 +45,8 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low - x2goserver/sbin/x2gocleansessions: whitespace only. - x2goserver/sbin/x2gocleansessions: also delete entries in the other, overlooked hashes. + - x2goserver/sbin/x2gocleansessions: move socket and lock file cleanup + into time-based block for finished/failed sessions. * 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 6a19c10..7efcb89 100755 --- a/x2goserver/sbin/x2gocleansessions +++ b/x2goserver/sbin/x2gocleansessions @@ -229,22 +229,23 @@ elsif ($pid == 0 ) delete $remembered_sessions_status{@sinfo[1]}; delete $remembered_sessions_status_since_time{@sinfo[1]}; delete $remembered_sessions_status_since_iterations{@sinfo[1]}; + + my $display = @sinfo[2]; + if (-S "/tmp/.X11-unix/X$display") { + # remove the NX-X11 socket file (as the agent will not have managed after a kill -9) + syslog('warning', "@sinfo[1], pid @sinfo[0]: cleaning up stale X11 socket file: /tmp/.X11-unix/X$display"); + unlink("/tmp/.X11-unix/X$display"); + } + if (-e "/tmp/.X$display-lock") { + # remove the NX-X11 lock file (as the agent will not have managed after a kill -9) + syslog('warning', "@sinfo[1], pid @sinfo[0]: cleaning up stale X11 lock file: /tmp/.X$display-lock"); + unlink("/tmp/.X$display-lock"); + } + syslog('debug', "@sinfo[1]: unmounting all shares"); + system( "su", "@sinfo[11]", "-s", "/bin/sh", "-c", "export HOSTNAME && x2goumount-session @sinfo[1]"); + #remove port forwarding + system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "$x2go_lib_path/x2gormforward @sinfo[1]"); } - my $display = @sinfo[2]; - if (-S "/tmp/.X11-unix/X$display") { - # remove the NX-X11 socket file (as the agent will not have managed after a kill -9) - syslog('warning', "@sinfo[1], pid @sinfo[0]: cleaning up stale X11 socket file: /tmp/.X11-unix/X$display"); - unlink("/tmp/.X11-unix/X$display"); - } - if (-e "/tmp/.X$display-lock") { - # remove the NX-X11 lock file (as the agent will not have managed after a kill -9) - syslog('warning', "@sinfo[1], pid @sinfo[0]: cleaning up stale X11 lock file: /tmp/.X$display-lock"); - unlink("/tmp/.X$display-lock"); - } - syslog('debug', "@sinfo[1]: unmounting all shares"); - system( "su", "@sinfo[11]", "-s", "/bin/sh", "-c", "export HOSTNAME && x2goumount-session @sinfo[1]"); - #remove port forwarding - system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "$x2go_lib_path/x2gormforward @sinfo[1]"); } elsif (! check_pid (@sinfo[0],@sinfo[1],@sinfo[12])) { -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
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 eff9f17cce0c7e714e6c70fb48b8e512e9ae0810 Author: Mihai Moldovan <ionic@ionic.de> Date: Tue Jun 23 00:08:10 2015 +0200 x2goserver/sbin/x2gocleansessions: add @remembered_finished_sessions array. Merge with session list as queried from the database (won't include finished/failed sessions) and remember F-state sessions via this array. Only delete elements once work on these has been finished. --- debian/changelog | 4 ++++ x2goserver/sbin/x2gocleansessions | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index debf495..1d6914c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -47,6 +47,10 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low overlooked hashes. - x2goserver/sbin/x2gocleansessions: move socket and lock file cleanup into time-based block for finished/failed sessions. + - x2goserver/sbin/x2gocleansessions: add @remembered_finished_sessions + array. Merge with session list as queried from the database (won't + include finished/failed sessions) and remember F-state sessions via this + array. Only delete elements once work on these has been finished. * 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 7efcb89..73c04d4 100755 --- a/x2goserver/sbin/x2gocleansessions +++ b/x2goserver/sbin/x2gocleansessions @@ -157,6 +157,7 @@ elsif ($pid == 0 ) $SIG{TERM}=\&catch_term; $SIG{CHLD} = sub { wait }; + my @remembered_finished_sessions = (); my %remembered_sessions_status = (); my %remembered_sessions_status_since_time = (); my %remembered_sessions_status_since_iterations = (); @@ -177,6 +178,8 @@ elsif ($pid == 0 ) } } + push (@outp, @remembered_finished_sessions); + for (my $i=0;$i<@outp;$i++) { @@ -216,6 +219,7 @@ elsif ($pid == 0 ) if (@sinfo[4] eq 'F') { syslog ('debug', "@sinfo[1]: is blocked, adding to finished list."); + push (@remembered_finished_sessions, join ('|', @sinfo)); # Kill the process if blocked for more than 20 seconds. if ((gmtime (time) - $remembered_sessions_status_since_time{@sinfo[1]}) >= 20) @@ -226,6 +230,7 @@ elsif ($pid == 0 ) system("kill", "-9", "@sinfo[0]"); # Remove all references to this sessions. We will never see it again. + @remembered_finished_sessions = grep (!/\Q@sinfo[1]\E/, @remembered_finished_sessions); delete $remembered_sessions_status{@sinfo[1]}; delete $remembered_sessions_status_since_time{@sinfo[1]}; delete $remembered_sessions_status_since_iterations{@sinfo[1]}; -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git