X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=SHUTTLE%2FAliShuttle.cxx;h=57f97f334d16ad25331d37dfaabc2f3e7220df81;hb=777a0ba65ef2496048d8f0840853969bcf985794;hp=78fd23aa5399a8bdcc1bb05db2340de65120f7b2;hpb=f100adeb1c6dabf3b1040b44cbfcb1cc40e599ed;p=u%2Fmrichter%2FAliRoot.git diff --git a/SHUTTLE/AliShuttle.cxx b/SHUTTLE/AliShuttle.cxx index 78fd23aa539..57f97f334d1 100644 --- a/SHUTTLE/AliShuttle.cxx +++ b/SHUTTLE/AliShuttle.cxx @@ -1203,6 +1203,9 @@ void AliShuttle::SendMLRunInfo(const char* status) runType += fLogbookEntry->GetRunParameter("log"); runType += ")"; } + if (fLogbookEntry->GetDATestMode()){ + runType += " (DATest)"; + } TMonaLisaText mlRunType("SHUTTLE_runtype", runType); TList mlList; @@ -1319,21 +1322,27 @@ Bool_t AliShuttle::Process(AliShuttleLogbookEntry* entry) // Initialization Bool_t hasError = kFALSE; - // Set the CDB and Reference folders according to the year and LHC period - TString lhcPeriod(GetLHCPeriod()); - if (lhcPeriod.Length() == 0) - { - Log("SHUTTLE","Process - LHCPeriod not found in logbook!"); - return 0; - } - - // build cdb paths (repeat each time, LHCperiod might have changed) - fgkMainCDB.Form("alien://folder=%s%d/%s/OCDB?user=alidaq?cacheFold=/tmp/OCDBCache", - fConfig->GetAlienPath(), GetCurrentYear(), lhcPeriod.Data()); - - fgkMainRefStorage.Form("alien://folder=%s%d/%s/Reference?user=alidaq?cacheFold=/tmp/OCDBCache", - fConfig->GetAlienPath(), GetCurrentYear(), lhcPeriod.Data()); - + // Set the CDB and Reference folders according to the year + + // build cdb paths (repeat each time, run might be a DATest run) + if (!fLogbookEntry->GetDATestMode()){ + fgkMainCDB.Form("alien://folder=%s%d/OCDB?user=alidaq?cacheFold=/tmp/OCDBCache", + fConfig->GetAlienPath(), GetCurrentYear()); + + fgkMainRefStorage.Form("alien://folder=%s%d/Reference?user=alidaq?cacheFold=/tmp/OCDBCache", + fConfig->GetAlienPath(), GetCurrentYear()); + } + else { + fgkMainCDB.Form("alien://folder=%s%d/DATest/OCDB?user=alidaq?cacheFold=/tmp/OCDBCache", + fConfig->GetAlienPath(), GetCurrentYear()); + + fgkMainRefStorage.Form("alien://folder=%s%d/DATest/Reference?user=alidaq?cacheFold=/tmp/OCDBCache", + fConfig->GetAlienPath(), GetCurrentYear()); + } + + AliDebug(2,Form("Main CDB storage = %s",fgkMainCDB.Data())); + AliDebug(2,Form("Main Reference storage = %s",fgkMainRefStorage.Data())); + // Loop on detectors in the configuration TIter iter(fConfig->GetDetectors()); TObjString* aDetector = 0; @@ -1892,7 +1901,7 @@ Bool_t AliShuttle::QueryShuttleLogbook(const char* whereClause, } // TODO Check field count! - const UInt_t nCols = 23; + const UInt_t nCols = 25; if (aResult->GetFieldCount() != (Int_t) nCols) { Log("SHUTTLE", "Invalid SQL result field number!"); delete aResult; @@ -1908,6 +1917,11 @@ Bool_t AliShuttle::QueryShuttleLogbook(const char* whereClause, if (!entry) continue; + // DA test mode flag + TString daTestModeString(aRow->GetField(2), aRow->GetFieldLength(2)); // field 2 = DA test mode flag + Bool_t daTestMode = (Bool_t)daTestModeString.Atoi(); + entry->SetDATestMode(daTestMode); + // loop on detectors for(UInt_t ii = 0; ii < nCols; ii++) entry->SetDetectorStatus(aResult->GetFieldName(ii), aRow->GetField(ii)); @@ -2483,7 +2497,12 @@ Bool_t AliShuttle::Connect(Int_t system) // // check connection: if already connected return - if(fServer[system] && fServer[system]->IsConnected()) return kTRUE; + if(fServer[system] && fServer[system]->IsConnected()) { + // ping the server --> automatic reconnection should occur if it was broken but the + // server is still alive + fServer[system]->Ping(); + return kTRUE; + } TString dbHost, dbUser, dbPass, dbName; @@ -2627,6 +2646,8 @@ Bool_t AliShuttle::UpdateTableSkippedCase(const char* detector) Bool_t result = kTRUE; + TString detName(detector); + for (UInt_t system=0; system<3; system++) { @@ -2644,7 +2665,7 @@ Bool_t AliShuttle::UpdateTableSkippedCase(const char* detector) TIter iter(&fFXSlist[system]); TString whereClause; - if (detector == "ALL") whereClause = Form("where run=%d and time_processed IS NULL;",GetCurrentRun()); + if (detName == "ALL") whereClause = Form("where run=%d and time_processed IS NULL;",GetCurrentRun()); else whereClause = Form("where run=%d and detector=\"%s\" and time_processed IS NULL;",GetCurrentRun(), detector); Log("SHUTTLE",Form(" whereClause = %s ",whereClause.Data())); @@ -2813,16 +2834,6 @@ UInt_t AliShuttle::GetCurrentEndTime() const return fLogbookEntry ? fLogbookEntry->GetEndTime() : 0; } -//______________________________________________________________________________________________ -UInt_t AliShuttle::GetCurrentTimeCreated() const -{ - // - // get current end time from logbook entry - // - - return fLogbookEntry ? fLogbookEntry->GetTimeCreated() : 0; -} - //______________________________________________________________________________________________ UInt_t AliShuttle::GetCurrentYear() const { @@ -3154,7 +3165,7 @@ Bool_t AliShuttle::SendMail(EMailTarget target, Int_t system) if (target == kDCSEMail || target == kFXSEMail) { if (!fFirstProcessing) - return kTRUE; + return kTRUE; } Int_t runMode = (Int_t)fConfig->GetRunMode(); @@ -3331,7 +3342,6 @@ Bool_t AliShuttle::SendMail(EMailTarget target, Int_t system) return result == 0; } - //______________________________________________________________________________________________ const char* AliShuttle::GetRunType() { @@ -3455,7 +3465,7 @@ Bool_t AliShuttle::TouchFile() } TString dir; - dir.Form("%s%d/%s/SHUTTLE_DONE", fConfig->GetAlienPath(), GetCurrentYear(), GetLHCPeriod()); + dir.Form("%s%d/SHUTTLE_DONE", fConfig->GetAlienPath(), GetCurrentYear()); // checking whether directory for touch command exists TString commandLs; commandLs.Form("ls %s",dir.Data()); @@ -3533,7 +3543,7 @@ UInt_t AliShuttle::GetStartTimeDCSQuery() // // The call is delegated to AliShuttleInterface - return GetCurrentTimeCreated()-fConfig->GetDCSQueryOffset(); + return GetCurrentStartTime()-fConfig->GetDCSQueryOffset(); } //______________________________________________________________________________________________ UInt_t AliShuttle::GetEndTimeDCSQuery() @@ -3545,4 +3555,3 @@ UInt_t AliShuttle::GetEndTimeDCSQuery() return GetCurrentEndTime()+fConfig->GetDCSQueryOffset(); } -