Opened 10 years ago

Last modified 9 years ago

#738 new defect

IZ3169: Improper marking array job as a job in hold during loading submit dialog in qmon

Reported by: jf222792 Owned by:
Priority: low Milestone:
Component: sge Version: 6.2u3
Severity: Keywords: Sun clients
Cc:

Description

[Imported from gridengine issuezilla http://gridengine.sunsource.net/issues/show_bug.cgi?id=3169]

        Issue #:      3169             Platform:     Sun      Reporter: jf222792 (jf222792)
       Component:     gridengine          OS:        All
     Subcomponent:    clients          Version:      6.2u3       CC:    None defined
        Status:       NEW              Priority:     P4
      Resolution:                     Issue type:    DEFECT
                                   Target milestone: ---
      Assigned to:    jf222792 (jf222792)
      QA Contact:     roland
          URL:
       * Summary:     Improper marking array job as a job in hold during loading submit dialog in qmon
   Status whiteboard:
      Attachments:

     Issue 3169 blocks:
   Votes for issue 3169:


   Opened: Thu Oct 29 04:45:00 -0700 2009 
------------------------


Bug is related to qmon client. Example: I submit array job which starts tasks range from number greater then one (for instance qsub -t
2-10). Then when I mark the job and press qalter button in job control menu I can see qalter menu of the job. But the job is improperly
marked as a job in hold state. Same situation will come in case that task 1 is running so it is not anymore in pending job list and some
tasks with higher task id are still in pending jobs list (so pending jobs list starts from greater task number then 1). This case will come
when there is not enough slots to run all tasks or explicitely by using -tc option of qsub (qalter, Max Tasks in submit dialog). See
attechments (print screen of situation in qmon).
*** (#1 of 1): 2009-10-29 12:11:16 CET jan.forch@sun.com

The bug is caused by bad condition in qmon_submit.c file. There is a constant "1" which is code looking for in list of pending jobs. But
that does not cover all cases (eg. those metioned in description of CR). It is nacessary to define when the job is in hold state and check
it properly in respect to whole array structure (running tasks, pending tasks, particular tasks in hold state etc.). Be aware of impact of
your changes on processing of job on qmaster side (job structure->GUI->new job structure->qmaster).

Bad condition:
   if (lGetNumberOfElem(lGetList(jep, JB_ja_tasks)) &&
       lGetUlong(lFirst(lGetList(jep, JB_ja_tasks)), JAT_hold)) {
       printf("\nHOLD 1\n");
      data->hold = 1;
   } else {
      if (range_list_is_id_within(lGetList(jep, JB_ja_n_h_ids), 1)) {
         data->hold = 0;
         printf("\nFREE 1\n");
      } else {
         data->hold = 1;
         printf("\nHOLD 2\n");
      }
   }

Change History (0)

Note: See TracTickets for help on using tickets.