def delete_if_expired(self, temp_user, temp_dir): temp_key = 't:' + temp_user sesh = self.sesh_redis.get(temp_key) if sesh == 'commit-wait': try: if not os.path.isdir(temp_dir): logger.debug('TempChecker: Remove Session For Already Deleted Dir: ' + temp_dir) self.sesh_redis.delete(temp_key) return True logger.debug('TempChecker: Removing if empty: ' + temp_dir) os.rmdir(temp_dir) #shutil.rmtree(temp_dir) logger.debug('TempChecker: Deleted empty dir: ' + temp_dir) self.sesh_redis.delete(temp_key) except Exception as e: logger.debug('TempChecker: Waiting for commit') return False # temp user key exists elif self.data_redis.exists(User.INFO_KEY.format(user=temp_user)): # if user still active, don't remove if self.sesh_redis.get(self.sesh_key_template.format(sesh)): #print('Skipping active temp ' + temp) return False # delete user logger.debug('TempChecker: Deleting expired user: '******'TempChecker: Closing temp recording: ' + recording.my_id) wait_to_delete = True if wait_to_delete: return False user.delete_me() self.sesh_redis.delete(temp_key) # delete temp dir on next pass return True # no user session, remove temp dir and everything in it else: try: logger.debug('TempChecker: Deleted expired temp dir: ' + temp_dir) shutil.rmtree(temp_dir) except Exception as e: logger.warn(str(e)) return False return True
def delete_if_expired(self, temp_user, temp_dir): temp_key = 't:' + temp_user sesh = self.sesh_redis.get(temp_key) if sesh == 'commit-wait': # This temporary user has signed up for a permanent account and # their collections will be migrated to storage. # Clean up if that migration is complete (i.e. the dir is empty). # Otherwise, wait. if os.path.isdir(temp_dir): try: logger.debug('TempChecker: Removing if empty: ' + temp_dir) os.rmdir(temp_dir) logger.debug('TempChecker: Deleted empty dir: ' + temp_dir) except OSError as e: if e.errno == errno.ENOTEMPTY: logger.debug('TempChecker: Waiting for commit') elif e.errno != errno.ENOENT: logger.error(str(e)) return False else: logger.debug( 'TempChecker: Removing Session For Already Deleted Dir: ' + temp_dir) self.sesh_redis.delete(temp_key) return True # temp user key exists elif self.data_redis.exists(User.INFO_KEY.format(user=temp_user)): # if user still active, don't remove if self.sesh_redis.get(self.sesh_key_template.format(sesh)): return False logger.debug('TempChecker: Deleting expired user: '******'s open recordings "closed"; # return (if necessary) to give time for closing logic to complete wait_to_delete = False for collection in user.get_collections(load=False): for recording in collection.get_recordings(load=False): if recording.is_open(extend=False): recording.set_closed() logger.debug('TempChecker: Closing temp recording: ' + recording.my_id) wait_to_delete = True if wait_to_delete: return False # delete the user; signal that the user's collections should be deleted. # the temp dir containing those collections will be deleted on next pass. user.delete_me() # delete the session self.sesh_redis.delete(temp_key) return True # no user session, remove temp dir and everything in it else: try: logger.debug('TempChecker: Deleted expired temp dir: ' + temp_dir) shutil.rmtree(temp_dir) except OSError as e: if e.errno != errno.ENOENT: logger.error(str(e)) return False return True
def delete_if_expired(self, temp_user, temp_dir): temp_key = 't:' + temp_user sesh = self.sesh_redis.get(temp_key) if sesh == 'commit-wait': try: if not os.path.isdir(temp_dir): logger.debug( 'TempChecker: Remove Session For Already Deleted Dir: ' + temp_dir) self.sesh_redis.delete(temp_key) return True logger.debug('TempChecker: Removing if empty: ' + temp_dir) os.rmdir(temp_dir) #shutil.rmtree(temp_dir) logger.debug('TempChecker: Deleted empty dir: ' + temp_dir) self.sesh_redis.delete(temp_key) except Exception as e: logger.debug('TempChecker: Waiting for commit') return False # temp user key exists elif self.data_redis.exists(User.INFO_KEY.format(user=temp_user)): # if user still active, don't remove if self.sesh_redis.get(self.sesh_key_template.format(sesh)): #print('Skipping active temp ' + temp) return False # delete user logger.debug('TempChecker: Deleting expired user: '******'TempChecker: Closing temp recording: ' + recording.my_id) wait_to_delete = True if wait_to_delete: return False user.delete_me() self.sesh_redis.delete(temp_key) # delete temp dir on next pass return True # no user session, remove temp dir and everything in it else: try: logger.debug('TempChecker: Deleted expired temp dir: ' + temp_dir) shutil.rmtree(temp_dir) except Exception as e: logger.warn(str(e)) return False return True