From ef1638f7ec6c6f2e87e64b940825f53dfd8716d0 Mon Sep 17 00:00:00 2001 From: dert1129 Date: Mon, 20 Jul 2026 10:38:14 -0400 Subject: [PATCH 1/3] remove unused code and raise an excpetion for chown_dir --- data_management/services/dlu_filesystem.py | 63 +++++----------------- 1 file changed, 14 insertions(+), 49 deletions(-) diff --git a/data_management/services/dlu_filesystem.py b/data_management/services/dlu_filesystem.py index 63702cc..2cce2c2 100644 --- a/data_management/services/dlu_filesystem.py +++ b/data_management/services/dlu_filesystem.py @@ -105,16 +105,20 @@ def split_path(self, path: str, preserve_path: bool = False): return {"file_name": file_name, "file_path": file_path} def chown_dir(self, package_id: str, files: list[DLUFile], user_id): - package_path = self.dlu_data_directory + "/" + self.dlu_package_dir_prefix + package_id - if os.stat(package_path).st_uid != user_id or os.stat(package_path).st_gid != int(os.environ['dlu_group']): - os.chown(package_path, user_id, int(os.environ['dlu_group'])) - for file in files: - os.chown(package_path + "/" + file.name, user_id, int(os.environ['dlu_group'])) - for root, dirs, _ in os.walk(package_path): - for dir in dirs: - subdir_path = os.path.join(root, dir) - if os.stat(subdir_path).st_uid != user_id or os.stat(subdir_path).st_gid != int(os.environ['dlu_group']): - os.chown(subdir_path, user_id, int(os.environ['dlu_group'])) + try: + package_path = self.dlu_data_directory + "/" + self.dlu_package_dir_prefix + package_id + if os.stat(package_path).st_uid != user_id or os.stat(package_path).st_gid != int(os.environ['dlu_group']): + os.chown(package_path, user_id, int(os.environ['dlu_group'])) + for file in files: + os.chown(package_path + "/" + file.name, user_id, int(os.environ['dlu_group'])) + for root, dirs, _ in os.walk(package_path): + for dir in dirs: + subdir_path = os.path.join(root, dir) + if os.stat(subdir_path).st_uid != user_id or os.stat(subdir_path).st_gid != int(os.environ['dlu_group']): + os.chown(subdir_path, user_id, int(os.environ['dlu_group'])) + except Exception as e: + logger.error("Error changing ownership of directory %s: %s", package_path, str(e)) + def rename_and_move_files(self, file_list: list[DLUFile], slide_name_map, package_id ): dluFiles = [] @@ -137,45 +141,6 @@ def rename_and_move_files(self, file_list: list[DLUFile], slide_name_map, packag dluFiles.append(file) return dluFiles - def copy_directory_contents(src_dir: str, dst_dir: str) -> int: - if not os.path.isdir(src_dir): - raise FileNotFoundError(f"Source directory does not exist: {src_dir}") - - logger.info("Copying contents of %s into %s", src_dir, dst_dir) - - os.makedirs(dst_dir, exist_ok=True) - - files_copied = 0 - - for root, dirnames, filenames in os.walk(src_dir): - relative_root = os.path.relpath(root, src_dir) - - if relative_root == ".": - target_root = dst_dir - else: - target_root = os.path.join(dst_dir, relative_root) - - os.makedirs(target_root, exist_ok=True) - - # Create directories even if they are empty. - for dirname in dirnames: - target_dir = os.path.join(target_root, dirname) - os.makedirs(target_dir, exist_ok=True) - - for filename in filenames: - src_file = os.path.join(root, filename) - dst_file = os.path.join(target_root, filename) - - if os.path.exists(dst_file): - logger.warning("%s already exists. Skipping.", dst_file) - continue - - logger.info("Copying file %s to %s", src_file, dst_file) - shutil.copy2(src_file, dst_file) - files_copied += 1 - - return files_copied - def copy_files( self, package_id: str, file_list: list[DLUFile], preserve_path: bool = False, no_src_package: bool = False): files_copied = 0 From 4c46e4b4b00ab7c4dbb529234f1b20ce5c15ee86 Mon Sep 17 00:00:00 2001 From: dert1129 Date: Mon, 20 Jul 2026 10:46:24 -0400 Subject: [PATCH 2/3] raise dlu_error is something happens --- data_management/services/dlu_filesystem.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/data_management/services/dlu_filesystem.py b/data_management/services/dlu_filesystem.py index 2cce2c2..54a58ec 100644 --- a/data_management/services/dlu_filesystem.py +++ b/data_management/services/dlu_filesystem.py @@ -160,11 +160,13 @@ def copy_files( self, package_id: str, file_list: list[DLUFile], preserve_path: return 0 if not os.path.isdir(dest_parent_directory): + self.dlu_management.set_dlu_package_error(package_id) raise FileNotFoundError( f"Destination parent directory does not exist: {dest_parent_directory}" ) if not os.access(dest_parent_directory, os.W_OK | os.X_OK): + self.dlu_management.set_dlu_package_error(package_id) raise PermissionError( f"Process does not have permission to write to destination parent directory: " f"{dest_parent_directory}" @@ -173,6 +175,7 @@ def copy_files( self, package_id: str, file_list: list[DLUFile], preserve_path: if os.path.exists(final_dest_package_directory) and not os.path.isdir( final_dest_package_directory ): + self.dlu_management.set_dlu_package_error(package_id) raise NotADirectoryError( f"Destination package path exists but is not a directory: " f"{final_dest_package_directory}" @@ -210,6 +213,7 @@ def copy_path(src_path: str, dst_path: str) -> int: logger.info("Preparing to copy from %s to %s", src_path, dst_path) if not os.path.exists(src_path): + self.dlu_management.set_dlu_package_error(package_id) raise FileNotFoundError(f"Source path does not exist: {src_path}") dst_parent = os.path.dirname(dst_path) @@ -238,6 +242,7 @@ def copy_path(src_path: str, dst_path: str) -> int: ) except FileNotFoundError: + self.dlu_management.set_dlu_package_error(package_id) logger.exception( "Source disappeared or destination parent was missing during copy." ) @@ -245,6 +250,7 @@ def copy_path(src_path: str, dst_path: str) -> int: def copy_directory_contents(src_dir: str, dst_dir: str) -> int: if not os.path.isdir(src_dir): + self.dlu_management.set_dlu_package_error(package_id) raise FileNotFoundError(f"Source directory does not exist: {src_dir}") logger.info("Copying contents of %s into %s", src_dir, dst_dir) @@ -320,6 +326,7 @@ def replace_destination_with_temp(): ) except Exception: + self.dlu_management.set_dlu_package_error(package_id) logger.exception( "Failed to move temporary package into final destination." ) @@ -385,6 +392,7 @@ def replace_destination_with_temp(): logger.info("Short filename: %s", file.get_short_filename()) if not os.path.isdir(source_package_directory): + self.dlu_management.set_dlu_package_error(package_id) raise FileNotFoundError( f"Source package directory does not exist or is not a directory: " f"{source_package_directory}" From 185391bdb9bf6c85959d71cd5102e358d4daa6b8 Mon Sep 17 00:00:00 2001 From: dert1129 Date: Mon, 20 Jul 2026 10:47:46 -0400 Subject: [PATCH 3/3] raise exception --- data_management/services/dlu_filesystem.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data_management/services/dlu_filesystem.py b/data_management/services/dlu_filesystem.py index 54a58ec..c68974f 100644 --- a/data_management/services/dlu_filesystem.py +++ b/data_management/services/dlu_filesystem.py @@ -117,8 +117,9 @@ def chown_dir(self, package_id: str, files: list[DLUFile], user_id): if os.stat(subdir_path).st_uid != user_id or os.stat(subdir_path).st_gid != int(os.environ['dlu_group']): os.chown(subdir_path, user_id, int(os.environ['dlu_group'])) except Exception as e: + self.dlu_management.set_dlu_package_error(package_id) logger.error("Error changing ownership of directory %s: %s", package_path, str(e)) - + raise e def rename_and_move_files(self, file_list: list[DLUFile], slide_name_map, package_id ): dluFiles = []