IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 33787


Ignore:
Timestamp:
Apr 16, 2012, 12:18:37 PM (14 years ago)
Author:
rhenders
Message:

improvements to exception handling

Location:
trunk/ippToPsps/jython
Files:
16 edited

Legend:

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

    r33672 r33787  
    3939                 useFullTables):
    4040
    41         self.everythingOK = False
    4241        self.readHeader = False
    4342        self.config = config
     
    6665            if not self.header:
    6766                logger.errorPair("Could not read FITS for id", "%d" % id)
    68                 return
     67                raise
    6968
    7069        self.scratchDb.setUseFullTables(self.useFullTables)
     
    115114        self.logger.infoPair("Output path", self.localOutPath)
    116115
    117         self.everythingOK = True
    118116   
    119117    '''
     
    510508    def run(self):
    511509
    512         if not self.everythingOK:
    513             self.logger.errorPair("Aborting this batch", "could not initialize")
    514             self.ippToPspsDb.updateProcessed(self.batchID, -1)
    515             return
    516 
    517510        if not self.createEmptyPspsTables():
    518511            self.logger.errorPair("Aborting this batch", "could not create empty PSPS tables")
    519512            self.ippToPspsDb.updateProcessed(self.batchID, -1)
    520             return
     513            raise
    521514
    522515        if not self.importIppTables():
    523516            self.logger.errorPair("Aborting this batch", "could not import IPP tables")
    524517            self.ippToPspsDb.updateProcessed(self.batchID, -1)
    525             return
     518            raise
    526519
    527520        if not self.populatePspsTables():
    528521            self.logger.errorPair("Aborting this batch", "unable to populate PSPS tables")
    529522            self.ippToPspsDb.updateProcessed(self.batchID, -1)
    530             return
     523            raise
    531524
    532525        if not self.exportPspsTablesToFits():
    533526            self.logger.errorPair("Aborting this batch", "unable to export tables to FITS file")
    534527            self.ippToPspsDb.updateProcessed(self.batchID, -1)
    535             return
     528            raise
    536529   
    537530        if self.writeBatchManifest():
  • trunk/ippToPsps/jython/cleanup.py

    r33748 r33787  
    129129Start of program
    130130'''
    131 cleanup = Cleanup(sys.argv)
    132 cleanup.run()
    133 cleanup.exitProgram("finished")
     131try:
     132    cleanup = Cleanup(sys.argv)
     133    cleanup.run()
     134    cleanup.exitProgram("completed")
     135except: pass
  • trunk/ippToPsps/jython/datastoreRemover.py

    r33470 r33787  
    4646Start of program
    4747'''
    48 datastoreRemover = DatastoreRemover(sys.argv)
    49 datastoreRemover.run()
    50 datastoreRemover.exitProgram("finished")
     48try:
     49    datastoreRemover = DatastoreRemover(sys.argv)
     50    datastoreRemover.run()
     51    datastoreRemover.exitProgram("completed")
     52except: pass
    5153
  • trunk/ippToPsps/jython/detectionbatch.py

    r33353 r33787  
    5353               useFullTables)
    5454
    55        if not self.everythingOK: return
    56 
    5755       # get camera meta data
    5856       meta = self.gpc1Db.getCameraStageMeta(self.id)
    5957       if not meta:
    60            self.everythingOK = False
    61            return
     58           self.logger.errorPair("Could not get", "camera metadata")
     59           raise
    6260
    6361       self.expID = meta[0];
     
    9391       # get a fre primary header values. if in test mode, then use defaults
    9492       if self.safeDictionaryAccessWithDefault(self.header, 'MJD-OBS', "1") == "NULL":
    95            self.everythingOK = False
    96            return
     93           self.logger.errorPair("Could not get", "MJD-OBS")
     94           raise
    9795
    9896       if self.safeDictionaryAccessWithDefault(self.header, 'EXPTIME', "1") == "NULL":
    99            self.everythingOK = False
    100            return
     97           self.logger.errorPair("Could not get", "EXPTIME")
     98           raise
    10199
    102100       if self.safeDictionaryAccessWithDefault(self.header, 'FILTERID', "g.0000") == "NULL":
    103            self.everythingOK = False
    104            return
     101           self.logger.errorPair("Could not get", "FILTERID")
     102           raise
    105103       
    106104       self.obsTime = float(self.header['MJD-OBS']) + (float(self.header['EXPTIME']) / 172800.0)
  • trunk/ippToPsps/jython/dvo.py

    r33782 r33787  
    4747       
    4848        # connect to the specified scratch database
    49         self.scratchDb = ScratchDb(self.logger, self.config, scratchDbName)
     49        try:
     50            self.scratchDb = ScratchDb(self.logger, self.config, scratchDbName)
     51        except: raise
     52
    5053        self.scratchDb.setUseFullTables(True)
    5154
  • trunk/ippToPsps/jython/ipptopsps.py

    r33773 r33787  
    5050
    5151        # create connection to databases database
    52         self.ippToPspsDb = IppToPspsDb(self.logger, self.config)
     52        try:
     53            self.ippToPspsDb = IppToPspsDb(self.logger, self.config)
     54        except:
     55            self.exitProgram("Could not connect to ipptopsps Db")
     56            raise
    5357
    5458        self.checkClientStatus()
  • trunk/ippToPsps/jython/loader.py

    r33776 r33787  
    4545                self.scratchDb.disconnect()
    4646                continue
    47             self.logger.infoPair("Using scratch Db", self.scratchDb.dbName)
    4847            break
    4948
    50         if not self.scratchDb.connected: 
    51             self.logger.errorPair("Cannot connect to a", "scratch database")
    52             return
     49        if not self.scratchDb.connected:
     50            self.exitProgram("Cannot connect to a scratch database")
     51            raise
    5352       
    5453        # create Datastore objects
     
    198197   
    199198            self.ippToPspsDb.unlockTables()
     199            self.ippToPspsDb.deletePendingItem(batchType, id)
     200
     201            # catch any raised exceptions in batch constructors
     202            try:
     203                if batchType == "P2":
     204                    batch = DetectionBatch(self.logger,
     205                            self.config,
     206                            self.gpc1Db,
     207                            self.ippToPspsDb,
     208                            self.scratchDb,
     209                            id,
     210                            batchID,
     211                            useFullTables)
     212                elif batchType == "ST":
     213                    batch = StackBatch(self.logger,
     214                            self.config,
     215                            self.gpc1Db,
     216                            self.ippToPspsDb,
     217                            self.scratchDb,
     218                            id,
     219                            batchID,
     220                            useFullTables)
     221   
     222                elif batchType == "OB":
     223                    batch = ObjectBatch(self.logger,
     224                            self.config,
     225                            self.gpc1Db,
     226                            self.ippToPspsDb,
     227                            self.scratchDb,
     228                            id,
     229                            batchID,
     230                            useFullTables)
     231   
     232                batch.run()
    200233   
    201             self.ippToPspsDb.deletePendingItem(batchType, id)
    202 
    203             if batchType == "P2":
    204                 batch = DetectionBatch(self.logger,
    205                         self.config,
    206                         self.gpc1Db,
    207                         self.ippToPspsDb,
    208                         self.scratchDb,
    209                         id,
    210                         batchID,
    211                         useFullTables)
    212             elif batchType == "ST":
    213                 batch = StackBatch(self.logger,
    214                         self.config,
    215                         self.gpc1Db,
    216                         self.ippToPspsDb,
    217                         self.scratchDb,
    218                         id,
    219                         batchID,
    220                         useFullTables)
    221    
    222             elif batchType == "OB":
    223                 batch = ObjectBatch(self.logger,
    224                         self.config,
    225                         self.gpc1Db,
    226                         self.ippToPspsDb,
    227                         self.scratchDb,
    228                         id,
    229                         batchID,
    230                         useFullTables)
    231    
    232             batch.run()
    233    
     234            # if batch fails, ignore and move on to the next one
     235            except:
     236                self.logger.errorPair("Problem with this %s batch (%d)" % (batchType, id), "skipping")
     237                pass
     238
    234239            if not self.checkClientStatus(): return False
    235240   
     
    256261    loader = Loader(sys.argv)
    257262    loader.run()
    258     loader.exitProgram("finished")
     263    loader.exitProgram("completed")
    259264except Exception, e:
    260265    print str(e)
    261266    traceback.print_exc()
     267
  • trunk/ippToPsps/jython/metrics.py

    r33712 r33787  
    191191Start of program.
    192192'''
    193 metrics = Metrics(sys.argv)
    194 metrics.run()
    195 metrics.exitProgram("finished")
    196 
    197 
    198 
     193try:
     194    metrics = Metrics(sys.argv)
     195    metrics.run()
     196    metrics.exitProgram("completed")
     197except: pass
     198
     199
     200
  • trunk/ippToPsps/jython/mysql.py

    r33780 r33787  
    3434        self.dbPass = config.getDbPassword(dbType)
    3535
     36        # a user friendly connection sring
     37        connectionStr = self.dbName + "@" + self.dbHost
     38
    3639        # set up JDBC connection
    3740        self.url = "jdbc:mysql://"+self.dbHost+"/"+self.dbName+"?autoReconnect=true&user="+self.dbUser+"&password="+self.dbPass
     
    3942            self.con = DriverManager.getConnection(self.url)
    4043            self.connectionID = self.getLastConnectionID()
    41             self.logger.debug("MySQL connection to %s with ID %d" % (dbType, self.connectionID))
     44            self.logger.infoPair("Connected to MySQL Db", connectionStr)
    4245        except:
    43             self.logger.error("Unable to connect to " + self.url)
    44             self.everythingOK = False # TODO need this?
     46            self.logger.errorPair("Unable to connect to", connectionStr)
    4547            self.connected = False
    46             return
    47 
    48         self.everythingOK = True
     48            raise
     49
    4950        self.connected = True
    5051
     
    251252        except: pass
    252253            #self.logger.warn("Index already in place on '" + column + "' for table '" + table + "'")
     254
     255    '''
     256    Checks that we have a connection
     257    '''
     258    def isConnected(self):
     259
     260        try:
     261            self.con
     262            self.connected = True
     263        except:
     264            self.logger.errorPair("Not connected to", self.url)
     265            self.connected = False
     266
     267        return self.connected
     268
    253269    '''
    254270    TODO
    255271    '''
    256272    def execute(self, sql):
     273
     274        if not self.isConnected(): raise
    257275
    258276        stmt = self.con.createStatement()
     
    265283    def executeQuery(self, sql):
    266284
     285        if not self.isConnected(): raise
     286 
    267287        stmt = self.con.createStatement()
    268288        rs = stmt.executeQuery(sql)
  • trunk/ippToPsps/jython/objectbatch.py

    r33777 r33787  
    5151               1)
    5252
    53        if not self.everythingOK: return
    54 
    55        self.dvoObjects = DvoObjects(self.logger, self.config, self.scratchDb.dbName)
     53       try:
     54           self.dvoObjects = DvoObjects(self.logger, self.config, self.scratchDb.dbName)
     55       except:
     56           self.logger.errorPair("Unable to create instance of", "DvoObjects")
     57           raise
    5658
    5759       # create an output filename, which is {dvoINDEX}.FITS
  • trunk/ippToPsps/jython/plotter.py

    r33679 r33787  
    3939Start of program
    4040'''
    41 plotter = Plotter(sys.argv)
    42 plotter.exitProgram("finished")
     41try:
     42    plotter = Plotter(sys.argv)
     43    plotter.exitProgram("completed")
     44except: pass
  • trunk/ippToPsps/jython/pollOdm.py

    r33747 r33787  
    132132Program starts here
    133133'''
    134 pollodm = PollOdm(sys.argv)
    135 pollodm.run()
    136 pollodm.exitProgram("finished")
     134try:
     135    pollodm = PollOdm(sys.argv)
     136    pollodm.run()
     137    pollodm.exitProgram("completed")
     138except: pass
  • trunk/ippToPsps/jython/queue.py

    r33786 r33787  
    2727        super(Queue, self).__init__(argv)
    2828
    29 
    3029        # create various objects
    3130        self.gpc1Db = Gpc1Db(self.logger, self.config)
    3231        self.datastore = Datastore(self.logger, self.config, self.ippToPspsDb)
    33         self.dvoObjects = DvoObjects(self.logger, self.config)
     32        try:
     33            self.dvoObjects = DvoObjects(self.logger, self.config)
     34        except:
     35            self.exitProgram("Unable to create instance of DvoObject")
     36            raise
    3437
    3538        self.config.printAll()
     
    164167Start of program.
    165168'''
    166 queue = Queue(sys.argv)
    167 queue.run()
    168 queue.exitProgram("finished")                             
     169try:
     170    queue = Queue(sys.argv)
     171    queue.run()
     172    queue.exitProgram("completed")
     173except: pass
     174
  • trunk/ippToPsps/jython/scratchdb.py

    r33770 r33787  
    278278            rs.close()
    279279        except:
    280             self.logger.errorPai("Can't query for ingested regions", sql)
     280            self.logger.errorPair("Can't query for ingested regions", sql)
    281281
    282282        return regions
  • trunk/ippToPsps/jython/setupScratchDb.py

    r33589 r33787  
    2525            self.exitProgram("incorrect args")
    2626
    27         self.scratchDb = ScratchDb(self.logger, self.config, argv[2])
     27        try:
     28            self.scratchDb = ScratchDb(self.logger, self.config, argv[2])
     29        except:
     30            self.exitProgram("Could not connect to a scratch Db")
     31            raise
    2832
    2933
     
    5256Program starts here
    5357'''
    54 setupScratchDb = SetupScratchDb(sys.argv)
    55 setupScratchDb.run()
    56 setupScratchDb.exitProgram("finished")
     58try:
     59    setupScratchDb = SetupScratchDb(sys.argv)
     60    setupScratchDb.run()
     61    setupScratchDb.exitProgram("completed")
     62except: pass
    5763
    5864
  • trunk/ippToPsps/jython/stackbatch.py

    r33530 r33787  
    5050               useFullTables)
    5151
    52        if not self.everythingOK: return
    53 
    5452       self.stackType = "DEEP_STACK" # TODO
    5553
     
    5755       meta = self.gpc1Db.getStackStageMeta(self.id)
    5856       if not meta:
    59            self.everythingOK = False
    60            return
     57           self.logger.errorPair("Could not get stack", "metadata")
     58           raise
    6159
    6260       self.filter = meta[0];
Note: See TracChangeset for help on using the changeset viewer.