/*
$Log$
+Revision 1.39 2007/04/17 12:43:57 acolla
+Correction in StoreOCDB; change of text in mail to detector expert
+
Revision 1.38 2007/04/12 08:26:18 jgrosseo
updated comment
return kFALSE;
}
+ AliInfo("Storing OCDB data ...");
+ Bool_t resultCDB = StoreOCDB(fgkMainCDB);
+
AliInfo("Storing reference data ...");
Bool_t resultRef = StoreOCDB(fgkMainRefStorage);
AliInfo("Storing reference files ...");
Bool_t resultRefFiles = StoreRefFilesToGrid();
- AliInfo("Storing OCDB data ...");
- Bool_t resultCDB = StoreOCDB(fgkMainCDB);
-
return resultCDB && resultRef && resultRefFiles;
}
TObjArray* gridIds=0;
Bool_t result = kTRUE;
- // to check whether all files have been transferred, or some files were left behind
- // because the run is not first unprocessed
- Bool_t willDoAgain = kFALSE;
const char* type = 0;
TString localURI;
Log("SHUTTLE", Form("StoreOCDB - %s: object %s has validity infinite but "
"there are previous unprocessed runs!",
fCurrentDetector.Data(), aLocId.GetPath().Data()));
- willDoAgain=kTRUE;
continue;
}
}
}
localEntries->Clear();
-
- if(result && willDoAgain) {
- Log(fCurrentDetector.Data(),
- "Some files have been left on local storage, will try again later!");
- result = kFALSE;
- }
return result;
}
//
// Transfers the reference file to the Grid.
//
- // The file is stored under the following location:
+ // The files are stored under the following location:
// <base folder of reference storage>/<DET>/<RUN#>_<gridFileName>
- // where <gridFileName> is the second parameter given to the function
- //
+ //
AliCDBManager* man = AliCDBManager::Instance();
AliCDBStorage* sto = man->GetStorage(fgkLocalRefStorage);
if (fConfig->StrictRunOrder(fCurrentDetector) &&
!fFirstUnprocessed[GetDetPos(fCurrentDetector)])
{
- Log("SHUTTLE", Form("ContinueProcessing - %s requires strict run ordering but this is not the first unprocessed run!"));
- return kFALSE;
+ if (fTestMode == kNone)
+ {
+ Log("SHUTTLE", Form("ContinueProcessing - %s requires strict run ordering but this is not the first unprocessed run!"));
+ return kFALSE;
+ }
+ else
+ {
+ Log("SHUTTLE", Form("ContinueProcessing - In TESTMODE - Although %s requires strict run ordering and this is not the first unprocessed run, the SHUTTLE continues"));
+ }
}
AliShuttleStatus* status = ReadShuttleStatus();
return 0;
}
+ TList *list = new TList();
+ list->SetOwner(1);
+
if (aResult->GetRowCount() == 0)
{
Log(detector,
Form("GetFileSources - No entry in %s FXS table for id: %s", GetSystemName(system), id));
delete aResult;
- return 0;
+ return list;
}
TSQLRow* aRow;
- TList *list = new TList();
- list->SetOwner(1);
while ((aRow = aResult->Next()))
{
to.Remove(to.Length()-1);
AliDebug(2, Form("to: %s",to.Data()));
- // TODO this will be removed...
- if (to.Contains("not_yet_set")) {
+ if (to.IsNull()) {
AliInfo("List of detector responsibles not yet set!");
return kFALSE;
}
TString body = Form("Dear %s expert(s), \n\n", fCurrentDetector.Data());
body += Form("SHUTTLE just detected that your preprocessor "
- "FAILED after %d retries in run %d!!\n\n", fConfig->GetMaxRetries(), GetCurrentRun());
+ "exited with ERROR state in run %d!!\n\n", GetCurrentRun());
body += Form("Please check %s status on the web page asap!\n\n", fCurrentDetector.Data());
body += Form("The last 10 lines of %s log file are following:\n\n");
/*
$Log$
+Revision 1.20 2007/04/04 10:33:36 jgrosseo
+1) Storing of files to the Grid is now done _after_ your preprocessors succeeded. This is transparent, which means that you can still use the same functions (Store, StoreReferenceData) to store files to the Grid. However, the Shuttle first stores them locally and transfers them after the preprocessor finished. The return code of these two functions has changed from UInt_t to Bool_t which gives you the success of the storing.
+In case of an error with the Grid, the Shuttle will retry the storing later, the preprocessor does not need to be run again.
+
+2) The meaning of the return code of the preprocessor has changed. 0 is now success and any other value means failure. This value is stored in the log and you can use it to keep details about the error condition.
+
+3) New function StoreReferenceFile to _directly_ store a file (without opening it) to the reference storage.
+
+4) The memory usage of the preprocessor is monitored. If it exceeds 2 GB it is terminated.
+
+5) New function AliPreprocessor::ProcessDCS(). If you do not need to have DCS data in all cases, you can skip the processing by implemting this function and returning kFALSE under certain conditions. E.g. if there is a certain run type.
+If you always need DCS data (like before), you do not need to implement it.
+
+6) The run type has been added to the monitoring page
+
Revision 1.19 2007/02/28 10:41:56 acolla
Run type field added in SHUTTLE framework. Run type is read from "run type" logbook and retrieved by
AliPreprocessor::GetRunType() function.
fStrictRunOrder = (Bool_t) strictRunStr.Atoi();
}
- anAttribute = entry->GetAttribute("responsible"); // MUST
+ anAttribute = entry->GetAttribute("responsible"); // MAY
if (!anAttribute)
{
- AliError(Form("Invalid configuration! No \"responsible\" attribute!"));
- return;
+ AliDebug(2, "Warning! No \"responsible\" attribute!");
}
- const char* aResponsible;
- while ((aResponsible = anAttribute->GetValue()))
+ else
{
- fResponsibles->AddLast(new TObjString(aResponsible));
+ const char* aResponsible;
+ while ((aResponsible = anAttribute->GetValue()))
+ {
+ fResponsibles->AddLast(new TObjString(aResponsible));
+ }
}
-
+
anAttribute = entry->GetAttribute("DCSHost"); // MAY
if (!anAttribute)
{
/*
$Log$
+Revision 1.11 2007/04/04 10:33:36 jgrosseo
+1) Storing of files to the Grid is now done _after_ your preprocessors succeeded. This is transparent, which means that you can still use the same functions (Store, StoreReferenceData) to store files to the Grid. However, the Shuttle first stores them locally and transfers them after the preprocessor finished. The return code of these two functions has changed from UInt_t to Bool_t which gives you the success of the storing.
+In case of an error with the Grid, the Shuttle will retry the storing later, the preprocessor does not need to be run again.
+
+2) The meaning of the return code of the preprocessor has changed. 0 is now success and any other value means failure. This value is stored in the log and you can use it to keep details about the error condition.
+
+3) New function StoreReferenceFile to _directly_ store a file (without opening it) to the reference storage.
+
+4) The memory usage of the preprocessor is monitored. If it exceeds 2 GB it is terminated.
+
+5) New function AliPreprocessor::ProcessDCS(). If you do not need to have DCS data in all cases, you can skip the processing by implemting this function and returning kFALSE under certain conditions. E.g. if there is a certain run type.
+If you always need DCS data (like before), you do not need to implement it.
+
+6) The run type has been added to the monitoring page
+
Revision 1.10 2007/02/28 10:41:01 acolla
Run type field added in SHUTTLE framework. Run type is read from "run type" logbook and retrieved by
AliPreprocessor::GetRunType() function.
sourceList = dynamic_cast<TMap*> (sourceListPair->Value());
if (!sourceList)
{
- AliError(Form("Could not find any file in %s with id %s (%s)", fkSystemNames[system], id, key.Data()));
- return 0;
+ AliInfo(Form("Could not find any file in %s with id %s (%s)", fkSystemNames[system], id, key.Data()));
+ return new TList;
}
TIterator* iter = sourceList->GetTable()->MakeIterator();
NAME 'AliShuttleDetector'
DESC 'ALICE: Shuttle configuration object.'
SUP top
- MUST (det $ StrictRunOrder $ responsible)
- MAY (DCSHost $ DCSPort $ DCSalias $ DCSdatapoint) )
+ MUST (det $ StrictRunOrder)
+ MAY (DCSHost $ DCSPort $ DCSalias $ DCSdatapoint $ responsible) )
objectidentifier SYS_CONFIG SHUTTLE_BASE:2