Bool_t resultMetadata = kTRUE;
if(fCurrentDetector == "GRP")
{
- Log("StoreOCDB - SHUTTLE","Storing Run Metadata file ...");
+ Log("SHUTTLE","StoreOCDB - Storing Run Metadata file ...");
resultMetadata = CopyFilesToGrid("metadata");
}
fStatusEntry = 0;
}
+ Int_t path1 = GetCurrentRun()/10000;
fStatusEntry = AliCDBManager::Instance()->GetStorage(GetLocalCDB())
- ->Get(Form("/SHUTTLE/STATUS/%s", fCurrentDetector.Data()), GetCurrentRun());
+ ->Get(Form("/SHUTTLE/%s/%d", fCurrentDetector.Data(), path1), GetCurrentRun());
if (!fStatusEntry) return 0;
fStatusEntry->SetOwner(1);
}
Int_t run = GetCurrentRun();
+ Int_t path1 = run/10000;
+ TString path1_string = Form("%d",path1);
- AliCDBId id(AliCDBPath("SHUTTLE", "STATUS", fCurrentDetector), run, run);
+ AliCDBId id(AliCDBPath("SHUTTLE", fCurrentDetector, path1_string), run, run);
fStatusEntry = new AliCDBEntry(status, id, new AliCDBMetaData);
fStatusEntry->SetOwner(1);
}
TString wd = gSystem->WorkingDirectory();
- TString tmpDir = Form("%s/%s_%d_process", GetShuttleTempDir(),
- fCurrentDetector.Data(), GetCurrentRun());
+ Int_t dir_lev1 = GetCurrentRun()/10000;
+ TString tmpDir = Form("%s/%d/%d/%s_process", GetShuttleTempDir(),
+ dir_lev1, GetCurrentRun(), fCurrentDetector.Data());
Int_t result = gSystem->GetPathInfo(tmpDir.Data(), 0, (Long64_t*) 0, 0, 0);
if (!result) // temp dir already exists!
}
// TODO Check field count!
- const UInt_t nCols = 23;
+ const UInt_t nCols = 24;
if (aResult->GetFieldCount() != (Int_t) nCols) {
Log("SHUTTLE", "Invalid SQL result field number!");
delete aResult;
UInt_t now = time(0);
// TODO make this a configuration parameter
- Int_t dcsDelay = 120+180;
+ Int_t dcsDelay = fConfig->GetDCSDelay()+fConfig->GetDCSQueryOffset();
// runs are accepted if they have ecsSuccess set or more than 1 event
if (startTime != 0 && endTime != 0 && endTime > startTime && (totEvents > 1 || ecsSuccess) && (endTime < now - dcsDelay))
// returns TMap of values, 0 when failure
AliDCSClient client(host, port, fTimeout, fRetries, multiSplit);
- Int_t offset = 180;
TMap* result = 0;
if (type == kAlias)
{
- result = client.GetAliasValues(entries, GetCurrentStartTime()-offset,
- GetCurrentEndTime()+offset);
+ //result = client.GetAliasValues(entries, GetCurrentStartTime()-offset,
+ // GetCurrentEndTime()+offset);
+ result = client.GetAliasValues(entries, GetStartTimeDCSQuery(),
+ GetEndTimeDCSQuery());
}
else if (type == kDP)
{
- result = client.GetDPValues(entries, GetCurrentStartTime()-offset,
- GetCurrentEndTime()+offset);
+ //result = client.GetDPValues(entries, GetCurrentStartTime()-offset,
+ // GetCurrentEndTime()+offset);
+ result = client.GetDPValues(entries, GetStartTimeDCSQuery(),
+ GetEndTimeDCSQuery());
}
if (result == 0)
filePath.Data(), fileSize.Data(), fileChecksum.Data()));
// retrieved file is renamed to make it unique
- TString localFileName = Form("%s/%s_%d_process/%s_%s_%d_%s_%s.shuttle",
- GetShuttleTempDir(), detector, GetCurrentRun(),
+ Int_t dir_lev1 = GetCurrentRun()/10000;
+ TString localFileName = Form("%s/%d/%d/%s_process/%s_%s_%d_%s_%s.shuttle",
+ GetShuttleTempDir(), dir_lev1, GetCurrentRun(), detector,
GetSystemName(system), detector, GetCurrentRun(),
id, sourceName.Data());
+ Log("SHUTTLE",Form("file from FXS = %s",localFileName.Data()));
// file retrieval from FXS
//
// 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;
Bool_t result = kTRUE;
+ TString detName(detector);
+
for (UInt_t system=0; system<3; system++)
{
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()));
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
//
// Fill log string with a message
//
-
- TString logRunDir = GetShuttleLogDir();
- if (GetCurrentRun() >=0)
- logRunDir += Form("/%d", GetCurrentRun());
+ TString logRunDir = GetShuttleLogDir();
+ if (GetCurrentRun() >=0) {
+ Int_t logDir_lev1 = GetCurrentRun()/10000;
+ logRunDir += Form("/%d/%d", logDir_lev1, GetCurrentRun());
+ }
void* dir = gSystem->OpenDirectory(logRunDir.Data());
if (dir == NULL) {
if (gSystem->mkdir(logRunDir.Data(), kTRUE)) {
if (GetCurrentRun() >= 0)
{
- fileName.Form("%s/%d/%s_%d.log", GetShuttleLogDir(), GetCurrentRun(),
- detector, GetCurrentRun());
+ Int_t logDir_lev1 = GetCurrentRun()/10000;
+ fileName.Form("%s/%d/%d/%s.log", GetShuttleLogDir(), logDir_lev1, GetCurrentRun(),
+ detector);
} else {
fileName.Form("%s/%s.log", GetShuttleLogDir(), detector);
}
if (target == kDCSEMail || target == kFXSEMail) {
if (!fFirstProcessing)
- return kTRUE;
+ return kTRUE;
}
Int_t runMode = (Int_t)fConfig->GetRunMode();
body += Form("Find the %s log for the current run on \n\n"
- "\thttp://pcalishuttle01.cern.ch:8880/%s/%d/%s_%d.log \n\n",
- fCurrentDetector.Data(), logFolder.Data(), GetCurrentRun(),
- fCurrentDetector.Data(), GetCurrentRun());
+ "\thttp://pcalishuttle01.cern.ch:8880/%s/%d/%d/%s.log \n\n",
+ fCurrentDetector.Data(), logFolder.Data(), GetCurrentRun()/10000,
+ GetCurrentRun(), fCurrentDetector.Data());
body += Form("The last 10 lines of %s log file are following:\n\n", fCurrentDetector.Data());
AliDebug(2, Form("Body begin: %s", body.Data()));
mailBody.close();
mailBody.open(bodyFileName, ofstream::out | ofstream::app);
- TString logFileName = Form("%s/%d/%s_%d.log", GetShuttleLogDir(),
- GetCurrentRun(), fCurrentDetector.Data(), GetCurrentRun());
+ TString logFileName = Form("%s/%d/%d/%s.log", GetShuttleLogDir(),
+ GetCurrentRun()/10000, GetCurrentRun(), fCurrentDetector.Data());
TString tailCommand = Form("tail -n 10 %s >> %s", logFileName.Data(), bodyFileName.Data());
if (gSystem->Exec(tailCommand.Data()))
{
return result == 0;
}
-
//______________________________________________________________________________________________
const char* AliShuttle::GetRunType()
{
Log("SHUTTLE", "Sucessfully touched the file");
return kTRUE;
}
+//______________________________________________________________________________________________
+UInt_t AliShuttle::GetStartTimeDCSQuery()
+{
+ // Return Start Time for the DCS query
+ //
+ // The call is delegated to AliShuttleInterface
+
+ return GetCurrentTimeCreated()-fConfig->GetDCSQueryOffset();
+}
+//______________________________________________________________________________________________
+UInt_t AliShuttle::GetEndTimeDCSQuery()
+{
+ // Return End Time for the DCS query
+ //
+ // The call is delegated to AliShuttleInterface
+ return GetCurrentEndTime()+fConfig->GetDCSQueryOffset();
+}