Adam,
I think the problem in your case is the line
eval "require $manager_class";
If require fails you'll enter the following if block and because
you did not specify a logfile the condition
if (defined($job_description) && defined($job_description->logfile()))
fails. This is fine but the failing require is not fine.
Please do the following for me:
1. Add a system debug statement before the eval statement
system("echo $manager_class > /tmp/JOB_MANAGER_CLASS");
eval "require $manager_class";
What's the content of /tmp/JOB_MANAGER_CLASS after a job submission?
2. What are the permissions of
$GLOBUS_LOCATION/lib/perl/Globus/GRAM/JobManager/*.pm
3. Write the following job description to a file "job.xml":
<job>
<executable>/bin/true</executable>
<extensions>
<logfile>/tmp/GT_SUBMISSION_PERL_LOG</logfile>
</extensions>
</job>
and submit it using "globusrun-ws -submit -f job.xml"
What's the content of /tmp/GT_SUBMISSION_PERL_LOG?
Thanks, Martin
> Hi Martin,
>
> Thanks for the quick response. I have to apologize; the globus-job-
> manager-script didn't fail in the block I indicated (diagnosis error
> on my part); it actually failed the condition
>
> if (defined($job_description) && defined($job_description->logfile()))
>
> I managed to grab the gram_job_*.tmp file from one submission before
> it got deleted; here are the contents:
>
> $description = {
> directory => [ '/Users/kocolosk' ],
> condoros => [ 'LINUX' ],
> xmlextensions => [ '1' ],
> useforkstarter => [ '1' ],
> condorarch => [ 'INTEL' ],
> stderr => [ '/dev/null' ],
> environment => [ [ 'GLOBUS_LOCATION', '/usr/local/
> globus-4.0.5/' ], [ 'X509_CERT_DIR', '/etc/grid-security/
> certificates' ], [ 'X509_USER_PROXY', '' ], [ 'X509_USER_CERT', '' ],
> [ 'X509_USER_KEY', ''
> ], [ 'HOME', '/Users/kocolosk' ], [ 'LOGNAME', 'kocolosk' ],
> [ 'SCRATCH_DIRECTORY', '/Users/kocolosk/.globus/scratch' ],
> [ 'JAVA_HOME', '/System/Library/Frameworks/JavaVM.framework/Versions/
> 1.5.0/Home' ]
> , [ 'GLOBUS_GRAM_JOB_HANDLE', 'https://***.***.***.***:8443/wsrf/
> services/ManagedExecutableJobService?56a6d7f0-3fa9-11dc-b899-
> eff3df4eaa69' ], ],
> executable => [ '/usr/bin/cal' ],
> factoryendpoint => [ 'Address: https://localhost:8443/wsrf/
> services/ManagedJobFactoryService
> Reference property[0]:
> <ns5:ResourceID ns04:type="ns05:string" xmlns:ns04="http://www.w3.org/
> 2001/XMLSchema-instance" xmlns:ns05="http://www.w3.org/2001/
> XMLSchema" xmlns:ns5="http://www.globus.org/namespaces/2004/10/gram/
> job">
> Fork</ns5:ResourceID>
> ' ],
> stdin => [ '/dev/null' ],
> expandglobushome => [ '1' ],
> jobdir => [ '/Users/kocolosk/.globus/56a6d7f0-3fa9-11dc-b899-
> eff3df4eaa69' ],
> jobtype => [ 'multiple' ],
> stdout => [ '/dev/null' ],
> expandglobuslocation => [ '1' ],
> count => [ '1' ],
> useforkstarter => [ '1' ],
> };
>
> Again, sorry for the earlier misdirection. Regards, Adam
>
>
> On Jul 31, 2007, at 6:30 PM, [EMAIL PROTECTED] wrote:
>
>> Adam,
>> can you figure out which one of the three conditions fail?
>> Please try something like this:
>>
>> if(!defined($manager_name)) {
>> system("/bin/touch /tmp/manager_name_undefined");
>> &fail(Globus::GRAM::Error::BAD_SCRIPT_ARG_FILE);
>> } elsif (!defined($argument_file)) {
>> system("/bin/touch /tmp/argument_file_undefined");
>> &fail(Globus::GRAM::Error::BAD_SCRIPT_ARG_FILE);
>> } elsif (!defined($command)) {
>> system("/bin/touch /tmp/command_undefined");
>> &fail(Globus::GRAM::Error::BAD_SCRIPT_ARG_FILE);
>> }
>>
>> (adapt the path to touch if necessary)
>> and check which file got created in /tmp
>>
>> Thanks, Martin
>>
>>> Hi all,
>>>
>>> I seem to be having the same problem that Masato reported two weeks
>>> ago on this mailing list:
>>>
>>> http://www.globus.org/mail_archive/gt-user/2007/07/msg00105.html
>>>
>>> A simple test job with the fork jobmanager fails with the following
>>> message:
>>>
>>>> globusrun-ws -submit -c /bin/date
>>>> Submitting job...Done.
>>>> Job ID: uuid:6990a1f2-3fae-11dc-9c9b-001451685a74
>>>> Termination time: 08/01/2007 21:38 GMT
>>>> Current job state: Failed
>>>> Destroying job...Done.
>>>> globusrun-ws: Job failed: Internal fault occurred while running the
>>>> submit script.
>>>> The globus-job-manager-script.pl script received a bad argument.
>>>> Check for the existance of the appropriate resource manager adapter
>>>> Perl module
>>>> in the ${GLOBUS_LOCATION}/lib/perl/Globus/GRAM/JobManager/
>>>> directory.
>>>
>>> Turning on GRAM debugging reveals the following messages in the
>>> container.log:
>>>
>>>> 2007-07-31 17:38:45,743 DEBUG exec.JobManagerScript [Thread-13,run:
>>>> 208] Executing command:
>>>> /usr/bin/sudo -H -u kocolosk -S /usr/local/globus-4.0.5/libexec/
>>>> globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/
>>>> local/globus-4.0.5/libexec/globus-job-manager-script.pl -m fork -f /
>>>> usr/local/globus-4.0.5/tmp/gram_job_mgr61596.tmp -c submit
>>>> 2007-07-31 17:38:46,379 DEBUG exec.JobManagerScript [Thread-13,run:
>>>> 225] first line: GRAM_SCRIPT_ERROR:21
>>>
>>> I can edit the globus-job-manager-script.pl and I find that it fails
>>> at line 47 (the same place as Masato reported):
>>>
>>>> if((!defined($manager_name)) ||
>>>> (!defined($argument_file)) ||
>>>> (!defined($command)))
>>>> {
>>>> &fail(Globus::GRAM::Error::BAD_SCRIPT_ARG_FILE);
>>>> }
>>>
>>> Martin's comment that
>>>
>>>> The DN of the submitting user should be mapped to a different local
>>>> user id than the user who runs the container. In this case the
>>>> container uses sudo to submit the job.
>>>
>>> applies here; the container is owned by "globus" and as you can see
>>> sudo was used to submit the job as "kocolosk". Running the Perl
>>> script by hand appears to succeed; I get GRAM_SCRIPT_JOB_STATE:2
>>> returned along with a UUID
>>>
>>> I apologize for starting a new thread (new subscriber), but hopefully
>>> we can get to the bottom of this. Regards,
>>>
>>> Adam
>>> --------
>>> Adam Kocoloski
>>> Dept. of Physics, MIT
>>> 26-402E
>>> 617.258.5437
>>>
>>>
>>>
>>
>>
>
>