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

Re: [Condor-users] Arbitrary ClassAd attribute




[root@fnpcsrv1 log]# condor_status -long fnpcsrv1
<clip>
Class = "IO"
Start = Class =!= UNDEFINED && Class == "IO"

---------------

In my job classad:
Requirements = ((TARGET.Class =!= UNDEFINED && TARGET.Class == "IO")) &&
(Arch == "INTEL") && (OpSys == "LINUX") && (Disk >= DiskUsage) && ((Memory
* 1024) >= ImageSize) && (TARGET.FileSystemDomain == MY.FileSystemDomain)
Class = "IO"

---------------------

What is happening at the moment is that the job is matching
with another machine in the pool that doesn't have Class=IO,
and failing.

What are we doing wrong here?

The semantics of ClassAds in Condor are imperfect. (We have a new version with better semantics, but it's not yet in Condor.)


When you say 'TARGET.Class == "IO"' you are not limiting the scope of the search for Class to the TARGET ClassAd. Instead, you are setting the start point of the search. That is, it will search TARGET (the Machine ClassAd), and if it doesn't find it there it will search MY (the job ClassAd). Since it's in your Job ClassAd, it found it.

This is clearly not ideal, but at this point it's hard to change: how many Condor configurations would we break?

In your case, you could define JobClass for the job ClassAd, and SupportedClass in the machine ClassAd, or something like that. Then you have unique names that won't conflict in this way.

Sorry for this confusion!

-alain