*** empty log message ***

svn path=/trunk/boinc/; revision=6712
This commit is contained in:
David Anderson 2005-07-21 08:24:09 +00:00
parent 18799e34d0
commit 511429769c
4 changed files with 55 additions and 64 deletions

View File

@ -9316,3 +9316,10 @@ Bruce 21 July 2005
user/ user/
hosts_user.php hosts_user.php
David 21 July 2005
- Scheduler: if using locality scheduling,
don't attach to shared memory
(hence don't need to run feeder)
sched/
main.C

View File

@ -163,9 +163,9 @@ means:
Clients will download this and run it. If you want, you can gzip it Clients will download this and run it. If you want, you can gzip it
and leave the .gz extension on. and leave the .gz extension on.
Now cd to PROJDIR/bin and run Now cd to PROJDIR and run
./update_versions bin/update_versions
This scans the app dir and creates AppVersions (info about which Apps This scans the app dir and creates AppVersions (info about which Apps
have really-existing versions for which platforms), and puts them in have really-existing versions for which platforms), and puts them in

View File

@ -75,6 +75,7 @@ GUI_URLS gui_urls;
key_t sema_key; key_t sema_key;
int g_pid; int g_pid;
static bool db_opened=false; static bool db_opened=false;
bool project_stopped = false;
void send_message(const char* msg, int delay, bool send_header) { void send_message(const char* msg, int delay, bool send_header) {
if (send_header) { if (send_header) {
@ -184,15 +185,52 @@ void set_core_dump_size_limit() {
} }
#endif #endif
SCHED_SHMEM* attach_to_feeder_shmem() {
char path[256];
get_project_dir(path, sizeof(path));
get_key(path, 'a', sema_key);
SCHED_SHMEM* ssp = 0;
int i, retval;
void* p;
retval = attach_shmem(config.shmem_key, &p);
if (retval || p==0) {
log_messages.printf(SCHED_MSG_LOG::CRITICAL,
"Can't attach shmem (feeder not running?)\n"
);
project_stopped = true;
} else {
ssp = (SCHED_SHMEM*)p;
retval = ssp->verify();
if (retval) {
log_messages.printf(SCHED_MSG_LOG::CRITICAL,
"shmem has wrong struct sizes - recompile\n"
);
send_message("Server has software problem", 3600, true);
exit(0);
}
for (i=0; i<10; i++) {
if (ssp->ready) break;
log_messages.printf(SCHED_MSG_LOG::DEBUG, "waiting for ready flag\n");
sleep(1);
}
if (!ssp->ready) {
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "feeder doesn't seem to be running\n");
send_message("Server has software problem", 3600, true);
exit(0);
}
}
return ssp;
}
int main(int argc, char** argv) { int main(int argc, char** argv) {
FILE* fin, *fout; FILE* fin, *fout;
int i, retval; int i, retval;
char req_path[256], reply_path[256], path[256]; char req_path[256], reply_path[256], path[256];
SCHED_SHMEM* ssp=0; SCHED_SHMEM* ssp=0;
void* p;
unsigned int counter=0; unsigned int counter=0;
char* code_sign_key; char* code_sign_key;
bool project_stopped = false;
int length=-1; int length=-1;
log_messages.pid = getpid(); log_messages.pid = getpid();
bool batch = false; bool batch = false;
@ -263,36 +301,8 @@ int main(int argc, char** argv) {
exit(0); exit(0);
} }
get_project_dir(path, sizeof(path)); if (!config.locality_scheduling) {
get_key(path, 'a', sema_key); ssp = attach_to_feeder_shmem();
retval = attach_shmem(config.shmem_key, &p);
if (retval || p==0) {
log_messages.printf(SCHED_MSG_LOG::CRITICAL,
"Can't attach shmem (feeder not running?)\n"
);
project_stopped = true;
} else {
ssp = (SCHED_SHMEM*)p;
retval = ssp->verify();
if (retval) {
log_messages.printf(SCHED_MSG_LOG::CRITICAL,
"shmem has wrong struct sizes - recompile\n"
);
send_message("Server has software problem", 3600, true);
exit(0);
}
for (i=0; i<10; i++) {
if (ssp->ready) break;
log_messages.printf(SCHED_MSG_LOG::DEBUG, "waiting for ready flag\n");
sleep(1);
}
if (!ssp->ready) {
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "feeder doesn't seem to be running\n");
send_message("Server has software problem", 3600, true);
exit(0);
}
} }
g_pid = getpid(); g_pid = getpid();

View File

@ -3,13 +3,12 @@
# $Id$ # $Id$
""" """
Scans apps dir for current core client and application versions Scans apps dir for application versions
and updates the database as appropriate. and updates the database as appropriate.
config.xml must contain an <app_dir> which specifies the directory to search. config.xml must contain an <app_dir> which specifies the directory to search.
apps/APPLICATION_NAME/ contains application versions for each application. apps/APPLICATION_NAME/ contains application versions for each application.
apps/boinc/ contains core client versions (not used for most projects).
Filenames must be of the form NAME_VERSION_PLATFORM[.ext]. Filenames must be of the form NAME_VERSION_PLATFORM[.ext].
The prefix name and extensions .gz, .exe, .sit are ignored. The prefix name and extensions .gz, .exe, .sit are ignored.
@ -64,7 +63,7 @@ def add_files(
signature_files={}, signature_files={},
file_ref_infos = {} file_ref_infos = {}
): ):
''' add files to app/core. ''' add files to app.
''' '''
assert(match) assert(match)
assert(exec_files[0]) assert(exec_files[0])
@ -106,23 +105,6 @@ def add_files(
platform = platform, platform = platform,
version_num = version_num, version_num = version_num,
xml_doc = xml_doc) xml_doc = xml_doc)
else:
assert(not non_exec_files) # this wouldn't make sense for core clients
existing_versions = database.CoreVersions.find(platform=platform, version_num=version_num)
if existing_versions:
if verbose:
print " Skipping existing core version %s: %s" %(version_num, file_base)
return
print " Found core version %3d for %s: %s" %(version_num, platform, file_base)
xml_doc = tools.process_app_file(exec_files[0])
object = database.CoreVersion(
create_time = create_time,
platform = platform,
version_num = version_num,
xml_doc = xml_doc)
objects_to_commit.append(object) objects_to_commit.append(object)
@ -133,10 +115,7 @@ def re_match_exec_filename(filepath):
return re.match('[^.]+_([0-9]+)[.]([0-9]+)_([^.]+?(?:[0-9][0-9.]*[0-9])?)(?:[.]gz|[.]exe|[.]sit|[.]msi)?$', file) return re.match('[^.]+_([0-9]+)[.]([0-9]+)_([^.]+?(?:[0-9][0-9.]*[0-9])?)(?:[.]gz|[.]exe|[.]sit|[.]msi)?$', file)
def find_versions(app, dir): def find_versions(app, dir):
"""Find application versions/core client versions in DIR. """Find application versions in DIR.
if app==None, then dir contains core clients; else contains application
versions.
If directory contains sub-directories, those are scanned (non-recursively) If directory contains sub-directories, those are scanned (non-recursively)
for files. If an executable is found, the first one found for files. If an executable is found, the first one found
@ -189,7 +168,7 @@ def find_versions__process_single_file(app, match, filepath):
# possibly with signature files included. # possibly with signature files included.
def find_versions__process_bundle(app, match, dir): def find_versions__process_bundle(app, match, dir):
'''add executable + bundle as app/core version''' '''add executable + bundle as app version'''
exec_files = [] exec_files = []
non_exec_files = [] non_exec_files = []
signature_files = {} signature_files = {}
@ -244,11 +223,6 @@ def find_versions__process_bundle(app, match, dir):
for appdir in xlistdir(config.app_dir): for appdir in xlistdir(config.app_dir):
if not os.path.isdir(appdir): continue if not os.path.isdir(appdir): continue
dirname = os.path.basename(appdir) dirname = os.path.basename(appdir)
if dirname == 'boinc':
if verbose:
print "Looking for core versions in", appdir
find_versions(None, appdir)
continue
appname = os.path.basename(appdir) appname = os.path.basename(appdir)
apps = database.Apps.find(name=appname) apps = database.Apps.find(name=appname)
if apps: if apps: