The existing code depended on building within a git repository. It
included the GIT_REVISION in the startup message. Unfortunately,
if you built from a downloaded tarball, the build fails. I thought
that the version of BOINC that the GAHP was compiled against would
be useful information as it is logged. The SVN_VERSION is still
available by using the --version command line option. Because of
the small change in behavior, I also bumped the version number of
the GAHP to 1.0.2.
In our BOINC adapter, we made a change so that the unzip command
does not produce any output and will not stop to ask questions.
This is appropriate for the HTCondor batch system. We have been using
this change since April 18, 2014.
The content-based file management system used by Condor GAHP
used a file's MD5 hash as its physical name.
This caused problems for Einstein@home because their app
expected filenames with particular extensions.
So I:
- changed the docs and param names of the C++ interface
to the file management system (query_files() and upload_files())
to clarify that the physical file names can include additional text
besides the MD5 hash.
- changed the BOINC GAHP to look for filename extensions,
and append these to the physical filenames
The batch query call used by Condor (query_batch_set(), in the C++ API)
returned info about all the jobs in the set of batches,
even those that hadn't changed.
This is potentially inefficient - a query might return info
about 10,000 jobs, only a few (or none) of which have changed state
since the last call.
Solution: add a "min_mod_time" parameter to the call.
Only jobs that have changed state since that time are reported.
Also, add a "server_time" field to the return,
giving the current time on the server
(in case there's clock skew between client and server)
Also, fix some text scrambling introduced in previous checkin;
there must have been a gremlin in my vim.
- Batches now have optional "expire time".
If this time passes and the batch is not retired, abort and retire it.
- Add script "expire_batches" which enforces the above.
Run it as a periodic task.
- Add a web RPC for setting the expire time of a batch
(it can be changed multiple times)
- Add a C++ interface for this RPC
- Add a BOINC_SET_LEASE command to the BOINC GAHP
("lease" is Condor term for expire time)
BOINC_QUERY_BATCHES now prints, for each queried batch,
a count of jobs followed by the jobs
BOINC_ABORT_JOBS takes a list of jobs, which may belong to different batches.
The handler for this looks up the batches and makes sure
the jobs belong to the user.
- XML parser: for parse_string(), malloc the 256KB buffer instead of
allocating it on the stack; the latter crashes threads with 32KB stacks.
However, do the malloc() only if we've actually seen the start tag
(this required a bit of code shuffle).
- BOINC GAHP: escape spaces in error msgs