--- /dev/null
+#include "AliEmptyPreprocessor.h"
+
+// This preprocessor is used as a placeholder for non-existing preprocessors
+// during the FDR. Its task is just to fail, so that the run does not stay
+// in processing state forever.
+
+ClassImp(AliEmptyPreprocessor)
+
+//______________________________________________________________________________________________
+AliEmptyPreprocessor::AliEmptyPreprocessor(AliShuttleInterface* shuttle, const char* detector) :
+ AliPreprocessor(detector, shuttle)
+{
+ // constructor
+}
+
+//______________________________________________________________________________________________
+AliEmptyPreprocessor::~AliEmptyPreprocessor()
+{
+ // destructor
+}
+
--- /dev/null
+#ifndef ALIEMPTYPREPROCESSOR_H
+#define ALIEMPTYPREPROCESSOR_H
+
+#include "AliPreprocessor.h"
+
+// This preprocessor is used as a placeholder for non-existing preprocessors
+// during the FDR. Its task is just to fail, so that the run does not stay
+// in processing state forever.
+
+class AliEmptyPreprocessor : public AliPreprocessor
+{
+ public:
+ AliEmptyPreprocessor(AliShuttleInterface* shuttle, const char* detector);
+ virtual ~AliEmptyPreprocessor();
+
+ protected:
+ virtual UInt_t Process(TMap* dcsAliasMap) { return 1; }
+ virtual Bool_t ProcessDCS() { return kFALSE; }
+
+ private:
+ ClassDef(AliEmptyPreprocessor, 0);
+};
+
+#endif
/*
$Log$
+Revision 1.73 2007/12/14 19:31:36 acolla
+Sending email to DCS experts is temporarily commented
+
Revision 1.72 2007/12/13 15:44:28 acolla
Run type added in mail sent to detector expert (eases understanding)
Log("SHUTTLE", Form("StoreOCDB - %s: object %s has validity infinite but "
"there are previous unprocessed runs!",
fCurrentDetector.Data(), aLocId.GetPath().Data()));
+ result = kFALSE;
continue;
}
fgkMainRefStorage = Form("alien://folder=/alice/data/%d/%s/Reference?user=alidaq?cacheFold=/tmp/OCDBCache",
GetCurrentYear(), lhcPeriod.Data());
- AliCDBStorage *mainCDBSto = AliCDBManager::Instance()->GetStorage(fgkMainCDB);
- if(mainCDBSto) mainCDBSto->QueryCDB(GetCurrentRun());
- AliCDBStorage *mainRefSto = AliCDBManager::Instance()->GetStorage(fgkMainRefStorage);
- if(mainRefSto) mainRefSto->QueryCDB(GetCurrentRun());
-
// Loop on detectors in the configuration
TIter iter(fConfig->GetDetectors());
TObjString* aDetector = 0;
+ Bool_t first = kTRUE;
+
while ((aDetector = (TObjString*) iter.Next()))
{
fCurrentDetector = aDetector->String();
if (ContinueProcessing() == kFALSE) continue;
+
+ if (first)
+ {
+ // only read QueryCDB when needed and only once
+ AliCDBStorage *mainCDBSto = AliCDBManager::Instance()->GetStorage(fgkMainCDB);
+ if(mainCDBSto) mainCDBSto->QueryCDB(GetCurrentRun());
+ AliCDBStorage *mainRefSto = AliCDBManager::Instance()->GetStorage(fgkMainRefStorage);
+ if(mainRefSto) mainRefSto->QueryCDB(GetCurrentRun());
+ first = kFALSE;
+ }
Log("SHUTTLE", Form("\t\t\t****** run %d - %s: START ******",
GetCurrentRun(), aDetector->GetName()));
}
// save map into file, to help debugging in case of preprocessor error
- TFile* f = TFile::Open("DCSMap.root","recreate");
+ /*TFile* f = TFile::Open("DCSMap.root","recreate");
f->cd();
dcsMap->Write("DCSMap", TObject::kSingleKey);
f->Close();
- delete f;
+ delete f;*/
// DCS Archive DB processing successful. Call Preprocessor!
UpdateShuttleStatus(AliShuttleStatus::kPPStarted);
gSystem->FreeDirectory(dir);
}
- TString bodyFileName;
- bodyFileName.Form("%s/mail.body", GetShuttleLogDir());
- gSystem->ExpandPathName(bodyFileName);
-
- ofstream mailBody;
- mailBody.open(bodyFileName, ofstream::out);
-
- if (!mailBody.is_open())
- {
- Log("SHUTTLE", Form("Could not open mail body file %s", bodyFileName.Data()));
- return kFALSE;
- }
-
TString to="";
TIter iterExperts(fConfig->GetResponsibles(fCurrentDetector));
TObjString *anExpert=0;
{
to += Form("%s,", anExpert->GetName());
}
- to.Remove(to.Length()-1);
+ if (to.Length() > 0)
+ to.Remove(to.Length()-1);
AliDebug(2, Form("to: %s",to.Data()));
if (to.IsNull()) {
return kFALSE;
}
+ TString bodyFileName;
+ bodyFileName.Form("%s/mail.body", GetShuttleLogDir());
+ gSystem->ExpandPathName(bodyFileName);
+
+ ofstream mailBody;
+ mailBody.open(bodyFileName, ofstream::out);
+
+ if (!mailBody.is_open())
+ {
+ Log("SHUTTLE", Form("Could not open mail body file %s", bodyFileName.Data()));
+ return kFALSE;
+ }
+
TString cc="alberto.colla@cern.ch";
TString subject = Form("%s Shuttle preprocessor FAILED in run %d (run type = %s)!",
{
body += Form("\thttp://pcalimonitor.cern.ch:8889/shuttle.jsp?time=168 \n\n");
} else {
- body += Form("\thttp://pcalimonitor.cern.ch/shuttle.jsp?instance=PROD?time=168 \n\n");
+ body += Form("\thttp://pcalimonitor.cern.ch/shuttle.jsp?instance=PROD&time=168 \n\n");
}
/*
$Log$
+Revision 1.26 2007/12/07 19:14:36 acolla
+in AliShuttleTrigger:
+
+Added automatic collection of new runs on a regular time basis (settable from the configuration)
+
+in AliShuttleConfig: new members
+
+- triggerWait: time to wait for DIM trigger (s) before starting automatic collection of new runs
+- mode: run mode (test, prod) -> used to build log folder (logs or logs_PROD)
+
+in AliShuttle:
+
+- logs now stored in logs/#RUN/DET_#RUN.log
+
Revision 1.25 2007/11/26 16:58:37 acolla
Monalisa configuration added: host and table name
anAttribute = anEntry->GetAttribute("mode");
if (!anAttribute) {
AliWarning("Run mode not set! Running in test mode.");
- }
- tmpStr = anAttribute->GetValue();
- if (tmpStr == "test")
- {
- fRunMode = kTest;
- } else if (tmpStr == "prod") {
- fRunMode = kProd;
} else {
- AliWarning(Form("Not a valid run mode: %s", tmpStr.Data()));
- AliWarning("Valid run modes are \"test\" and \"prod\". Running in test mode.");
+ tmpStr = anAttribute->GetValue();
+ if (tmpStr == "test")
+ {
+ fRunMode = kTest;
+ } else if (tmpStr == "prod") {
+ fRunMode = kProd;
+ } else {
+ AliWarning(Form("Not a valid run mode: %s", tmpStr.Data()));
+ AliWarning("Valid run modes are \"test\" and \"prod\". Running in test mode.");
+ }
}
return 0;
-
-
}
//______________________________________________________________________________________________