IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 38874 for trunk


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.