On Nov 5, 2010, at 10:22 AM, Joseph Bester wrote:
> On Nov 5, 2010, at 11:14 AM, Ole Weidner wrote:
>> Hi,
>>
>> I have a small problem with the GRAM C API. I can't figure out a way to
>> retrieve Error Code 5 ("the executable does not exist"). I use the
>> client_job request API call:
>>
>> (void)globus_mutex_lock(&monitor.mutex);
>> {
>> err = globus_gram_client_job_request(gram_url.c_str(),
>> rsl.c_str(),
>> GLOBUS_GRAM_PROTOCOL_JOB_STATE_ALL,
>> callback_contact,
>> &monitor.job_contact);
>> }
>> (void)globus_mutex_unlock(&monitor.mutex);
>>
>> ...along with some code before and and after to make sure everything is
>> properly initialized, shutd-down and to check the monitor struct (and
>> possible errors received by it).
>>
>> The "err" variable gives me the proper error code in pretty much all
>> situations (e.g. invalid job contact, invalid rsl, etc...) but not in the
>> case of a non-existing executable! By the end of the submission process,
>> monitor.failure_core is set to GLOBUS_SUCCESS, but monitor.job_state is set
>> to -1 (Failed).
>
> Some errors are detected when the job is accepted into the GRAM service, and
> others when the GRAM service contacts the LRM to process the job. I think
> what you are seeing is an instance of the second case. In that case, you'll
> see a successful job request, followed by a job state callback indicating the
> job has failed with errorcode 5.
Thanks for clarifying. It actually helped me to find a not very obvious but
nasty race condition in my monitoring thread implementation. Everything works
fine now - including error code 5.
Thanks!
- Ole
>
>> I know that the globus command line tools return the proper error message in
>> case of a non-existing executable:
>>
>> globus-job-run qb1.loni.org blah
>> GRAM Job failed because the executable does not exist (error code 5)
>>
>> I spent some time looking at the source code for the cmd-line tools, but
>> unfortunately, I couldn't really figure out how it is done.
>>
>> Any ideas?
>>
>> Thank you,
>> Ole
>