4: Similarly with a job queue, grab the job classads, and suck them into a program which instantiates classads for each job in the text file. (Magnify as needed). Check memory footprint; compare b/w new and old classads. *:: _Nick_ *Done* +{subsection: Analyze data, determine whether to procede or not} + +*: Monday, June 1, 2009 + {subsection: Conversion} -{wiki:ClassAdConversionTimeDetailedEstimates Detailed time estimates} are also available. +{wiki:ClassAdConversionTimeDetailedEstimates Detailed time estimates for individual {quote:ClassAd} methods} are also available. {wiki:ClassAdConversionTodo The ClassAd conversion TODO} has more details on these individual blocks. + +{subsubsection: Pre-Flag Day Tasks} + +*: Compatibility functions block 1: +*:: ClassAd::Assign() *DONE* +*:: ClassAd::LookupString(MyString) *DONE* +*:: ClassAd::Insert(const char*) *DONE* +*:: ClassAd::put() +*:: ClassAd::initFromStream() +*:: ClassAd::AssignExpr() *DONE* +*:: ClassAd::clear() *DONE* +*:: ClassAd::EvalString(const char*, const class AttrList*, char**) +*:: ClassAd::EvalString(const char*, const class AttrList*, MyString&) +*:: ClassAd::NextNameOriginal() *DONE* +*:: ClassAd::ResetName() *DONE* +*:: ClassAd::sPrintExpr() +*:: ClassAd::NextDirtyExpr() +*:: ClassAd::SetDirtyFlag() +*:: ClassAd::GetDirtyFlag() +*:: ClassAd::GetReferences() +*:: ClassAd::ChainCollapse() +*:: ClassAd::EscapeStringValue() +*:: ClassAd::CopyAttribute() +*:: ClassAd::fPrintAsXML() +*:: ClassAd::sPrintAsXML() +*:: ClassAd::IsValidAttrValue() +*: Write helper functions for these methods which we can't emulate transparently: +*:: ExprTree::PrintToNewStr() *DONE* +*:: ExprTree::PrintToStr() *DONE* +*:: ExprTree::EvalTree() +*: Add {quote:ClassAds} functions that are in old {quote:ClassAds} but not in new {quote:ClassAds}: +*:: stringListSize() +*:: stringListSum() +*:: stringListAve() +*:: stringListMin() +*:: stringListMax() +*:: stringListMember() +*:: stringListIMember() +*:: stringListRegexpMember() + + +{subsection: Flag Day Tasks} + +*: Change most or all references to {quote:ClassAd} and {quote:AttrList} with {quote:CompatClassAd}. +*: Swap in Varghese's new {quote:ClassAdList} class. +*: Fix up the one or two callsites in matchmaker.cpp that move an ad from one {quote:ClassAdList} to another. +*: The following methods will need some fixing at the callsites: +*:: ClassAd::Insert(ExprTree*) +*:: ClassAd::Lookup() +*:: ExprTree::RArg() +*:: ExprTree::LArg() +*:: ExprTree::PrintToNewStr() +*:: ExprTree::EvalTree() +*:: ClassAd::NextExpr() +*:: ClassAd(char*,char) +*:: ExprTree::PrintToStr() +*:: ExprTree::DeepCopy() +*:: ExprTree::MyType() +*:: ClassAd::ExchangeExpressions() *DONE* +*:: ClassAd::unchain() *DONE* +*:: ClassAd::RestoreChain() *DONE* +*:: AttrList::put() + +{subsection: Post-Flag Day Tasks} + +*: As time permits, rewrite callsites to make {quote:CompatClassAd} unnecessary. The modified callsites can either use native new {quote:ClassAd} methods or newly-written free-standing functions. +*:: Replace all usage of attribute {quote:CurrentTime} with {quote:ClassAd} function time(). This can start before the flag day.