]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - SHUTTLE/AliShuttleConfig.cxx
Updated comments (Raffaele)
[u/mrichter/AliRoot.git] / SHUTTLE / AliShuttleConfig.cxx
index 44450dd2969abb147582ab92142d2a108175815f..bbdb821e53f39db9415b94dbce22bbeb77f29f8d 100644 (file)
 
 /*
 $Log$
+Revision 1.8  2006/08/15 10:50:00  jgrosseo
+effc++ corrections (alberto)
+
+Revision 1.7  2006/07/20 09:54:40  jgrosseo
+introducing status management: The processing per subdetector is divided into several steps,
+after each step the status is stored on disk. If the system crashes in any of the steps the Shuttle
+can keep track of the number of failures and skips further processing after a certain threshold is
+exceeded. These thresholds can be configured in LDAP.
+
 Revision 1.6  2006/07/19 10:09:55  jgrosseo
 new configuration, accesst to DAQ FES (Alberto)
 
@@ -82,13 +91,14 @@ AliShuttleConfig::AliShuttleConfigHolder::AliShuttleConfigHolder(const TLDAPEntr
 fDetector(""),
 fDCSHost(""),
 fDCSPort(0),
-fDCSAliases(),
 fIsValid(kFALSE),
 fSkipDCSQuery(kFALSE)
 {
 // constructor of the shuttle configuration holder
 
        TLDAPAttribute* anAttribute;
+       fDCSAliases = new TObjArray();
+       fDCSAliases->SetOwner(1);
 
        anAttribute = entry->GetAttribute("det"); // MUST
        fDetector = anAttribute->GetValue();
@@ -123,7 +133,7 @@ fSkipDCSQuery(kFALSE)
 
        const char* anAlias;
        while ((anAlias = anAttribute->GetValue())) {
-               fDCSAliases.AddLast(new TObjString(anAlias));
+               fDCSAliases->AddLast(new TObjString(anAlias));
        }
 
        fIsValid = kTRUE;
@@ -136,7 +146,7 @@ AliShuttleConfig::AliShuttleConfigHolder::~AliShuttleConfigHolder()
 {
 // destructor of the shuttle configuration holder
 
-       fDCSAliases.Delete();
+       delete fDCSAliases;
 }
 
 ClassImp(AliShuttleConfig)
@@ -145,7 +155,9 @@ ClassImp(AliShuttleConfig)
 AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        const char* binddn, const char* password, const char* basedn):
        fIsValid(kFALSE),
-       fProcessAll(kFALSE)
+       fDAQlbHost(""), fDAQlbUser(""), fDAQlbPass(""),
+       fMaxPPRetries(0), fMaxRetries(0), fDetectorMap(), fDetectorList(),
+       fShuttleInstanceHost(""), fProcessedDetectors(), fProcessAll(kFALSE)
 {
        //
        // host: ldap server host
@@ -156,23 +168,24 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        // (objectClass=shuttleConfig) will be used as detector configurations.
        //
 
+       fDetectorMap.SetOwner();
+       fDetectorList.SetOwner(0); //fDetectorList and fDetectorMap share the same object!
+       fProcessedDetectors.SetOwner();
+
        TLDAPServer aServer(host, port, binddn, password, 3);
 
        if (!aServer.IsConnected()) {
-               AliError(Form("Can't connect to ldap server %s:%d", 
+               AliError(Form("Can't connect to ldap server %s:%d",
                                host, port));
                return;
        }
 
        // reads configuration for the shuttle running on this machine
-       
+
        fShuttleInstanceHost = gSystem->HostName();
-       TString queryFilter = "(ShuttleHost=";
-       queryFilter += fShuttleInstanceHost;
-       queryFilter += ")";     
-       
-       TLDAPResult* aResult = aServer.Search(basedn, LDAP_SCOPE_ONELEVEL,
-                       queryFilter.Data());
+       TString queryFilter = Form("(ShuttleHost=%s)", fShuttleInstanceHost.Data());
+
+       TLDAPResult* aResult = aServer.Search(basedn, LDAP_SCOPE_ONELEVEL, queryFilter.Data());
 
        if (!aResult) {
                AliError(Form("Can't find configuration with base DN: %s",
@@ -190,11 +203,12 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        if (aResult->GetCount() > 1) {
                AliError(Form("More than one Shuttle instance for host %s!",
                                        fShuttleInstanceHost.Data()));
+               delete aResult;
                return;
        }
 
-       TLDAPEntry* anEntry;
-       TLDAPAttribute* anAttribute;
+       TLDAPEntry* anEntry = 0;
+       TLDAPAttribute* anAttribute = 0;
 
        if(!fProcessAll){
                anEntry = aResult->GetNext();
@@ -206,13 +220,13 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
                }
        }
 
+       delete anEntry; delete aResult;
+
        // Detector configuration (DCS Archive DB settings)
 
-       aResult = aServer.Search(basedn, LDAP_SCOPE_ONELEVEL,
-                       "(objectClass=AliShuttleDetector)");
+       aResult = aServer.Search(basedn, LDAP_SCOPE_ONELEVEL, "(objectClass=AliShuttleDetector)");
        if (!aResult) {
-               AliError(Form("Can't find configuration with base DN: %s",
-                               basedn));
+               AliError(Form("Can't find configuration with base DN: %s", basedn));
                return;
        }
 
@@ -224,6 +238,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
                if (!aHolder->IsValid()) {
                        AliError("Detector configuration error!");
                        delete aHolder;
+                       delete aResult;
                        return;
                }
 
@@ -246,11 +261,13 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
 
        if (aResult->GetCount() == 0) {
                AliError("Can't find DAQ logbook configuration!");
+               delete aResult;
                return;
        }
 
        if (aResult->GetCount() > 1) {
                AliError("More than one DAQ logbook configuration found!");
+               delete aResult;
                return;
        }
 
@@ -259,6 +276,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        anAttribute = anEntry->GetAttribute("DAQLogbookHost");
        if (!anAttribute) {
                AliError("Can't find DAQLogbookHost attribute!");
+               delete anEntry; delete aResult;
                return;
        }
        fDAQlbHost = anAttribute->GetValue();
@@ -266,6 +284,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        anAttribute = anEntry->GetAttribute("DAQLogbookUser");
        if (!anAttribute) {
                AliError("Can't find DAQLogbookUser attribute!");
+               delete aResult; delete anEntry;
                return;
        }
        fDAQlbUser = anAttribute->GetValue();
@@ -273,6 +292,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        anAttribute = anEntry->GetAttribute("DAQLogbookPassword");
        if (!anAttribute) {
                AliError("Can't find DAQLogbookPassword attribute!");
+               delete aResult; delete anEntry;
                return;
        }
        fDAQlbPass = anAttribute->GetValue();
@@ -280,25 +300,25 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        anAttribute = anEntry->GetAttribute("MaxPPRetries");
        if (!anAttribute) {
                AliError("Can't find MaxPPRetries attribute!");
+               delete aResult; delete anEntry;
                return;
        }
        TString tmpStr = anAttribute->GetValue();
-  fMaxPPRetries = tmpStr.Atoi();
+       fMaxPPRetries = tmpStr.Atoi();
 
        anAttribute = anEntry->GetAttribute("MaxRetries");
        if (!anAttribute) {
                AliError("Can't find MaxRetries attribute!");
+               delete aResult; delete anEntry;
                return;
        }
        tmpStr = anAttribute->GetValue();
-  fMaxRetries = tmpStr.Atoi();
+       fMaxRetries = tmpStr.Atoi();
 
-  delete anEntry;
-       delete aResult;
+       delete aResult; delete anEntry;
 
        // FES configuration (FES logbook and hosts)
 
-
        for(int iSys=0;iSys<3;iSys++){
                queryFilter = Form("(system=%s)", AliShuttleInterface::fkSystemNames[iSys]);
                aResult = aServer.Search(basedn, LDAP_SCOPE_ONELEVEL, queryFilter.Data());
@@ -310,6 +330,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
 
                if (aResult->GetCount() != 1 ) {
                        AliError("Error in FES configuration!");
+                       delete aResult;
                        return;
                }
 
@@ -319,6 +340,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
                if (!anAttribute) {
                        AliError(Form ("Can't find LogbookHost attribute for %s!!",
                                                AliShuttleInterface::fkSystemNames[iSys]));
+                       delete aResult; delete anEntry;
                        return;
                }
                fFESlbHost[iSys] = anAttribute->GetValue();
@@ -327,6 +349,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
                if (!anAttribute) {
                        AliError(Form ("Can't find LogbookUser attribute for %s!!",
                                                AliShuttleInterface::fkSystemNames[iSys]));
+                       delete aResult; delete anEntry;
                        return;
                }
                fFESlbUser[iSys] = anAttribute->GetValue();
@@ -335,6 +358,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
                if (!anAttribute) {
                        AliError(Form ("Can't find LogbookPassword attribute for %s!!",
                                                AliShuttleInterface::fkSystemNames[iSys]));
+                       delete aResult; delete anEntry;
                        return;
                }
                fFESlbPass[iSys] = anAttribute->GetValue();
@@ -343,6 +367,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
                if (!anAttribute) {
                        AliError(Form ("Can't find FSHost attribute for %s!!",
                                                AliShuttleInterface::fkSystemNames[iSys]));
+                       delete aResult; delete anEntry;
                        return;
                }
                fFESHost[iSys] = anAttribute->GetValue();
@@ -351,6 +376,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
                if (!anAttribute) {
                        AliError(Form ("Can't find FSUser attribute for %s!!",
                                                AliShuttleInterface::fkSystemNames[iSys]));
+                       delete aResult; delete anEntry;
                        return;
                }
                fFESUser[iSys] = anAttribute->GetValue();
@@ -358,8 +384,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
                anAttribute = anEntry->GetAttribute("FSPassword");
                if (anAttribute) fFESPass[iSys] = anAttribute->GetValue();
 
-               delete anEntry;
-               delete aResult;
+               delete aResult; delete anEntry;
        }
 
        fIsValid = kTRUE;
@@ -371,6 +396,8 @@ AliShuttleConfig::~AliShuttleConfig()
 // destructor
 
        fDetectorMap.DeleteAll();
+       fDetectorList.Clear();
+       fProcessedDetectors.Delete();
 }
 
 //______________________________________________________________________________________________
@@ -482,6 +509,8 @@ void AliShuttleConfig::Print(Option_t* /*option*/) const
                result += "\n\n";
        }
 
+       result += Form("Max PP retries = %d - Max total retries = %d\n\n", fMaxPPRetries, fMaxRetries);
+
        result += Form("DAQ Logbook Configuration \n \tHost: %s - User: %s - ",
                fDAQlbHost.Data(), fDAQlbUser.Data());