Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ecal laser update: Changed a system("mv") by a rename() and removed second attempt to read matacq file to speed up the processing when the file is missing #34623

Merged
merged 2 commits into from Jul 29, 2021

Conversation

grasph
Copy link
Contributor

@grasph grasph commented Jul 26, 2021

PR description:

Sync with code used at P5

PR validation:

MWGR

@cmsbuild
Copy link
Contributor

-code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-34623/24208

ERROR: Build errors found during clang-tidy run.

@grasph
Copy link
Contributor Author

grasph commented Jul 26, 2021

I don't know why there are so many conflicts. The changes I want to commit are limited to files:

M CalibCalorimetry/EcalLaserSorting/interface/WatcherStreamFileReader.h
M CalibCalorimetry/EcalLaserSorting/src/WatcherStreamFileReader.cc
M EventFilter/EcalRawToDigi/plugins/MatacqProducer.cc

Here is the patch that needs to be applied.

diff --git a/CalibCalorimetry/EcalLaserSorting/interface/WatcherStreamFileReader.h b/CalibCalorimetry/EcalLaserSorting/interface/WatcherStreamFileReader.h
index 709b8cb..f8d6584 100644
--- a/CalibCalorimetry/EcalLaserSorting/interface/WatcherStreamFileReader.h
+++ b/CalibCalorimetry/EcalLaserSorting/interface/WatcherStreamFileReader.h
@@ -73,9 +73,6 @@ private:
 
   int verbosity_;
 
-  std::string fileListCmd_;
-
-  std::string curDir_;
 };
 
 #endif
diff --git a/CalibCalorimetry/EcalLaserSorting/src/WatcherStreamFileReader.cc b/CalibCalorimetry/EcalLaserSorting/src/WatcherStreamFileReader.cc
index d94db8a..6402851 100644
--- a/CalibCalorimetry/EcalLaserSorting/src/WatcherStreamFileReader.cc
+++ b/CalibCalorimetry/EcalLaserSorting/src/WatcherStreamFileReader.cc
@@ -149,38 +149,6 @@ WatcherStreamFileReader::WatcherStreamFileReader(edm::ParameterSet const& pset)
       }
     }
   }
-
-  std::stringstream fileListCmdBuf;
-  fileListCmdBuf.str("");
-  //    fileListCmdBuf << "/bin/ls -rt " << inputDir_ << " | egrep '(";
-  //by default ls will sort the file alphabetically which will results
-  //in ordering the files in increasing LB number, which is the desired
-  //order.
-  //    fileListCmdBuf << "/bin/ls " << inputDir_ << " | egrep '(";
-  fileListCmdBuf << "/bin/find " << inputDir_ << " -maxdepth 2 -print | egrep '(";
-  //TODO: validate patternDir (see ;, &&, ||) and escape special character
-  if (filePatterns_.empty())
-    throw cms::Exception("WacherSource", "filePatterns parameter is empty");
-  char curDir[PATH_MAX > 0 ? PATH_MAX : 4096];
-  if (getcwd(curDir, sizeof(curDir)) == nullptr) {
-    throw cms::Exception("WatcherSource") << "Failed to retreived working directory path: " << strerror(errno);
-  }
-  curDir_ = curDir;
-
-  for (unsigned i = 0; i < filePatterns_.size(); ++i) {
-    if (i > 0)
-      fileListCmdBuf << "|";
-    //     if(filePatterns_[i].size()>0 && filePatterns_[0] != "/"){//relative path
-    //       fileListCmdBuf << curDir << "/";
-    //     }
-    fileListCmdBuf << filePatterns_[i];
-  }
-  fileListCmdBuf << ")' | sort";
-
-  fileListCmd_ = fileListCmdBuf.str();
-
-  cout << "[WatcherSource " << now() << "]"
-       << " Command to retrieve input files: " << fileListCmd_ << "\n";
 }
 
 WatcherStreamFileReader::~WatcherStreamFileReader() {}
