The branch, master has been updated via bdf58be37831c772c5f888e267e807c87d13f3d3 (commit) via e9fc713660e691425c8a6729d0280aa941253c76 (commit) from 8af661ea45669bb7af75ffeb7439ede85e2541eb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit bdf58be37831c772c5f888e267e807c87d13f3d3 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Thu Mar 15 20:54:04 2012 +0100 If setting a session state to 'R' fails in x2goresume-session, simly try again. commit e9fc713660e691425c8a6729d0280aa941253c76 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Thu Mar 15 20:53:22 2012 +0100 cleanup one entry from changelog ----------------------------------------------------------------------- Summary of changes: debian/changelog | 4 +- x2goserver/bin/x2goresume-session | 13 +++++++++- x2goserver/lib/x2godbwrapper.pm | 27 +++++++++++++++++++- x2goserver/lib/{x2gochangestatus => x2gogetstatus} | 8 +++--- x2goserver/lib/x2gosqlitewrapper.pl | 21 +++++++++++++++ 5 files changed, 65 insertions(+), 8 deletions(-) copy x2goserver/lib/{x2gochangestatus => x2gogetstatus} (94%) The diff of changes is: diff --git a/debian/changelog b/debian/changelog index 9c1fa64..f8a24d5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,8 +13,8 @@ x2goserver (3.1.1.0-0~x2go1) UNRELEASED; urgency=low - Update date and version number in man pages. - Add syslogging to SQLite3 session DB backend for occuring DB failures. - - Specify non-sbin path in x2gosqlitewrapper.c. Allows us - to do system calls in x2gosqlitewrapper.pl. + - If setting a session state to 'R' fails in x2goresume-session, + simly try again. * Remove /etc/x2go/applications on package removal if it is a symlink, keep it, if it is a directory. Remove /etc/x2go (if empty after purge) on package purge. diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index e03751a..baf639a 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -149,7 +149,18 @@ fi echo "$NEWOPTIONS" >"${SESSION_DIR}/options" -$X2GO_LIB_PATH/x2goresume "$X2GO_CLIENT" "$SESSION_NAME" "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null +# we really have to make sure the session database got this write operation +# this may just be an SQLite issue so... +# FIXME: probably migrate this piece of code to the SQLite db backend... +while True; do + $X2GO_LIB_PATH/x2goresume "$X2GO_CLIENT" "$SESSION_NAME" "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null + if [ $($X2GO_LIB_PATH/x2gogetstatus "$SESSION_NAME") == "R" ]; then + break; + else + $X2GO_LIB_PATH/x2gosyslog "$0" "warning" "failed to write to X2Go db, will try again..." + sleep 1; + fi +done # run x2goserver-extensions for pre-resume x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-resume || true diff --git a/x2goserver/lib/x2godbwrapper.pm b/x2goserver/lib/x2godbwrapper.pm index aec0294..2690544 100644 --- a/x2goserver/lib/x2godbwrapper.pm +++ b/x2goserver/lib/x2godbwrapper.pm @@ -85,7 +85,7 @@ if ($backend eq 'postgres') use base 'Exporter'; -our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus', +our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus', 'db_getstatus', 'db_getdisplays', 'db_insertsession', 'db_getports', 'db_insertport', 'db_rmport', 'db_createsession', 'db_insertmount', 'db_getmounts', 'db_deletemount', 'db_getdisplay', 'dbsys_getmounts', 'dbsys_listsessionsroot', 'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot'); @@ -410,6 +410,31 @@ sub db_changestatus syslog('debug', "db_changestatus called, session ID: $sid, new status: $status"); } +sub db_getstatus +{ + my $sid=shift or die "argument \"session_id\" missed"; + my $status=''; + if ($backend eq 'postgres') + { + my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_; + my $sth=$dbh->prepare("select status from sessions_view where session_id = '$sid'"); + $sth->execute($sid) or die; + my @data; + if (@data = $sth->fetchrow_array) + { + $status=@data[0]; + } + $sth->finish(); + $dbh->disconnect(); + } + if ($backend eq 'sqlite') + { + $status=`$x2go_lib_path/x2gosqlitewrapper getstatus $sid`; + } + syslog('debug', "db_getstatus called, session ID: $sid, return value: $status"); + return $status; +} + sub db_getdisplays { my @displays; diff --git a/x2goserver/lib/x2gochangestatus b/x2goserver/lib/x2gogetstatus similarity index 94% copy from x2goserver/lib/x2gochangestatus copy to x2goserver/lib/x2gogetstatus index ce33520..a245352 100755 --- a/x2goserver/lib/x2gochangestatus +++ b/x2goserver/lib/x2gogetstatus @@ -30,11 +30,11 @@ use x2gologlevel; openlog($0,'cons,pid','user'); setlogmask( LOG_UPTO(x2gologlevel()) ); - -my $status=shift or die; +my $status; my $sid=shift or die; -db_changestatus($status, $sid); +$status = db_getstatus($sid); +print "$status\n"; # closing syslog -closelog; \ No newline at end of file +closelog; diff --git a/x2goserver/lib/x2gosqlitewrapper.pl b/x2goserver/lib/x2gosqlitewrapper.pl index 4ad329e..1d8923a 100755 --- a/x2goserver/lib/x2gosqlitewrapper.pl +++ b/x2goserver/lib/x2gosqlitewrapper.pl @@ -270,6 +270,27 @@ elsif($cmd eq "changestatus") $sth->finish(); } +elsif($cmd eq "getstatus") +{ + my $sid=shift or die "argument \"session_id\" missed"; + check_user($sid); + my $sth=$dbh->prepare("select status from sessions where session_id = ?"); + $sth->execute($sid); + if ($sth->err()) + { + syslog('error', "changestatus (SQLite3 session db backend) failed with exitcode: $sth->err()"); + die(); + } + my @data; + my $status; + @data = $sth->fetchrow_array; + { + $status = @data[0]; + } + $sth->finish(); + print $status; +} + elsif($cmd eq "getdisplays") { #ignore $server hooks/post-receive -- x2goserver.git (X2Go Server) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "x2goserver.git" (X2Go Server).