[gridengine users] JSV problem in version 6.2u5

Michael Coffman michael.coffman at avagotech.com
Wed May 8 17:46:42 UTC 2013


Hello,

I am having a problem with a client side jsv submit script setting a boolen
complex to 0. I've kind of worked around it until now...

#grid version
6.2u5

# complex line
spice                 spice             BOOL        ==    FORCED
NO         0        0

# jsv script is called from global sge_request.

# grid submit line
qrsh  -now no -l spice

#without memory rule (commented out so nothing in the jsv is exercised)
hard resource_list:         spice=TRUE

#with memory rule
hard resource_list:         mem_total=128G,spice=0.000000

# output of jsv debug log (logging_enabled) - this is the same with either way.
>>> START
<<< SEND ENV
<<< STARTED
>>> PARAM VERSION 1.0
>>> PARAM CONTEXT client
>>> PARAM CLIENT qrsh
>>> PARAM USER coffman
>>> PARAM GROUP games
>>> PARAM CMDNAME NONE
>>> PARAM CMDARGS 0
>>> PARAM e /dev/null
>>> PARAM l_hard spice=0.000000
>>> PARAM M coffman at gtmaster.ftc.avagotech.net
>>> PARAM N QRLOGIN
>>> PARAM o /dev/null
>>> PARAM display localhost:11.0
>>> ENV ADD DISPLAY localhost:11.0
>>> ENV ADD QRSH_PORT gtmaster.ftc.avagotech.net:44360
>>> BEGIN
<<< PARAM l_hard mem_total=128G,spice=0.000000
<<< RESULT STATE CORRECT Job was modified before it was accepted
>>> QUIT


Any clues as to how best to fix this?  It seems to be something in the
JSV.pm file that maps the r_value to 0 if none is given.  It only seems
to happen when the jsv_sub_add_param is called.

Here is a jsv script that I see this issue with...
----------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
no warnings qw/uninitialized/;

use Env qw(SGE_ROOT);
use lib "$SGE_ROOT/util/resources/jsv";
use JSV qw( :DEFAULT jsv_send_env jsv_log_info );

jsv_on_start(sub {
  jsv_send_env();
});

jsv_on_verify(sub {
  my %params = jsv_get_param_hash();
  my $do_correct = 0;
  my $do_wait = 0;

  if ((exists $params{l_hard}{memory}) or (exists $params{l_hard}{mem})) {
    my $memory = 0;
    # set local memory value the l_hard memory value is one that I
created and the short
    # cut is mem..
    if (exists $params{l_hard}{memory}) { $memory = $params{l_hard}{memory} }
    elsif (exists $params{l_hard}{mem}) { $memory = $params{l_hard}{mem} }
    if (!exists $params{l_hard}{mem_total})  {
    # check values and set memory ceilings
      if ($memory < 128 ) {
        $do_correct = 1;
        jsv_sub_add_param('l_hard','mem_total', '260G');
      } elsif ($memory < 387 ) {
        $do_correct = 1;
        jsv_sub_add_param('l_hard','mem_total', '400G');
      }
    }
  } else {
    $do_correct = 1;
    jsv_sub_add_param('l_hard','mem_total', '128G');
  }

  if ($do_wait) {
     jsv_reject_wait('Job is rejected. It might be submitted later.');
  } elsif ($do_correct) {
     jsv_correct('Job was modified before it was accepted');
  } else {
     jsv_accept('Job is accepted');
  }
});

jsv_main();
----------------------------------------------

Any help is greatly appreciated.  Hopefully I don't have to check
every boolean value and if the r_value is 0, remap to true.  I guess
that wouldn't be the worst thing...

Thanks.
-- 
-MichaelC



More information about the users mailing list