diff --git a/Script/Database.py b/Script/Database.py index 4f1fc9382391de8af3dd17a704a72bb5cb4151bc..da87861712eb240993e6bf1af0fcc9bc13cfd9f7 100755 --- a/Script/Database.py +++ b/Script/Database.py @@ -217,77 +217,109 @@ class Database: # end if,else def lbtransfer(self,parsed): - sql="update "+ self.lb_table + " " - sql+="set state='TRANSFERRED', t_stamp = :newdate " - sql+="where sfoid = :ssfo and runnr = :srunnr and lumiblocknr = :slbnr" - sql+=" and streamtype = :sstreamt and stream = :sstreamn " - sql+=" and state = 'CLOSED'" - args=[] + keys={} - keys['newdate']=datetime.datetime.utcfromtimestamp(time.time()) keys['ssfo']=parsed.AppId() keys['srunnr']=parsed.RunNr() keys['slbnr']=parsed.LBNr() keys['sstreamt']=parsed.StreamType() keys['sstreamn']=parsed.StreamName() - args.insert(0,sql) - nrow = self.db.execute(args,keys) - if nrow != 1: - logInfo = {'file':self.logger.findCaller()[0], - 'line':self.logger.findCaller()[1]} - self.logger.error('Not exactly one entry updated in '+ - 'lumiblock table for SFO ' + str(parsed.AppId())+ - ', run ' + str(parsed.RunNr()) + - ', lumiblock ' + str(parsed.LBNr()) + - ', stream type ' + str(parsed.StreamType()) + - ', stream name ' + str(parsed.StreamName()), - extra = logInfo) - else: - logInfo = {'file':self.logger.findCaller()[0], - 'line':self.logger.findCaller()[1]} - self.logger.debug('Lumiblock table. Lumiblock state updated '+ - 'to TRANSFERRED for SFO ' + str(parsed.AppId()) + - ', run ' + str(parsed.RunNr()) + - ', lumiblock ' + str(parsed.LBNr()) + - ', stream type ' + str(parsed.StreamType()) + - ', stream name ' + str(parsed.StreamName()), - extra = logInfo) - # end if,else + + sql="select state from " + self.lb_table + " " + sql+="where sfoid = :ssfo and runnr = :srunnr and lumiblocknr = :slbnr" + sql+=" and streamtype = :sstreamt and stream = :sstreamn" + + args = [sql,] + self.db.execute(args,keys) + state = self.db.getNextRow()[0] + + if state == 'CLOSED': + sql="update "+ self.lb_table + " " + sql+="set state='TRANSFERRED', t_stamp = :newdate " + sql+="where sfoid = :ssfo and runnr = :srunnr " + sql+=" and lumiblocknr = :slbnr" + sql+=" and streamtype = :sstreamt and stream = :sstreamn " + sql+=" and state = 'CLOSED'" + + keys['newdate']=datetime.datetime.utcfromtimestamp(time.time()) + + args = [sql,] + nrow = self.db.execute(args,keys) + + if nrow != 1: + logInfo = {'file':self.logger.findCaller()[0], + 'line':self.logger.findCaller()[1]} + self.logger.error('Not exactly one entry updated in '+ + 'lumiblock table for SFO ' + + str(parsed.AppId())+ + ', run ' + str(parsed.RunNr()) + + ', lumiblock ' + str(parsed.LBNr()) + + ', stream type ' + str(parsed.StreamType()) + + ', stream name ' + str(parsed.StreamName()), + extra = logInfo) + else: + logInfo = {'file':self.logger.findCaller()[0], + 'line':self.logger.findCaller()[1]} + self.logger.debug('Lumiblock table. Lumiblock state updated '+ + 'to TRANSFERRED for SFO ' + + str(parsed.AppId()) + + ', run ' + str(parsed.RunNr()) + + ', lumiblock ' + str(parsed.LBNr()) + + ', stream type ' + str(parsed.StreamType()) + + ', stream name ' + str(parsed.StreamName()), + extra = logInfo) + # end if,else def runtransfer(self,parsed): - sql="update "+ self.run_table + " " - sql+="set state='TRANSFERRED', t_stamp = :newdate " - sql+="where sfoid = :ssfo and runnr = :srunnr " - sql+=" and streamtype = :sstreamt and stream = :sstreamn " - sql+=" and state = 'CLOSED'" - args=[] + keys={} - keys['newdate']=datetime.datetime.utcfromtimestamp(time.time()) keys['ssfo']=parsed.AppId() keys['srunnr']=parsed.RunNr() keys['sstreamt']=parsed.StreamType() keys['sstreamn']=parsed.StreamName() - args.insert(0,sql) - nrow = self.db.execute(args,keys) - if nrow != 1: - logInfo = {'file':self.logger.findCaller()[0], - 'line':self.logger.findCaller()[1]} - self.logger.error('Not exactly one entry updated in run table ' + - 'for SFO ' + str(parsed.AppId()) + - ', run ' + str(parsed.RunNr()) + - ', stream type ' + str(parsed.StreamType()) + - ', stream name ' + str(parsed.StreamName()), - extra = logInfo) - else: - logInfo = {'file':self.logger.findCaller()[0], - 'line':self.logger.findCaller()[1]} - self.logger.debug('Run table. Run state updated to TRANSFERRED ' + - 'for SFO ' + str(parsed.AppId()) + - ', run ' + str(parsed.RunNr()) + - ', stream type ' + str(parsed.StreamType()) + - ', stream name ' + str(parsed.StreamName()), - extra = logInfo) - # end if,else + + sql="select state from "+ self.run_table + " " + sql+="where sfoid = :ssfo and runnr = :srunnr " + sql+=" and streamtype = :sstreamt and stream = :sstreamn " + + args=[sql,] + self.db.execute(args,keys) + state = self.db.getNextRow()[0] + + if state == 'CLOSED': + + sql="update "+ self.run_table + " " + sql+="set state='TRANSFERRED', t_stamp = :newdate " + sql+="where sfoid = :ssfo and runnr = :srunnr " + sql+=" and streamtype = :sstreamt and stream = :sstreamn " + sql+=" and state = 'CLOSED'" + + + keys['newdate']=datetime.datetime.utcfromtimestamp(time.time()) + + args = [sql,] + nrow = self.db.execute(args,keys) + if nrow != 1: + logInfo = {'file':self.logger.findCaller()[0], + 'line':self.logger.findCaller()[1]} + self.logger.error('Not exactly one entry updated' + ' in run table '+ + 'for SFO ' + str(parsed.AppId()) + + ', run ' + str(parsed.RunNr()) + + ', stream type ' + str(parsed.StreamType()) + + ', stream name ' + str(parsed.StreamName()), + extra = logInfo) + else: + logInfo = {'file':self.logger.findCaller()[0], + 'line':self.logger.findCaller()[1]} + self.logger.debug('Run table. Run state updated ' + + 'to TRANSFERRED ' + + 'for SFO ' + str(parsed.AppId()) + + ', run ' + str(parsed.RunNr()) + + ', stream type ' + str(parsed.StreamType()) + + ', stream name ' + str(parsed.StreamName()), + extra = logInfo) + # end if,else def notTransFiles(self,parsed):