Index: /trunk/ippToPsps/jython/dvo.py
===================================================================
--- /trunk/ippToPsps/jython/dvo.py	(revision 38873)
+++ /trunk/ippToPsps/jython/dvo.py	(revision 38874)
@@ -152,4 +152,46 @@
 
     '''
+    executes the dvopsps call with polling to check the status of the table
+    '''
+    def dvopspsRunWithPoll(self,cmd,myTable,waittime):
+
+        # timeout_sql = "set wait_timeout = 5"
+        # self.scratchDb.execute(timeout_sql)
+
+        (dvoStdoutFile, dvoStdoutName) = tempfile.mkstemp(prefix="dvopsps.stdout.", dir="/tmp")
+        (dvoStderrFile, dvoStderrName) = tempfile.mkstemp(prefix="dvopsps.stderr.", dir="/tmp")
+
+        self.logger.infoPair("Running dvopsps", cmd)
+        self.logger.infoPair("Stdout to ", dvoStdoutName)
+        self.logger.infoPair("Stderr to ", dvoStderrName)
+        p = Popen(cmd, shell=True, stdout=dvoStdoutFile, stderr=dvoStderrFile)
+
+        dvopspsRunning = True
+        while dvopspsRunning:
+            p.poll()
+            if p.returncode == None:
+                time.sleep(waittime)
+
+                sql = "show table status where name = '" + myTable + "'"
+                rs = self.scratchDb.executeQuery(sql)
+                rs.first()
+                tableName = rs.getString(1)
+                tableRows = rs.getInt(5)
+                print "--- " + tableName + " : " + str(tableRows)
+                
+                continue
+            dvopspsRunning = False
+            if p.returncode < 0:
+                self.logger.errorPair("dvopsps terminated on signal for: ", myTable)
+                os._exit(1)
+
+            if p.returncode > 0:
+                self.logger.errorPair("dvopsps failed for: ", myTable)
+                os._exit(1)
+
+        os.close(dvoStdoutFile)
+        os.close(dvoStderrFile)
+
+    '''
     Loads the DVO SkyTable into MySQL and then applies an index
     '''
@@ -186,10 +228,5 @@
         cmd += " -D CATDIR " + self.skychunk.dvoLocation
 
-        self.logger.infoPair("Running dvopsps", cmd)
-        p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
-        p.wait()
-        if p.returncode != 0:
-            self.logger.errorPair("dvopsps failed on SkyTable.fits for ", self.skychunk.dvoLocation)
-            raise
+        self.dvopspsRunWithPoll(cmd,"dvoSkyTable",4)
 
         self.logger.infoPair("Adding index to", self.scratchDb.dvoSkyTable)
@@ -699,20 +736,7 @@
                 print "need photcode for warp for gpc1 camera, default is no selection, should work, could be slow"
                 
-        (dvoStdoutFile, dvoStdoutName) = tempfile.mkstemp(prefix="dvopsps.stdout.", dir="/tmp")
-        (dvoStderrFile, dvoStderrName) = tempfile.mkstemp(prefix="dvopsps.stderr.", dir="/tmp")
-
-        self.logger.infoPair("Running dvopsps", cmd)
-        self.logger.infoPair("Stdout to ", dvoStdoutName)
-        self.logger.infoPair("Stderr to ", dvoStderrName)
-        p = Popen(cmd, shell=True, stdout=dvoStdoutFile, stderr=dvoStderrFile)
-        p.wait()
-        if p.returncode != 0:
-            self.logger.errorPair("dvopsps failed on ", self.scratchDb.dvoDetectionTable)
-            raise
-
-        os.close(dvoStdoutFile)
-        os.close(dvoStderrFile)
-
         ## dvopsps can take a very long time. try 2 or 3 times to re-establish communication with the db before proceeding?
+        ## NOTE: fixed with a poll?
+        self.dvopspsRunWithPoll(cmd,self.scratchDb.dvoDetectionTable,2)
 
         self.ippToPspsDb.setIngestedBox(boxId, self.scratchDb.dbHost)
