[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[HTCondor-users] ClassAd Attribute When Accessed Says UNDEFINED



Hi there,

 

I have a custom condor configuration file with the following lines where my goal is to understand how HTCondor evaluates expressions having simple comparison operations:

 

STARTD_DEBUG = D_FULLDEBUG D_MACHINE

STARTD.STATISTICS_TO_PUBLISH_LIST = $(STATISTICS_TO_PUBLISH_LIST) JobDuration, JobBusyTime
STARTD_ATTRS = RecentJobBusyTimeAvg, RecentJobBusyTimeCount

VAR1 = (1/10)*100
VAR2 = 10
VAR3 = $(VAR1)==$(VAR2)
VAR4 = $EVAL(1/10*100)
VAR5 = $EVL(VAR1)
VAR6 = $EVAL(100*1/10)
VAR7 = $EVAL(1.0/10.0*100.0)
VAR8 = $EVAL(1.0/10*100)
VAR9 = $EVAL(VAR3)
VAR10 = $(VAR1)==0
VAR11 = $EVAL(VAR10)

VAR12 = debug($EVAL(MY.RecentJobBusyTimeCount)==$(VAR2))
VAR13 = debug($EVAL(VAR12))

VAR14 = debug(MY.RecentJobDurationCount==3)
VAR15 = debug($EVAL(VAR14))

VAR16 = debug($EVAL(JobBusyTimeCount)==7.0)
VAR17 = debug($EVAL(VAR16))

VAR18 = debug($EVAL(DetectedCpus)==2)
VAR19 = debug($EVAL(VAR18))

STARTD_ATTRS = $(STARTD_ATTRS) VAR1 VAR2 VAR3 VAR4 VAR5 VAR6 VAR7 VAR8 VAR9 VAR10 VAR11

STARTD_ATTRS = $(STARTD_ATTRS) VAR12 VAR13 VAR14 VAR15 VAR16 VAR17 VAR18 VAR19

 

 

From what I understand, using the two probes (JobDuration and JobBusyTime) in the very first line of the config enables the publishing of 8 attributes per probe to the machine classad. I can see them (at least the ones I want to use) in the classad when I query via condor_status -l. Specifically, I’m interested in using/accessing RecentJobBusyTimeAvg and RecentJobBusyTimeCount and here is what I see in the condor_status output:

 

DaemonStartTime = 1713544931

DetectedCpus = 2

DetectedMemory = 1777

JobBusyTimeCount = 0

JobDurationCount = 0

RecentDaemonCoreDutyCycle = 6.889009822586001E-05

RecentJobBusyTimeCount = 0

RecentJobDurationCount = 0

RecentJobPreemptions = 0

RecentJobRankPreemptions = 0

VAR1 = (1 / 10) * 100

VAR10 = (1 / 10) * 100 == 0

VAR11 = true

VAR12 = debug(undefined == 10)

VAR13 = debug(undefined)

VAR14 = debug(MY.RecentJobDurationCount == 3)

VAR15 = debug(undefined)

VAR16 = debug(undefined == 7.0)

VAR17 = debug(undefined)

VAR2 = 10

VAR3 = (1 / 10) * 100 == 10

VAR4 = 0

VAR6 = 10

VAR7 = 10.0

VAR8 = 10.0

VAR9 = false

 

Note that I’m applying the custom configuration on a condor-only setup and I had no jobs submitted/running when I captured the machine classad snapshot above, which is why [Recent]JobBusyTime[Avg|Min|Max] and [Recent]JobDuration[Avg|Min|Max] are not visible in the classad snapshot above

 

Upon restarting condor, here is what I see in the StartLog:

04/19/24 16:08:34 Classad debug: [0.00095ms] undefined == 10 --> UNDEFINED

04/19/24 16:08:34 Classad debug: MY --> CLASSAD

04/19/24 16:08:34 Classad debug: [0.00787ms] MY.RecentJobDurationCount --> UNDEFINED

04/19/24 16:08:34 Classad debug: [0.01502ms] MY.RecentJobDurationCount == 3 --> UNDEFINED

04/19/24 16:08:34 Classad debug: undefined == 7.000000000000000E+00 --> UNDEFINED

04/19/24 16:08:34 CONFIGURATION PROBLEM: Failed to insert ClassAd attribute VAR18 = debug(==2).  The most common reason for this is that you forgot to quote a string value in the list of attributes being added to the STARTD ad.

04/19/24 16:08:34 CONFIGURATION PROBLEM: Failed to insert ClassAd attribute VAR19 = debug(debug(==2)).  The most common reason for this is that you forgot to quote a string value in the list of attributes being added to the STARTD ad.

 

My understanding was that since the JobBusyTime probe is activated and its corresponding statistics attributes are published in the classad (as seen in the output), the evaluation of the expressions defined in the configuration file should have been evaluated with substituting the attribute values in those expressions. However, according to the debug statements in the log, all the statistics attributes that get published (RecentJobBusyTimeCount, RecentJobDurationCount, JobBusyTimeCount) are UNDEFINED when their value is 0 (as per the classad snapshot above). Further, I assumed that this might be happening only with the attributes that are published via the two probes so I hypothesized that a regular attribute unrelated to the probe in the classad would probably work for my test (lines corresponding to VAR18 and VAR19 contain a completely different attribute but in the same classad). But HTCondor was unable to find the value of this attribute as well and shows it to be empty as can be seen in the last two debug statements in the log (identified as CONFIGURATION PROBLEM).

 

 

Would like to know if someone might have some insights into what I might be doing differently that is causing the classad attributes’ values to be undefined, or even empty, when I try to access them? If there are questions about what’s been described above, please let me know and I’ll be happy to clarify.

 

 

 

Thanks,

Namratha