Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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