/*
$Log$
+Revision 1.54 2007/07/12 09:51:25 jgrosseo
+removed duplicated log message in GetFile
+
+Revision 1.53 2007/07/12 09:26:28 jgrosseo
+updating hlt fxs base path
+
+Revision 1.52 2007/07/12 08:06:45 jgrosseo
+adding log messages in getfile... functions
+adding not implemented copy constructor in alishuttleconfigholder
+
+Revision 1.51 2007/07/03 17:24:52 acolla
+root moved to v5-16-00. TFileMerger->Cp moved to TFile::Cp.
+
+Revision 1.50 2007/07/02 17:19:32 acolla
+preprocessor is run in a temp directory that is removed when process is finished.
+
+Revision 1.49 2007/06/29 10:45:06 acolla
+Number of columns in MySql Shuttle logbook increased by one (HLT added)
+
+Revision 1.48 2007/06/21 13:06:19 acolla
+GetFileSources returns dummy list with 1 source if system=DCS (better than
+returning error as it was)
+
+Revision 1.47 2007/06/19 17:28:56 acolla
+HLT updated; missing map bug removed.
+
Revision 1.46 2007/06/09 13:01:09 jgrosseo
Switching to retrieval of several DCS DPs at a time (multiDPrequest)
#include <TMutex.h>
#include <TSystemDirectory.h>
#include <TSystemFile.h>
+#include <TFile.h>
#include <TFileMerger.h>
#include <TGrid.h>
#include <TGridResult.h>
fullGridPath.Form("alien://%s/%s", alienDir.Data(), fileName.Data());
TFileMerger fileMerger;
- Bool_t result = fileMerger.Cp(fullLocalPath, fullGridPath);
+ Bool_t result = TFile::Cp(fullLocalPath, fullGridPath);
if (result)
{
}
+ TString wd = gSystem->WorkingDirectory();
+ TString tmpDir = Form("%s/%s_process",GetShuttleTempDir(),fCurrentDetector.Data());
+
+ gSystem->mkdir(tmpDir.Data());
+ gSystem->ChangeDirectory(tmpDir.Data());
+
Bool_t success = ProcessCurrentDetector();
+
+ gSystem->ChangeDirectory(wd.Data());
+
+ gSystem->Exec(Form("rm -rf %s",tmpDir.Data()));
+
if (success) // Preprocessor finished successfully!
{
// Update time_processed field in FXS DB
if (UpdateTable() == kFALSE)
- Log("SHUTTLE", Form("Process - %s: Could not update FXS databases!"));
+ Log("SHUTTLE", Form("Process - %s: Could not update FXS databases!",
+ fCurrentDetector.Data()));
// Transfer the data from local storage to main storage (Grid)
UpdateShuttleStatus(AliShuttleStatus::kStoreStarted);
}
// TODO Check field count!
- const UInt_t nCols = 22;
+ const UInt_t nCols = 23;
if (aResult->GetFieldCount() != (Int_t) nCols) {
AliError("Invalid SQL result field number!");
delete aResult;
Log(detector, Form("GetFileName - Copy of file %s from %s FXS failed",
filePath.Data(), GetSystemName(system)));
continue;
- } else {
- AliInfo(Form("File %s copied from %s FXS into %s/%s",
- filePath.Data(), GetSystemName(system),
- GetShuttleTempDir(), localFileName.Data()));
- }
+ }
if (fileChecksum.Length()>0)
{
fFXSlist[system].Add(fileParams);
static TString fullLocalFileName;
- fullLocalFileName = TString::Format("%s/%s", GetShuttleTempDir(), localFileName.Data());
+ fullLocalFileName.Form("%s/%s", GetShuttleTempDir(), localFileName.Data());
- AliInfo(Form("fullLocalFileName = %s", fullLocalFileName.Data()));
+ Log(fCurrentDetector, Form("GetFile - Retrieved file with id %s and source %s from %s to %s", id, source, GetSystemName(system), fullLocalFileName.Data()));
return fullLocalFileName.Data();
-
}
//______________________________________________________________________________________________
}
else if (system == kHLT)
{
- baseFXSFolder = "/opt/FXS";
+ baseFXSFolder = "/opt/FXS/";
}
// Get sources producing the condition file Id from file exchange servers
// if id is NULL all sources are returned (distinct)
//
+
+ Log(detector, Form("GetFileSources - Retrieving sources with id %s from %s", id, GetSystemName(system)));
// check if test mode should simulate a FXS error
if (fTestMode & kErrorFXSSources)
return 0;
}
-
if (system == kDCS)
{
- AliError("DCS system has only one source of data!");
- return NULL;
+ AliWarning("DCS system has only one source of data!");
+ TList *list = new TList();
+ list->SetOwner(1);
+ list->Add(new TObjString(" "));
+ return list;
}
// check connection, in case connect
return list;
}
- TSQLRow* aRow;
+ Log(detector, Form("GetFileSources - Found %d sources", aResult->GetRowCount()));
+ TSQLRow* aRow;
while ((aRow = aResult->Next()))
{
// Get all ids of condition files produced by a given source from file exchange servers
//
+ Log(detector, Form("GetFileIDs - Retrieving ids with source %s with %s", source, GetSystemName(system)));
+
// check if test mode should simulate a FXS error
if (fTestMode & kErrorFXSSources)
{
return list;
}
+ Log(detector, Form("GetFileIDs - Found %d ids", aResult->GetRowCount()));
+
TSQLRow* aRow;
while ((aRow = aResult->Next()))
return fLogbookEntry->GetRunType();
}
+//______________________________________________________________________________________________
+Bool_t AliShuttle::GetHLTStatus()
+{
+ // Return HLT status (ON=1 OFF=0)
+ // Converts the HLT status from the status string read in the run logbook (not just a bool)
+
+ if(!fLogbookEntry) {
+ AliError("No logbook entry!");
+ return 0;
+ }
+
+ // TODO implement when HLTStatus is inserted in run logbook
+ //TString hltStatus = fLogbookEntry->GetRunParameter("HLTStatus");
+ //if(hltStatus == "OFF") {return kFALSE};
+
+ return kTRUE;
+}
+
//______________________________________________________________________________________________
void AliShuttle::SetShuttleTempDir(const char* tmpDir)
{