IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 38874


Ignore:
Timestamp:
Oct 17, 2015, 7:13:53 AM (11 years ago)
Author:
eugene
Message:

keep the mysql connection alive by checking the table status every so often

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippToPsps/jython/dvo.py

    r38871 r38874  
    152152
    153153    '''
     154    executes the dvopsps call with polling to check the status of the table
     155    '''
     156    def dvopspsRunWithPoll(self,cmd,myTable,waittime):
     157
     158        # timeout_sql = "set wait_timeout = 5"
     159        # self.scratchDb.execute(timeout_sql)
     160
     161        (dvoStdoutFile, dvoStdoutName) = tempfile.mkstemp(prefix="dvopsps.stdout.", dir="/tmp")
     162        (dvoStderrFile, dvoStderrName) = tempfile.mkstemp(prefix="dvopsps.stderr.", dir="/tmp")
     163
     164        self.logger.infoPair("Running dvopsps", cmd)
     165        self.logger.infoPair("Stdout to ", dvoStdoutName)
     166        self.logger.infoPair("Stderr to ", dvoStderrName)
     167        p = Popen(cmd, shell=True, stdout=dvoStdoutFile, stderr=dvoStderrFile)
     168
     169        dvopspsRunning = True
     170        while dvopspsRunning:
     171            p.poll()
     172            if p.returncode == None:
     173                time.sleep(waittime)
     174
     175                sql = "show table status where name = '" + myTable + "'"
     176                rs = self.scratchDb.executeQuery(sql)
     177                rs.first()
     178                tableName = rs.getString(1)
     179                tableRows = rs.getInt(5)
     180                print "--- " + tableName + " : " + str(tableRows)
     181               
     182                continue
     183            dvopspsRunning = False
     184            if p.returncode < 0:
     185                self.logger.errorPair("dvopsps terminated on signal for: ", myTable)
     186                os._exit(1)
     187
     188            if p.returncode > 0:
     189                self.logger.errorPair("dvopsps failed for: ", myTable)
     190                os._exit(1)
     191
     192        os.close(dvoStdoutFile)
     193        os.close(dvoStderrFile)
     194
     195    '''
    154196    Loads the DVO SkyTable into MySQL and then applies an index
    155197    '''
     
    186228        cmd += " -D CATDIR " + self.skychunk.dvoLocation
    187229
    188         self.logger.infoPair("Running dvopsps", cmd)
    189         p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
    190         p.wait()
    191         if p.returncode != 0:
    192             self.logger.errorPair("dvopsps failed on SkyTable.fits for ", self.skychunk.dvoLocation)
    193             raise
     230        self.dvopspsRunWithPoll(cmd,"dvoSkyTable",4)
    194231
    195232        self.logger.infoPair("Adding index to", self.scratchDb.dvoSkyTable)
     
    699736                print "need photcode for warp for gpc1 camera, default is no selection, should work, could be slow"
    700737               
    701         (dvoStdoutFile, dvoStdoutName) = tempfile.mkstemp(prefix="dvopsps.stdout.", dir="/tmp")
    702         (dvoStderrFile, dvoStderrName) = tempfile.mkstemp(prefix="dvopsps.stderr.", dir="/tmp")
    703 
    704         self.logger.infoPair("Running dvopsps", cmd)
    705         self.logger.infoPair("Stdout to ", dvoStdoutName)
    706         self.logger.infoPair("Stderr to ", dvoStderrName)
    707         p = Popen(cmd, shell=True, stdout=dvoStdoutFile, stderr=dvoStderrFile)
    708         p.wait()
    709         if p.returncode != 0:
    710             self.logger.errorPair("dvopsps failed on ", self.scratchDb.dvoDetectionTable)
    711             raise
    712 
    713         os.close(dvoStdoutFile)
    714         os.close(dvoStderrFile)
    715 
    716738        ## dvopsps can take a very long time. try 2 or 3 times to re-establish communication with the db before proceeding?
     739        ## NOTE: fixed with a poll?
     740        self.dvopspsRunWithPoll(cmd,self.scratchDb.dvoDetectionTable,2)
    717741
    718742        self.ippToPspsDb.setIngestedBox(boxId, self.scratchDb.dbHost)
Note: See TracChangeset for help on using the changeset viewer.