From a7160fe95349fc328f5bdce1150fb738529cfea2 Mon Sep 17 00:00:00 2001 From: jgrosseo Date: Mon, 10 Jul 2006 13:01:41 +0000 Subject: [PATCH] enhanced storing of last sucessfully processed run (alberto) --- SHUTTLE/AliShuttle.cxx | 53 ++++++++++++++++++++--------------- SHUTTLE/AliShuttle.h | 2 +- SHUTTLE/AliShuttleConfig.cxx | 34 +++++++++++++++------- SHUTTLE/AliShuttleTrigger.cxx | 53 +++++++++++++++++++---------------- SHUTTLE/AliShuttleTrigger.h | 5 ++-- 5 files changed, 87 insertions(+), 60 deletions(-) diff --git a/SHUTTLE/AliShuttle.cxx b/SHUTTLE/AliShuttle.cxx index f2ebf09ba26..564b811aca5 100644 --- a/SHUTTLE/AliShuttle.cxx +++ b/SHUTTLE/AliShuttle.cxx @@ -15,6 +15,9 @@ /* $Log$ +Revision 1.5 2006/07/04 14:59:57 jgrosseo +revision of AliDCSValue: Removed wrapper classes, reduced storage size per value by factor 2 + Revision 1.4 2006/06/12 09:11:16 jgrosseo coding conventions (Alberto) @@ -94,14 +97,12 @@ AliShuttle::AliShuttle(const AliShuttleConfig* config, { // // config: AliShuttleConfig used - // mainStorage: underlying AliCDBStorage - // localStorage (local) CDB storage to be used if mainStorage is unavailable // timeout: timeout used for AliDCSClient connection // retries: the number of retries in case of connection error. // - /*AliDefaultPreprocessor* pp = *///new AliDefaultPreprocessor("DEFAULT", this); - // TODO + //new AliDefaultPreprocessor("DEFAULT", this); + } //______________________________________________________________________ @@ -156,15 +157,16 @@ UInt_t AliShuttle::Store(const char* detector, // 1 if stored in main (Grid) storage // 2 if stored in backup (Local) storage - if (!(AliCDBManager::Instance()->IsDefaultStorageSet())) { - AliError("No CDB storage set!"); - return 0; - } AliCDBId id(AliCDBPath(detector, "DCS", "Data"), GetCurrentRun(), GetCurrentRun()); - UInt_t result = (UInt_t) AliCDBManager::Instance()->Put(object, id, metaData); + UInt_t result = 0; + if (!(AliCDBManager::Instance()->IsDefaultStorageSet())) { + Log(detector, "No CDB storage set!"); + } else { + result = (UInt_t) AliCDBManager::Instance()->Put(object, id, metaData); + } if(!result) { Log(detector, "Error while storing object in main storage!"); @@ -211,7 +213,7 @@ Bool_t AliShuttle::Process(Int_t run, UInt_t startTime, UInt_t endTime) if(fLog != "") StoreLog(run); - return !hasError; + return hasError == kFALSE; } //______________________________________________________________________________________________ @@ -252,6 +254,8 @@ Bool_t AliShuttle::Process(Int_t run, UInt_t startTime, UInt_t endTime, while ((anAlias = (TObjString*) iter.Next())) { TObjArray valueSet; result = GetValueSet(host, port, anAlias->String(), valueSet); + //AliInfo(Form("Port = %d",port)); + //result = kTRUE; if(result) { aliasMap.Add(anAlias->Clone(), valueSet.Clone()); }else{ @@ -262,28 +266,32 @@ Bool_t AliShuttle::Process(Int_t run, UInt_t startTime, UInt_t endTime, } } + if(hasError) return kFALSE; + AliPreprocessor* aPreprocessor = dynamic_cast (fPreprocessorMap.GetValue(detector)); - if(!aPreprocessor) { - AliInfo(Form("No Preprocessor for %s: Using default Preprocessor!",detector)); - aPreprocessor = dynamic_cast (fPreprocessorMap.GetValue("DEFAULT")); + if(aPreprocessor) + { + aPreprocessor->Initialize(run, startTime, endTime); + hasError = (aPreprocessor->Process(&aliasMap) == 0); + }else{ + AliInfo(Form("No Preprocessor for %s: storing TMap of DP arrays into CDB!",detector)); + AliCDBMetaData metaData; + metaData.SetResponsible(Form("Duck, Donald")); + metaData.SetProperty("StartEndTime", + new AliDCSValue(startTime, endTime)); + metaData.SetComment("Automatically stored by Shuttle!"); + hasError = (Store(detector, &aliasMap, &metaData) == 0); } - if (aPreprocessor) - { - aPreprocessor->Initialize(run, startTime, endTime); - hasError = (aPreprocessor->Process(&aliasMap) != 0); - } - else - AliWarning(Form("No preprocessor for %s available", detector)); - aliasMap.Delete(); + aliasMap.Delete(); fCurrentRun = -1; fCurrentStartTime = 0; fCurrentEndTime = 0; - return !hasError; + return hasError == kFALSE; } //______________________________________________________________________________________________ @@ -368,3 +376,4 @@ void AliShuttle::StoreLog(Int_t run) } + diff --git a/SHUTTLE/AliShuttle.h b/SHUTTLE/AliShuttle.h index a63af32a661..17885f2ff66 100644 --- a/SHUTTLE/AliShuttle.h +++ b/SHUTTLE/AliShuttle.h @@ -11,7 +11,7 @@ // This class is the main manager for // AliShuttle. It organizes the data retrieval // from DCS and call the interface methods of -// AliCDBPreProcessor. +// AliPreprocessor. // #include diff --git a/SHUTTLE/AliShuttleConfig.cxx b/SHUTTLE/AliShuttleConfig.cxx index 2de198405c7..3ff81595702 100644 --- a/SHUTTLE/AliShuttleConfig.cxx +++ b/SHUTTLE/AliShuttleConfig.cxx @@ -15,6 +15,9 @@ /* $Log$ +Revision 1.4 2006/06/12 09:11:16 jgrosseo +coding conventions (Alberto) + Revision 1.3 2006/06/06 14:26:40 jgrosseo o) removed files that were moved to STEER o) shuttle updated to follow the new interface (Alberto) @@ -131,7 +134,8 @@ AliShuttleConfig::AliShuttleConfigHolder::AliShuttleConfigHolder(const TLDAPEntr fIsValid = kTRUE; } -AliShuttleConfig::AliShuttleConfigHolder::~AliShuttleConfigHolder() +//______________________________________________________________________________________________ +AliShuttleConfig::AliShuttleConfigHolder::~AliShuttleConfigHolder() { // destructor of the shuttle configuration holder @@ -140,7 +144,8 @@ AliShuttleConfig::AliShuttleConfigHolder::~AliShuttleConfigHolder() ClassImp(AliShuttleConfig) -AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port, +//______________________________________________________________________________________________ +AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port, const char* binddn, const char* password, const char* basedn): fIsValid(kFALSE), fProcessAll(kFALSE) @@ -283,14 +288,16 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port, fIsValid = kTRUE; } -AliShuttleConfig::~AliShuttleConfig() +//______________________________________________________________________________________________ +AliShuttleConfig::~AliShuttleConfig() { // destructor fDetectorMap.DeleteAll(); } -const TObjArray* AliShuttleConfig::GetDetectors() const +//______________________________________________________________________________________________ +const TObjArray* AliShuttleConfig::GetDetectors() const { // // returns collection of TObjString which contains the name @@ -300,7 +307,8 @@ const TObjArray* AliShuttleConfig::GetDetectors() const return &fDetectorList; } -Bool_t AliShuttleConfig::HasDetector(const char* detector) const +//______________________________________________________________________________________________ +Bool_t AliShuttleConfig::HasDetector(const char* detector) const { // // checks for paricular detector in the configuration. @@ -308,7 +316,8 @@ Bool_t AliShuttleConfig::HasDetector(const char* detector) const return fDetectorMap.GetValue(detector) != NULL; } -const char* AliShuttleConfig::GetDCSHost(const char* detector) const +//______________________________________________________________________________________________ +const char* AliShuttleConfig::GetDCSHost(const char* detector) const { // // returns DCS server host used by particular detector @@ -324,7 +333,8 @@ const char* AliShuttleConfig::GetDCSHost(const char* detector) const return aHolder->GetDCSHost(); } -Int_t AliShuttleConfig::GetDCSPort(const char* detector) const +//______________________________________________________________________________________________ +Int_t AliShuttleConfig::GetDCSPort(const char* detector) const { // // returns DCS server port used by particular detector @@ -341,7 +351,8 @@ Int_t AliShuttleConfig::GetDCSPort(const char* detector) const return aHolder->GetDCSPort(); } -const TObjArray* AliShuttleConfig::GetDCSAliases(const char* detector) const +//______________________________________________________________________________________________ +const TObjArray* AliShuttleConfig::GetDCSAliases(const char* detector) const { // // returns collection of TObjString which represents the set of aliases @@ -358,7 +369,8 @@ const TObjArray* AliShuttleConfig::GetDCSAliases(const char* detector) const return aHolder->GetDCSAliases(); } -const TObjArray* AliShuttleConfig::GetDAQFileIDs(const char* detector) const +//______________________________________________________________________________________________ +const TObjArray* AliShuttleConfig::GetDAQFileIDs(const char* detector) const { // // returns collection of TObjString which represents the set of DAQ file IDs @@ -375,7 +387,8 @@ const TObjArray* AliShuttleConfig::GetDAQFileIDs(const char* detector) const return aHolder->GetDAQFileIDs(); } -Bool_t AliShuttleConfig::HostProcessDetector(const char* detector) const +//______________________________________________________________________________________________ +Bool_t AliShuttleConfig::HostProcessDetector(const char* detector) const { // return TRUE if detector is handled by host or if fProcessAll is TRUE @@ -388,6 +401,7 @@ Bool_t AliShuttleConfig::HostProcessDetector(const char* detector) const return kFALSE; } +//______________________________________________________________________________________________ void AliShuttleConfig::Print(Option_t* /*option*/) const { // print configuration diff --git a/SHUTTLE/AliShuttleTrigger.cxx b/SHUTTLE/AliShuttleTrigger.cxx index 28a644c525e..9f8f778cfd8 100644 --- a/SHUTTLE/AliShuttleTrigger.cxx +++ b/SHUTTLE/AliShuttleTrigger.cxx @@ -15,6 +15,9 @@ /* $Log$ + Revision 1.4 2006/07/04 14:59:57 jgrosseo + revision of AliDCSValue: Removed wrapper classes, reduced storage size per value by factor 2 + Revision 1.3 2006/06/12 09:11:16 jgrosseo coding conventions (Alberto) @@ -214,7 +217,7 @@ void AliShuttleTrigger::Run() { //______________________________________________________________________________________________ Bool_t AliShuttleTrigger::RetrieveDATEEntries(const char* whereClause, - TObjArray& entries, Int_t& lastRun) + TObjArray& entries) { // Retrieve start time and end time for all runs in the DAQ logbook // that aren't processed yet @@ -253,8 +256,6 @@ Bool_t AliShuttleTrigger::RetrieveDATEEntries(const char* whereClause, return kFALSE; } - lastRun = 0; - TSQLRow* aRow; while ((aRow = aResult->Next())) { TString runString(aRow->GetField(0), aRow->GetFieldLength(0)); @@ -285,15 +286,12 @@ Bool_t AliShuttleTrigger::RetrieveDATEEntries(const char* whereClause, } entries.AddLast(new AliShuttleTriggerDATEEntry(run, startTime, endTime)); - if (lastRun < run) { - lastRun = run; - } delete aRow; } delete aResult; - aServer->Shutdown(); + aServer->Close(); delete aServer; entries.SetOwner(1); @@ -302,7 +300,7 @@ Bool_t AliShuttleTrigger::RetrieveDATEEntries(const char* whereClause, } //______________________________________________________________________________________________ -Bool_t AliShuttleTrigger::RetrieveConditionsData(const TObjArray& dateEntries) +Bool_t AliShuttleTrigger::RetrieveConditionsData(const TObjArray& dateEntries, Int_t &lastRun) { // Retrieve conditions data for all runs that aren't processed yet @@ -310,19 +308,24 @@ Bool_t AliShuttleTrigger::RetrieveConditionsData(const TObjArray& dateEntries) TIter iter(&dateEntries); AliShuttleTriggerDATEEntry* anEntry; + lastRun=-1; while ((anEntry = (AliShuttleTriggerDATEEntry*) iter.Next())) { + Bool_t processError = kFALSE; + if(lastRun == -1) lastRun = anEntry->GetRun(); if(!fShuttle->Process(anEntry->GetRun(), anEntry->GetStartTime(), anEntry->GetEndTime())) { - hasError = kTRUE; + processError = kTRUE; + hasError = kTRUE; } + if(!processError) lastRun = anEntry->GetRun(); } - return !hasError; + return hasError == kFALSE; } //______________________________________________________________________________________________ -Bool_t AliShuttleTrigger::Collect(Int_t run) +Bool_t AliShuttleTrigger::Collect(Int_t run) { // // Collects conditions date for the given run. @@ -333,9 +336,8 @@ Bool_t AliShuttleTrigger::Collect(Int_t run) TString whereClause("where run = "); whereClause += run; - Int_t lastRun; TObjArray dateEntries; - if (!RetrieveDATEEntries(whereClause, dateEntries, lastRun)) { + if (!RetrieveDATEEntries(whereClause, dateEntries)) { AliError("Can't retrieve entries from DAQ log book."); return kFALSE; } @@ -351,7 +353,8 @@ Bool_t AliShuttleTrigger::Collect(Int_t run) return kFALSE; } - if (!RetrieveConditionsData(dateEntries)) { + Int_t lastRun; + if (!RetrieveConditionsData(dateEntries, lastRun)) { AliError("An error occured during conditions data retrieval!"); return kFALSE; } @@ -383,10 +386,11 @@ Bool_t AliShuttleTrigger::CollectNew() } AliDCSValue* simpleValue = (AliDCSValue*) anObject; lastRun = simpleValue->GetInt(); + AliInfo(Form("Last run successfully stored: %d",lastRun)); delete cdbEntry; } else { - AliWarning("There isn't last run stored! Starting from run 21200"); - lastRun = 21200; // TODO maybe exit here + AliWarning("There isn't last run stored! Starting from run 21240"); + lastRun = 21240; // TODO maybe exit here } AliInfo(Form("Last run number <%d>", lastRun)); @@ -396,11 +400,16 @@ Bool_t AliShuttleTrigger::CollectNew() Int_t newLastRun; TObjArray dateEntries; - if (!RetrieveDATEEntries(whereClause, dateEntries, newLastRun)) { + if (!RetrieveDATEEntries(whereClause, dateEntries)) { AliError("Can't retrieve entries from DAQ log book."); return kFALSE; } + if (!RetrieveConditionsData(dateEntries, newLastRun)) { + AliError("Process of at least one run failed!"); + // return kFALSE; + } + if (newLastRun > lastRun) { AliDCSValue lastRunObj(newLastRun, 0); AliCDBMetaData metaData; @@ -415,11 +424,7 @@ Bool_t AliShuttleTrigger::CollectNew() } } - if (!RetrieveConditionsData(dateEntries)) { - AliError("An error occured during conditions data retrieval!"); - return kFALSE; - } - + return kTRUE; } @@ -434,12 +439,12 @@ Bool_t AliShuttleTrigger::CollectAll() Int_t lastRun; TObjArray dateEntries; - if (!RetrieveDATEEntries("", dateEntries, lastRun)) { + if (!RetrieveDATEEntries("", dateEntries)) { AliError("Can't retrieve entries from DAQ log book."); return kFALSE; } - if (!RetrieveConditionsData(dateEntries)) { + if (!RetrieveConditionsData(dateEntries, lastRun)) { AliError("An error occured during conditions data retrieval!"); return kFALSE; } diff --git a/SHUTTLE/AliShuttleTrigger.h b/SHUTTLE/AliShuttleTrigger.h index bd453c83642..804a0e2abb0 100644 --- a/SHUTTLE/AliShuttleTrigger.h +++ b/SHUTTLE/AliShuttleTrigger.h @@ -82,9 +82,8 @@ private: ClassDef(AliShuttleTriggerDATEEntry, 0) }; - Bool_t RetrieveDATEEntries(const char* whereClause, TObjArray& entries, - Int_t& lastRun); - Bool_t RetrieveConditionsData(const TObjArray& dateEntries); + Bool_t RetrieveDATEEntries(const char* whereClause, TObjArray& entries); + Bool_t RetrieveConditionsData(const TObjArray& dateEntries, Int_t& lastRun); const AliShuttleConfig* fConfig; //AliCDBStorage* fLocalStorage; -- 2.43.0