diff --git a/Script/DeleteThread.py b/Script/DeleteThread.py index 9bb6214d42510a3ac7f893584b53c8862b5f15cc..98770880e38f4063e4c23f17c535d929aecfe37c 100755 --- a/Script/DeleteThread.py +++ b/Script/DeleteThread.py @@ -84,21 +84,34 @@ class DeleteThread(threading.Thread): # end def __init__() def delete(self, deletefile): - file = deletefile[0] - - ##### Delete file soon ##### - os.remove(file) - os.remove(file+copied_ext) + + filename = deletefile[0] + pool = deletefile[1] + stagehost = deletefile[3] + copyDir = deletefile[2] + + #Remote file name for validity check + castorfile = os.path.join(copyDir, + os.path.basename(filename)) + + success = self.checkvalidity(filename, castorfile, stagehost, pool) + if not success: + self.logger.warning('Remote file validity check failed. Not deleting local file %s' % filename) + return + + ##### Delete file ##### + os.remove(filename) + os.remove(filename+copied_ext) ##### Update Oracle Metadata Database, if connection is fine ##### ##### File table: filestate from CLOSED to DELETED ##### if self.db: self.logger.info('Update Metadata database') self.dbLock.acquire() - self.dbFlag = self.db.Deletion(file) + self.dbFlag = self.db.Deletion(filename) self.dbLock.release() elif self.conf.connection: - self.logger.warning('No connection to Metadata database: database will not be updated for file %s' % file) + self.logger.warning('No connection to Metadata database: database will not be updated for file %s' % filename) # end if,else ##### Put .data deleted file in the clear queue ##### @@ -218,22 +231,11 @@ class DeleteThread(threading.Thread): continue # end if - # Remove file name for validity check - Castor_file = os.path.join(copyDir, - os.path.basename(filename)) - ##### Check if migration is required ##### if not self.migFlag: self.logger.debug('Migration not required by the deletion policy: delete file ' + filename) - ### Check sizes and checksum before deletion ### - - success = self.checkvalidity(filename, Castor_file, stagehost, pool) - if success: - self.delete(deletefile) - else: - self.logger.warning('Remote file validity check failed. Not deleting local file %s' % filename) - + self.delete(deletefile) continue # end if @@ -254,11 +256,7 @@ class DeleteThread(threading.Thread): self.logger.debug('File migrated: going to delete file ' + filename) - success = self.checkvalidity(filename, Castor_file, stagehost, pool) - if success: - self.delete(deletefile) - else: - self.logger.warning('Remote file validity check failed. Not deleting local file %s' % filename) + self.delete(deletefile) del self.MigDict[filename] #block until room is available in the queue ????? @@ -314,11 +312,14 @@ class DeleteThread(threading.Thread): success &= (dbchecksum.lower() == checksum.lower()) elif dbchecksum: success &= (dbchecksum.lower() == checksum.lower()) + + + report = 'Validity for %s --> %s (Local size: %d - Remote size: %d - DB size: %d)(Expected checksum: %s - Remote checksum: %s)' % (sfofile, str(success), sfofilesize, castorfilesize, (dbfilesize if dbfilesize else -1),str(dbchecksum),str(checksum)) if not success: - self.logger.warning('Checksum check or size check failed for: %s (Local size: %d - Remote size: %d - DB size: %d)(Expected checksum: %s - Remote checksum: %s)' % (sfofile, sfofilesize, castorfilesize, (dbfilesize if dbfilesize else -1),str(dbchecksum),str(checksum))) + self.logger.warning('Validity check failed! %s' % report) - self.logger.debug('Validity for %s --> %s (Local size: %d - Remote size: %d - DB size: %d)(Expected checksum: %s - Remote checksum: %s)' % (sfofile, str(success), sfofilesize, castorfilesize, (dbfilesize if dbfilesize else -1),str(dbchecksum),str(checksum))) + self.logger.debug(report) return success