@@ -226,6 +194,40 @@ const EventMsgView* WatcherStreamFileReader::getNextEvent() {
 edm::StreamerInputFile* WatcherStreamFileReader::getInputFile() {
   char* lineptr = nullptr;
   size_t n = 0;
+  static stringstream cmd;
+  static bool cmdSet = false;
+  static char curDir[PATH_MAX>0?PATH_MAX:4096];
+
+  if(!cmdSet){
+    cmd.str("");
+    //    cmd << "/bin/ls -rt " << inputDir_ << " | egrep '(";
+    //by default ls will sort the file alphabetically which will results
+    //in ordering the files in increasing LB number, which is the desired
+    //order.
+    //    cmd << "/bin/ls " << inputDir_ << " | egrep '(";
+    cmd << "/bin/find " << inputDir_ << " -maxdepth 2 -print | egrep '(";
+    //TODO: validate patternDir (see ;, &&, ||) and escape special character
+    if(filePatterns_.size()==0) return 0;
+    if(getcwd(curDir, sizeof(curDir))==0){
+      throw cms::Exception("WatcherSource")
+        << "Failed to retreived working directory path: "
+        << strerror(errno);
+    }
+
+    for(unsigned i = 0 ; i < filePatterns_.size(); ++i){
+      if(i>0) cmd << "|";
+      //     if(filePatterns_[i].size()>0 && filePatterns_[0] != "/"){//relative path
+      //       cmd << curDir << "/";
+      //     }
+      cmd << filePatterns_[i];
+    }
+    cmd << ")' | sort";
+
+    cout << "[WatcherSource " << now() << "]"
+         << " Command to retrieve input files: "
+         << cmd.str() << "\n";
+    cmdSet = true;
+  }
 
   struct stat buf;
 
@@ -246,36 +248,36 @@ edm::StreamerInputFile* WatcherStreamFileReader::getInputFile() {
         end_ = true;
         break;
       }
-      FILE* s = popen(fileListCmd_.c_str(), "r");
-      if (s == nullptr) {
-        throw cms::Exception("WatcherSource") << "Failed to retrieve list of input file: " << strerror(errno);
+      FILE* s = popen(cmd.str().c_str(), "r");
+      if(s==nullptr){
+        throw cms::Exception("WatcherSource")
+          << "Failed to retrieve list of input file: " << strerror(errno);
       }
-
+      
       ssize_t len;
-      while (!feof(s)) {
-        if ((len = getline(&lineptr, &n, s)) > 0) {
+      while(!feof(s)){
+        if((len=getline(&lineptr, &n, s))>0){
           //remove end-of-line character:
-          lineptr[len - 1] = 0;
+          lineptr[len-1] = 0;
           string fileName;
-          if (lineptr[0] != '/') {
-            if (!inputDir_.empty() && inputDir_[0] != '/') {  //relative path
-              fileName.assign(curDir_);
+          if(lineptr[0] != '/'){
+            if(!inputDir_.empty() && inputDir_[0] != '/'){//relative path
+              fileName.assign(curDir);
               fileName.append("/");
               fileName.append(inputDir_);
-            } else {
+            } else{
               fileName.assign(inputDir_);
             }
             fileName.append("/");
           }
           fileName.append(lineptr);
           filesInQueue_.push_back(fileName);
-          if (verbosity_)
-            cout << "[WatcherSource " << now() << "]"
-                 << " File to process: '" << fileName << "'\n";
+          if(verbosity_) cout << "[WatcherSource " << now() << "]"
+                              << " File to process: '"
+                              << fileName << "'\n";
         }
       }
-      while (!feof(s))
-        fgetc(s);
+      while(!feof(s)) fgetc(s);
       pclose(s);
       if (filesInQueue_.empty()) {
         if (!waiting) {
@@ -287,7 +289,8 @@ edm::StreamerInputFile* WatcherStreamFileReader::getInputFile() {
         } else if (!firstWait) {
           timeval t;
           gettimeofday(&t, nullptr);
-          float dt = (t.tv_sec - waitStart.tv_sec) * 1. + (t.tv_usec - waitStart.tv_usec) * 1.e-6;
+	  float dt = (t.tv_sec-waitStart.tv_sec) * 1.
+	    + (t.tv_usec-waitStart.tv_usec) * 1.e-6;
           if ((timeOut_ >= 0) && (dt > timeOut_)) {
             cout << "[WatcherSource " << now() << "]"
                  << " Having waited for new file for " << (int)dt << " sec. "
@@ -308,33 +311,29 @@ edm::StreamerInputFile* WatcherStreamFileReader::getInputFile() {
       fileName_ = filesInQueue_.front();
       filesInQueue_.pop_front();
       int fd = open(fileName_.c_str(), 0);
-      if (fd != 0) {
+      if(fd!=0){
         struct stat buf;
         off_t size = -1;
         //check that file transfer is finished, by monitoring its size:
         time_t t = time(nullptr);
-        for (;;) {
+        for(;;){
           fstat(fd, &buf);
-          if (verbosity_)
-            cout << "file size: " << buf.st_size << ", prev size: " << size << "\n";
-          if (buf.st_size == size)
-            break;
-          else
-            size = buf.st_size;
-          if (difftime(t, buf.st_mtime) > 60)
-            break;  //file older then 1 min=> tansfer must be finished
+          if(verbosity_) cout << "file size: " << buf.st_size << ", prev size: "  << size << "\n";
+          if(buf.st_size==size) break; else size = buf.st_size;
+          if(difftime(t,buf.st_mtime)>60) break; //file older then 1 min=> tansfer must be finished
           sleep(1);
         }
 
-        if (fd != 0 && buf.st_size == 0) {  //file is empty. streamer reader
+        if(fd!=0 && buf.st_size == 0){//file is empty. streamer reader
           //                   does not like empty file=> skip it
           stringstream c;
-          c << "/bin/mv -f \"" << fileName_ << "\" \"" << corruptedDir_ << "/.\"";
-          if (verbosity_)
-            cout << "[WatcherSource " << now() << "]"
-                 << " Excuting " << c.str() << "\n";
+          c << "/bin/mv -f \"" << fileName_ << "\" \"" << corruptedDir_
+            << "/.\"";
+          if(verbosity_) cout << "[WatcherSource " << now() << "]"
+                              << " Executing "
+                              << c.str() << "\n";
           int i = system(c.str().c_str());
-          if (i != 0) {
+          if(i!=0){
             //throw cms::Exception("WatcherSource")
             cout << "[WatcherSource " << now() << "] "
                  << "Failed to move empty file '" << fileName_ << "'"
@@ -345,68 +344,82 @@ edm::StreamerInputFile* WatcherStreamFileReader::getInputFile() {
 
         close(fd);
 
-        vector<char> buf1(fileName_.size() + 1);
+        vector<char> buf1(fileName_.size()+1);
         copy(fileName_.begin(), fileName_.end(), buf1.begin());
-        buf1[buf1.size() - 1] = 0;
+        buf1[buf1.size()-1] = 0;
 
-        vector<char> buf2(fileName_.size() + 1);
+        vector<char> buf2(fileName_.size()+1);
         copy(fileName_.begin(), fileName_.end(), buf2.begin());
-        buf2[buf1.size() - 1] = 0;
+        buf2[buf2.size()-1] = 0;
 
         string dirnam(dirname(&buf1[0]));
         string filenam(basename(&buf2[0]));
 
-        string dest = inprocessDir_ + "/" + filenam;
+        string dest  = inprocessDir_ + "/" + filenam;
 
-        if (verbosity_)
-          cout << "[WatcherSource " << now() << "]"
-               << " Moving file " << fileName_ << " to " << dest << "\n";
+        if(verbosity_) cout << "[WatcherSource " << now() << "]"
+                            << " Moving file "
+                            << fileName_ << " to " << dest << "\n";
 
-        stringstream c;
-        c << "/bin/mv -f \"" << fileName_ << "\" \"" << dest << "/.\"";
+        //	stringstream c;
+        //c << "/bin/mv -f \"" << fileName_ << "\" \"" << dest
+        // << "/.\"";
 
-        if (0 != rename(fileName_.c_str(), dest.c_str())) {
+
+        if(0!=rename(fileName_.c_str(), dest.c_str())){
           //if(0!=system(c.str().c_str())){
           throw cms::Exception("WatcherSource")
-              << "Failed to move file '" << fileName_ << "' "
-              << "to processing directory " << inprocessDir_ << ": " << strerror(errno);
+            << "Failed to move file '" << fileName_ << "' "
+            << "to processing directory " << inprocessDir_
+            << ": " << strerror(errno)  << " (Error no " << errno << ")";
         }
 
         fileName_ = dest;
 
         cout << "[WatcherSource " << now() << "]"
-             << " Opening file " << fileName_ << "\n"
-             << flush;
-        streamerInputFile_ = std::make_unique<edm::StreamerInputFile>(fileName_);
+             << " Opening file " << fileName_ << "\n" << flush;
+        streamerInputFile_
+          = unique_ptr<edm::StreamerInputFile>(new edm::StreamerInputFile(fileName_));
 
         ofstream f(".watcherfile");
         f << fileName_;
-      } else {
+      } else{
         cout << "[WatcherSource " << now() << "]"
              << " Failed to open file " << fileName_ << endl;
       }
-    }  //loop on file queue to find one file which opening succeeded
+    } //loop on file queue to find one file which opening succeeded
   }
   return streamerInputFile_.get();
 }
 
-void WatcherStreamFileReader::closeFile() {
-  if (streamerInputFile_.get() == nullptr)
-    return;
+void WatcherStreamFileReader::closeFile(){
+  if(streamerInputFile_.get()==nullptr) return;
   //delete the streamer input file:
   streamerInputFile_.reset();
   stringstream cmd;
   //TODO: validation of processDir
-  cmd << "/bin/mv -f \"" << fileName_ << "\" \"" << processedDir_ << "/.\"";
-  if (verbosity_)
-    cout << "[WatcherSource " << now() << "]"
-         << " Excuting " << cmd.str() << "\n";
-  int i = system(cmd.str().c_str());
-  if (i != 0) {
-    throw cms::Exception("WatcherSource") << "Failed to move processed file '" << fileName_ << "'"
-                                          << " to processed directory '" << processedDir_ << "'\n";
+  //cmd << "/bin/mv -f \"" << fileName_ << "\" \"" << processedDir_ << "/.\"";
+  //if(verbosity_) cout << "[WatcherSource " << now() << "]"
+  //<< " Executing (in closeFile())" << cmd.str() << "\n";
+  //int i = system(cmd.str().c_str());
+  //cout << "move command done at " << now() << "\n";
+  vector<char> buf(fileName_.size()+1);
+  copy(fileName_.begin(), fileName_.end(), buf.begin());
+  buf[buf.size()-1] = 0;
+  string dest = processedDir_ + "/" + basename(&buf[0]);
+  if(verbosity_) cout << "[WatcherSource " << now() << "]"
+                      << " Moving " << fileName_ << " to " << dest << "... ";
+  int i = rename(fileName_.c_str(), dest.c_str());
+  if(i!=0){
+    throw cms::Exception("WatcherSource")
+      << "Failed to move processed file '" << fileName_ << "'"
+      << " to processed directory '" << processedDir_
+      << ": " << strerror(errno) << " (Error no " << errno << ")";
+    
     //Stop further processing to prevent endless loop:
     end_ = true;
   }
-  cout << flush;
+  if(verbosity_) cout << "Done at " << now() << "\n";
+  
+  //  cout << flush;
 }
diff --git a/EventFilter/EcalRawToDigi/plugins/MatacqProducer.cc b/EventFilter/EcalRawToDigi/plugins/MatacqProducer.cc
index b67ebfc..f6978ef 100644
--- a/EventFilter/EcalRawToDigi/plugins/MatacqProducer.cc
+++ b/EventFilter/EcalRawToDigi/plugins/MatacqProducer.cc
@@ -546,8 +546,9 @@ bool MatacqProducer::getMatacqFile(uint32_t runNumber, uint32_t orbitId, bool* f
   //we make two iterations to handle the case where the event is procesed
   //before the matacq data are available. In such case we would have
   //orbitId > maxOrb (maxOrb: orbit of last written matacq event)
-  for (int itry = 0; itry < 2 && (orbitId > maxOrb); ++itry) {
-    if (itry > 0) {
+  //  for(int itry = 0; itry < 2 && (orbitId > maxOrb); ++itry){
+  for(int itry = 0; itry < 1 && (orbitId > maxOrb); ++itry){
+    if(itry > 0){
       int n_sec = 1;
       std::cout << "[Matacq " << now() << "] Event orbit id (" << orbitId
                 << ") goes "
@@ -564,66 +565,61 @@ bool MatacqProducer::getMatacqFile(uint32_t runNumber, uint32_t orbitId, bool* f
       boost::algorithm::replace_all(fname, "%run_number%", sRunNumber);
 
       glob_t g;
-      int rc = glob(fname.c_str(), GLOB_BRACE, nullptr, &g);
-      if (rc) {
-        if (verbosity_ > 1) {
-          switch (rc) {
-            case GLOB_NOSPACE:
-              std::cout << "[Matacq " << now()
-                        << "] Running out of memory while calling glob function to look for matacq file paths\n";
-              break;
-            case GLOB_ABORTED:
-              std::cout << "[Matacq " << now()
-                        << "] Read error while calling glob function to look for matacq file paths\n";
-              break;
-            case GLOB_NOMATCH:
-              //ok. No message to report.
-              break;
-          }
-          continue;
-        }
-      }  //rc
-      for (unsigned iglob = 0; iglob < g.gl_pathc; ++iglob) {
-        char* thePath = g.gl_pathv[iglob];
-        //FIXME: add sanity check on the path
-        static std::atomic<int> nOpenErrors{0};
-        const int maxOpenErrors = 50;
-        if (!mopen(thePath) && nOpenErrors < maxOpenErrors) {
-          std::cout << "[Matacq " << now() << "] Failed to open file " << thePath;
-          ++nOpenErrors;
-          if (nOpenErrors == maxOpenErrors) {
-            std::cout << nOpenErrors << "This is the " << maxOpenErrors
-                      << "th occurence of this error. Report of this error is now disabled.\n";
-          } else {
-            std::cout << "\n";
-          }
-        }
-        uint32_t firstOrb;
-        uint32_t lastOrb;
-        bool goodRange = getOrbitRange(firstOrb, lastOrb);
-        if (goodRange && lastOrb > maxOrb)
-          maxOrb = lastOrb;
-        if (goodRange && firstOrb <= orbitId && orbitId <= lastOrb) {
-          found = true;
-          //continue;
-          fname = thePath;
-          if (verbosity_ > 1)
-            std::cout << "[Matacq " << now() << "] Switching to file " << fname << "\n";
-          break;
-        }
-      }  //next iglob
+      int rc  = glob(fname.c_str(), GLOB_BRACE, nullptr, &g);
+      if(rc){
+	if(verbosity_ > 1){
+	  switch(rc){
+	  case GLOB_NOSPACE:
+	    std::cout << "[Matacq " << now() << "] Running out of memory while calling glob function to look for matacq file paths\n";
+	    break;
+	  case GLOB_ABORTED:
+	    std::cout << "[Matacq " << now() << "] Read error while calling glob function to look for matacq file paths\n";
+	    break;
+	  case GLOB_NOMATCH:
+	    //ok. No message to report.
+	    break;
+	  }
+	  continue;
+	}
+      } //rc
+      for(unsigned iglob = 0; iglob < g.gl_pathc; ++iglob){
+	char* thePath = g.gl_pathv[iglob];
+	//FIXME: add sanity check on the path
+	static std::atomic<int> nOpenErrors {0};
+	const int maxOpenErrors = 50;
+	if(!mopen(thePath) && nOpenErrors < maxOpenErrors){
+	  std::cout << "[Matacq " << now() << "] Failed to open file " << thePath;
+	  ++nOpenErrors;
+	  if(nOpenErrors == maxOpenErrors){
+	    std::cout << nOpenErrors << "This is the " << maxOpenErrors
+		      << "th occurence of this error. Report of this error is now disabled.\n";
+	  } else{
+	    std::cout << "\n";
+	  }
+	}
+	uint32_t firstOrb;
+	uint32_t lastOrb;
+	bool goodRange = getOrbitRange(firstOrb, lastOrb);
+	std::cout << "Get orbit range " << (goodRange ? "succeeded":"failed") << ". Range: " <<
+	  firstOrb << "..." << lastOrb << "\n";
+	if(goodRange && lastOrb > maxOrb) maxOrb = lastOrb;
+	if(goodRange && firstOrb <= orbitId && orbitId <= lastOrb){
+	  found = true;
+	  //continue;
+	  fname = thePath;
+	  if(verbosity_ > 1) std::cout << "[Matacq " << now() << "] Switching to file " << fname << "\n";
+	  break;
+	}
+      } //next iglob
       globfree(&g);
     }  //next filenames
   }    //next itry
 
   if (found) {
     LogInfo("Matacq") << "Uses matacq data file: '" << fname << "'\n";
-  } else {
-    if (verbosity_ >= 0)
-      cout << "[Matacq " << now()
-           << "] no matacq file found "
-              "for run "
-           << runNumber << "\n";
+  } else{
+    if(verbosity_>=0) cout << "[Matacq " << now() << "] no matacq file found "
+			"for run " << runNumber << ", orbit " << orbitId << "\n";
     eventSkipCounter_ = onErrorDisablingEvtCnt_;
     openedFileRunNumber_ = 0;
     if (fileChange != nullptr)
@@ -1137,10 +1133,15 @@ bool MatacqProducer::getOrbitRange(uint32_t& firstOrb, uint32_t& lastOrb) {
   int len = (int)MatacqRawEvent::getDccLen(header, headerSize);
   //number of complete events. If last event is partially written,
   //it won't be included in the count.
-  unsigned nEvts = fsize / (len * 64);
+  unsigned nEvts = fsize / (len*8);
   //Position of last complete event:
-  filepos_t lastEvtPos = (nEvts - 1) * len * 64;
+  filepos_t lastEvtPos = (filepos_t)(nEvts - 1) * len * 8;
+  //  std::cout << "Move to position : " << lastEvtPos 
+  //	    << "(" << (nEvts - 1) << "*" << len << "*" << 64 << ")"
+  //<< "\n"; 
   mseek(lastEvtPos);
+  filepos_t tmp; mtell(tmp);
+  //std::cout << "New position, sizeof(tmp): " << tmp << "," << sizeof(tmp) << "\n";
   mread((char*)header, headerSize, nullptr, false);
   lastOrb = MatacqRawEvent::getOrbitId(header, headerSize);

@slava77
Copy link
Contributor

slava77 commented Jul 26, 2021

-1

wrong target branch, or the topic branch incorrectly included a git merge of an IB on top of a reference

@grasph
Copy link
Contributor Author

grasph commented Jul 26, 2021

-1

wrong target branch, or the topic branch incorrectly included a git merge of an IB on top of a reference

Which target I should use? I need the code to be eventually included in future releases, but it is not critical from which release it is in.

Philippe.

@slava77
Copy link
Contributor

slava77 commented Jul 26, 2021

-1
wrong target branch, or the topic branch incorrectly included a git merge of an IB on top of a reference

Which target I should use? I need the code to be eventually included in future releases, but it is not critical from which release it is in.

Philippe.

if this is a new feature, then the master branch is good.
However, it looks like you developed in some older release and then instead of a rebase merged the master (well, that's a guess)

http://cms-sw.github.io/tutorial-resolve-conflicts.html

@grasph grasph changed the title Ecal laser update Ecal laser update: Changed a system("mv") by a rename() and removed second attempt to read matacq file to speed up the processing when the file is missing Jul 27, 2021
@grasph
Copy link
Contributor Author

grasph commented Jul 27, 2021

Hi @grasph , can you please have a more descriptive title, and explain what was changed in the PR description? Also please remove commented out lines. Thanks!

I've expanded the title and removed the unnecessary commented-out lines. The remaining ones are useful and kept. on purpose.

@tvami
Copy link
Contributor

tvami commented Jul 27, 2021

@cmsbuild , please test

@cmsbuild
Copy link
Contributor

-1

Failed Tests: UnitTests
Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-a9d58b/17244/summary.html
COMMIT: 361d38e
CMSSW: CMSSW_12_0_X_2021-07-26-2300/slc7_amd64_gcc900
User test area: For local testing, you can use /cvmfs/cms-ci.cern.ch/week1/cms-sw/cmssw/34623/17244/install.sh to create a dev area with all the needed externals and cmssw changes.

The following merge commits were also included on top of IB + this PR after doing git cms-merge-topic:

You can see more details here:
https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-a9d58b/17244/git-recent-commits.json
https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-a9d58b/17244/git-merge-result

Unit Tests

I found errors in the following unit tests:

---> test test_PixelBaryCentreTool had ERRORS

Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 7 differences found in the comparisons
  • DQMHistoTests: Total files compared: 39
  • DQMHistoTests: Total histograms compared: 2998564
  • DQMHistoTests: Total failures: 12
  • DQMHistoTests: Total nulls: 1
  • DQMHistoTests: Total successes: 2998529
  • DQMHistoTests: Total skipped: 22
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.004 KiB( 38 files compared)
  • DQMHistoSizes: changed ( 312.0 ): 0.004 KiB MessageLogger/Warnings
  • Checked 165 log files, 37 edm output root files, 39 DQM output files
  • TriggerResults: no differences found

@tvami
Copy link
Contributor

tvami commented Jul 27, 2021

@cmsbuild, please test with #34654

@cmsbuild
Copy link
Contributor

+1

Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-a9d58b/17276/summary.html
COMMIT: 361d38e
CMSSW: CMSSW_12_0_X_2021-07-27-1100/slc7_amd64_gcc900
User test area: For local testing, you can use /cvmfs/cms-ci.cern.ch/week1/cms-sw/cmssw/34623/17276/install.sh to create a dev area with all the needed externals and cmssw changes.

The following merge commits were also included on top of IB + this PR after doing git cms-merge-topic:

You can see more details here:
https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-a9d58b/17276/git-recent-commits.json
https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-a9d58b/17276/git-merge-result

Comparison Summary

The workflows 140.53 have different files in step1_dasquery.log than the ones found in the baseline. You may want to check and retrigger the tests if necessary. You can check it in the "files" directory in the results of the comparisons

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 1299 differences found in the comparisons
  • DQMHistoTests: Total files compared: 39
  • DQMHistoTests: Total histograms compared: 2998564
  • DQMHistoTests: Total failures: 3672
  • DQMHistoTests: Total nulls: 19
  • DQMHistoTests: Total successes: 2994851
  • DQMHistoTests: Total skipped: 22
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: -45.703 KiB( 38 files compared)
  • DQMHistoSizes: changed ( 140.53 ): -44.531 KiB Hcal/DigiRunHarvesting
  • DQMHistoSizes: changed ( 140.53 ): -1.172 KiB RPC/DCSInfo
  • Checked 165 log files, 37 edm output root files, 39 DQM output files
  • TriggerResults: no differences found

@slava77
Copy link
Contributor

slava77 commented Jul 28, 2021

+reconstruction

for #34623 361d38e

  • code changes are in line with the PR description and somewhat in line with the follow up review
    • some of the cout and commented out code could still be cleaned up, but since MatacqProducer is not running in the (offline/multithreaded) production environment, it is perhaps acceptable.
  • jenkins tests pass and comparisons with the baseline show no relevant differences
    • the observed differences are in wf 140.53 are unrelated to this PR, they are related to some DAS glitch in the baseline or this PR

@tvami
Copy link
Contributor

tvami commented Jul 28, 2021

+alca

@cmsbuild
Copy link
Contributor

This pull request is fully signed and it will be integrated in one of the next master IBs (tests are also fine). This pull request will now be reviewed by the release team before it's merged. @silviodonato, @dpiparo, @qliphy, @perrotta (and backports should be raised in the release meeting by the corresponding L2)

@perrotta
Copy link
Contributor

+1

  • Meant to synchronize with the code used online for the MWGR, it will have to be backported anyhow eventually

@cmsbuild cmsbuild merged commit 51de5a6 into cms-sw:master Jul 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants