Hello community, here is the log from the commit of package icecream checked in at Wed Sep 13 11:32:37 CEST 2006. -------- --- icecream/icecream.changes 2006-09-12 07:29:43.000000000 +0200 +++ icecream/icecream.changes 2006-09-13 07:58:38.000000000 +0200 @@ -1,0 +2,12 @@ +Wed Sep 13 07:58:29 CEST 2006 - coolo@suse.de + +- 0.7.14: + - fix current_kids getting out of sync if send_scheduler + failes in an unfortunate moment + - fix reporting the error + - add more to the internals dump + - trying to make the scheduler kicks a little bit less frequent + - if the compiler is supposed to keep temp files, then we + have to do it locally + +------------------------------------------------------------------- Old: ---- icecc-0.7.13.tar.bz2 New: ---- icecc-0.7.14.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ icecream.spec ++++++ --- /var/tmp/diff_new_pack.RpZrvz/_old 2006-09-13 11:32:22.000000000 +0200 +++ /var/tmp/diff_new_pack.RpZrvz/_new 2006-09-13 11:32:22.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package icecream (Version 0.7.13) +# spec file for package icecream (Version 0.7.14) # # Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -22,7 +22,7 @@ %endif Prereq: /usr/sbin/useradd /usr/sbin/groupadd Requires: gcc-c++ -Version: 0.7.13 +Version: 0.7.14 Release: 1 Source0: ftp://ftp.suse.com/pub/projects/icecream/icecc-%{version}.tar.bz2 Source1: %name-manpages.tar.bz2 @@ -139,6 +139,15 @@ %_libdir/pkgconfig/icecc.pc %changelog -n icecream +* Wed Sep 13 2006 - coolo@suse.de +- 0.7.14: +- fix current_kids getting out of sync if send_scheduler + failes in an unfortunate moment +- fix reporting the error +- add more to the internals dump +- trying to make the scheduler kicks a little bit less frequent +- if the compiler is supposed to keep temp files, then we + have to do it locally * Tue Sep 12 2006 - coolo@suse.de - 0.7.13: - use file -L to follow symlinks in create-env ++++++ icecc-0.7.13.tar.bz2 -> icecc-0.7.14.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/NEWS new/icecream/NEWS --- old/icecream/NEWS 2006-09-12 07:22:52.000000000 +0200 +++ new/icecream/NEWS 2006-09-13 07:57:00.000000000 +0200 @@ -1,3 +1,12 @@ +0.7.14 (583722): + - fix current_kids getting out of sync if send_scheduler + failes in an unfortunate moment + - fix reporting the error + - add more to the internals dump + - trying to make the scheduler kicks a little bit less frequent + - if the compiler is supposed to keep temp files, then we + have to do it locally + 0.7.13 (583347): - use file -L to follow symlinks in create-env - fix an easy valgrind error diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/client/arg.cpp new/icecream/client/arg.cpp --- old/icecream/client/arg.cpp 2006-09-04 13:21:54.000000000 +0200 +++ new/icecream/client/arg.cpp 2006-09-12 18:20:47.000000000 +0200 @@ -143,6 +143,7 @@ || !strcmp( a, "-frepo" ) || !strcmp( a, "-fprofile-generate" ) || !strcmp( a, "-fprofile-use" ) + || !strcmp( a, "-save-temps") || !strcmp( a, "-fbranch-probabilities") ) { #if CLIENT_DEBUG log_info() << "compiler will emit profile info; must be local" << endl; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/configure.in new/icecream/configure.in --- old/icecream/configure.in 2006-09-11 22:26:01.000000000 +0200 +++ new/icecream/configure.in 2006-09-13 07:57:00.000000000 +0200 @@ -4,7 +4,7 @@ AC_INIT(client/main.cpp) -AM_INIT_AUTOMAKE(icecc, "0.7.13") +AM_INIT_AUTOMAKE(icecc, "0.7.14") AM_CONFIG_HEADER(config.h) AC_CANONICAL_HOST diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/daemon/main.cpp new/icecream/daemon/main.cpp --- old/icecream/daemon/main.cpp 2006-09-12 07:22:52.000000000 +0200 +++ new/icecream/daemon/main.cpp 2006-09-12 16:44:23.000000000 +0200 @@ -399,7 +399,6 @@ time_t last_scheduler_ping; int mem_limit = 100; unsigned int max_kids = 0; -int current_kids = 0; size_t cache_size_limit = 100 * 1024 * 1024; @@ -432,6 +431,7 @@ int max_scheduler_pong; int max_scheduler_ping; string bench_source; + unsigned int current_kids; Daemon() { envbasedir = "/tmp/icecc-envs"; @@ -451,6 +451,7 @@ max_scheduler_pong = MAX_SCHEDULER_PONG; max_scheduler_ping = MAX_SCHEDULER_PING; bench_source = ""; + current_kids = 0; } bool reannounce_environments() __attribute_warn_unused_result__; @@ -518,7 +519,7 @@ gettimeofday( &now, 0 ); /* the scheduler didn't ping us for a long time, assume dead connection and recover */ - if (now.tv_sec - last_scheduler_ping >= max_scheduler_ping + 2 * max_scheduler_pong) { + if (!send_ping && now.tv_sec - last_scheduler_ping >= max_scheduler_ping + 2 * max_scheduler_pong) { log_error() << "scheduler timeout.. " << now.tv_sec - last_scheduler_ping << " bigger than " << max_scheduler_ping + 2*max_scheduler_pong << " nuking" << endl; close_scheduler(); @@ -627,6 +628,23 @@ result += " envs_last_use[" + it->first + "] = " + toString( it->second ) + "\n"; } + result += " Current kids: " + toString( current_kids ) + "\n"; + if ( scheduler ) + result += " Scheduler protocol: " + toString( scheduler->protocol ) + "\n"; + + StatsMsg msg; + unsigned int memory_fillgrade = 0; + unsigned long idleLoad = 0; + unsigned long niceLoad = 0; + + if ( fill_stats( idleLoad, niceLoad, memory_fillgrade, &msg ) ) + { + result += " cpu: " + toString( idleLoad ) + " idle, " + + toString( niceLoad ) + " nice\n"; + result += " load: " + toString( msg.loadAvg1 / 1000. ) + ", icecream_load: " + + toString( icecream_load ) + "\n"; + result += " memory: " + toString( memory_fillgrade ) + " (free: " + toString( msg.freeMem ) + ")\n"; + } return result; } @@ -851,9 +869,11 @@ { assert(client->status == Client::WAITFORCHILD); assert(client->child_pid > 0); + assert(client->pipe_to_child >= 0); JobDoneMsg *msg = new JobDoneMsg(client->job->jobID(), -1, JobDoneMsg::FROM_SERVER); assert(msg); + assert(current_kids > 0); current_kids--; unsigned int job_stat[8]; @@ -871,20 +891,15 @@ end_status = job_stat[JobStatistics::exit_code]; } - if (!send_scheduler( *msg )) { - log_info() << "failed to send scheduler a jobdone msg.." << endl; - return false; - } - - delete msg; close(client->pipe_to_child); client->pipe_to_child = -1; string envforjob = client->job->targetPlatform() + "/" + client->job->environmentVersion(); envs_last_use[envforjob] = time( NULL ); + bool r = send_scheduler( *msg ); handle_end(client, end_status); - - return true; + delete msg; + return r; } bool Daemon::handle_compile_file( MsgChannel *c, Msg *msg ) @@ -1216,7 +1231,7 @@ assert(client); ++it; if (client->status == Client::WAITFORCHILD - && client->pipe_to_child != -1 + && client->pipe_to_child >= 0 && FD_ISSET(client->pipe_to_child, &listen_set) ) { max_fd--; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/daemon/serve.cpp new/icecream/daemon/serve.cpp --- old/icecream/daemon/serve.cpp 2006-09-11 21:58:59.000000000 +0200 +++ new/icecream/daemon/serve.cpp 2006-09-12 14:40:30.000000000 +0200 @@ -197,7 +197,7 @@ job_stat[JobStatistics::out_uncompressed] = st.st_size; /* wake up parent and tell him that compile finished */ - send( out_fd, job_stat, sizeof( job_stat ), MSG_NOSIGNAL ); + write( out_fd, job_stat, sizeof( job_stat ) ); close( out_fd ); if ( rmsg.status == 0 ) { diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/services/scheduler.cpp new/icecream/services/scheduler.cpp --- old/icecream/services/scheduler.cpp 2006-09-11 08:07:56.000000000 +0200 +++ new/icecream/services/scheduler.cpp 2006-09-12 20:09:41.000000000 +0200 @@ -496,12 +496,13 @@ job->local_client_id = m->client_id; job->preferred_host = m->preferred_host; enqueue_job_request (job); - log_info() << "NEW " << job->id << " client=" - << submitter->nodename << " versions=["; + std::ostream& dbg = log_info(); + dbg << "NEW " << job->id << " client=" + << submitter->nodename << " versions=["; for ( Environments::const_iterator it = job->environments.begin(); it != job->environments.end(); ++it ) - log_info() << it->second << "(" << it->first << "), "; - log_info() << "] " << m->filename << " " << job->language << endl; + dbg << it->second << "(" << it->first << "), "; + dbg << "] " << m->filename << " " << job->language << endl; notify_monitors (MonGetCSMsg (job->id, submitter->hostid, m)); if ( !master_job ) { ++++++ icecream-manpages.tar.bz2 ++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org