Index: /trunk/ippTools/share/Makefile.am
===================================================================
--- /trunk/ippTools/share/Makefile.am	(revision 27776)
+++ /trunk/ippTools/share/Makefile.am	(revision 27777)
@@ -43,5 +43,4 @@
      chiptool_export_imfile.sql \
      chiptool_export_processed_imfile.sql \
-     chiptool_export_run.sql \
      chiptool_unmasked.sql \
      detselect_search.sql \
@@ -300,4 +299,5 @@
      warptool_revertoverlap.sql \
      warptool_revertwarped_delete.sql \
+     warptool_revertwarped_updated.sql \
      warptool_runstate.sql \
      warptool_scmap.sql \
Index: /trunk/ippTools/share/chiptool_revertupdatedimfile.sql
===================================================================
--- /trunk/ippTools/share/chiptool_revertupdatedimfile.sql	(revision 27777)
+++ /trunk/ippTools/share/chiptool_revertupdatedimfile.sql	(revision 27777)
@@ -0,0 +1,8 @@
+UPDATE chipProcessedImfile
+    JOIN chipRun using(chip_id,exp_id)
+    JOIN rawExp using(exp_id)
+SET chipProcessedImfile.fault = 0
+WHERE
+    chipRun.state = 'update'
+    AND chipProcessedImfile.data_state = 'update'
+    AND chipProcessedImfile.fault != 0
Index: /trunk/ippTools/share/warptool_revertwarped_updated.sql
===================================================================
--- /trunk/ippTools/share/warptool_revertwarped_updated.sql	(revision 27777)
+++ /trunk/ippTools/share/warptool_revertwarped_updated.sql	(revision 27777)
@@ -0,0 +1,10 @@
+UPDATE warpSkyfile
+    JOIN warpRun USING(warp_id)
+    JOIN fakeRun USING(fake_id)
+    JOIN camRun USING(cam_id)
+    JOIN chipRun USING(chip_id)
+    JOIN rawExp USING(exp_id)
+SET warpSkyfile.fault = 0
+WHERE warpRun.state = 'update'
+    AND warpSkyfile.data_state = 'update'
+    AND warpSkyfile.fault != 0
Index: /trunk/ippTools/src/warptool.c
===================================================================
--- /trunk/ippTools/src/warptool.c	(revision 27776)
+++ /trunk/ippTools/src/warptool.c	(revision 27777)
@@ -1335,49 +1335,46 @@
     }
 
-    if (!psDBTransaction(config->dbh)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        psFree(where);
-        return false;
-    }
-
-    // Delete product
-    int numDeleted;                     // Number deleted
-    {
-        psString query = pxDataGet("warptool_revertwarped_delete.sql");
-        if (!query) {
-            psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
-            if (!psDBRollback(config->dbh)) {
-                psError(PS_ERR_UNKNOWN, false, "database error");
-            }
-            return false;
-        }
-
-        if (psListLength(where->list)) {
-            psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
-            psStringAppend(&query, " AND %s", whereClause);
-            psFree(whereClause);
-        }
-
-        if (!p_psDBRunQuery(config->dbh, query)) {
-            psError(PS_ERR_UNKNOWN, false, "database error");
-            psFree(query);
-            if (!psDBRollback(config->dbh)) {
-                psError(PS_ERR_UNKNOWN, false, "database error");
-            }
-            return false;
-        }
+    psString query = pxDataGet("warptool_revertwarped_delete.sql");
+    if (!query) {
+        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
+        return false;
+    }
+    psString query_updated = pxDataGet("warptool_revertwarped_updated.sql");
+    if (!query_updated) {
+        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
+        return false;
+    }
+
+    if (psListLength(where->list)) {
+        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+        psStringAppend(&query, " AND %s", whereClause);
+        psStringAppend(&query_updated, " AND %s", whereClause);
+        psFree(whereClause);
+    }
+    psFree(where);
+
+    if (!p_psDBRunQuery(config->dbh, query)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
         psFree(query);
-
-        numDeleted = psDBAffectedRows(config->dbh);
-    }
+        return false;
+    }
+    psFree(query);
+
+    int numDeleted = psDBAffectedRows(config->dbh);
 
     psLogMsg("warptool", PS_LOG_INFO, "Deleted %d warpSkyfiles", numDeleted);
 
-    psFree(where);
-
-    if (!psDBCommit(config->dbh)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        return false;
-    }
+    // fix any faulted warpSkyfiles in data_state 'update'
+
+    if (!p_psDBRunQuery(config->dbh, query_updated)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query_updated);
+        return false;
+    }
+    psFree(query_updated);
+
+    int numUpdated = psDBAffectedRows(config->dbh);
+
+    psLogMsg("warptool", PS_LOG_INFO, "Updated %d warpSkyfiles", numUpdated);
 
     return true;
