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
VAR1 = (1/10)*100
VAR12 = debug($EVAL(MY.RecentJobBusyTimeCount)==$(VAR2))
VAR14 = debug(MY.RecentJobDurationCount==3)
VAR16 = debug($EVAL(JobBusyTimeCount)==7.0)
VAR18 = debug($EVAL(DetectedCpus)==2) 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 |