Skip to content

Commit

Permalink
fix: prevent from mounting automount folder when status is dead (#2059)
Browse files Browse the repository at this point in the history
  • Loading branch information
lizable committed Apr 24, 2024
1 parent d605461 commit 3d9a3d8
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
1 change: 1 addition & 0 deletions changes/2059.fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Ensure that vfolders, including automount vfolders, are mounted during session creation only if their status is not set to "DEAD" (i.e., deleted).
20 changes: 9 additions & 11 deletions src/ai/backend/manager/models/vfolder.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,7 @@
generate_sql_info_for_gql_connection,
metadata,
)
from .gql_relay import (
AsyncNode,
Connection,
ConnectionResolverResult,
)
from .gql_relay import AsyncNode, Connection, ConnectionResolverResult
from .group import GroupRow, ProjectType
from .minilang.ordering import OrderSpecItem, QueryOrderParser
from .minilang.queryfilter import FieldSpecItem, QueryFilterParser, enum_field_getter
Expand Down Expand Up @@ -170,7 +166,7 @@ class VFolderOperationStatus(enum.StrEnum):

DELETE_PENDING = "delete-pending" # vfolder is in trash bin
DELETE_ONGOING = "delete-ongoing" # vfolder is being deleted in storage
DELETE_COMPLETE = "delete-complete" # vfolder is deleted permanentyl, only DB row remains
DELETE_COMPLETE = "delete-complete" # vfolder is deleted permanently, only DB row remains
DELETE_ERROR = "delete-error"


Expand Down Expand Up @@ -717,12 +713,14 @@ async def prepare_vfolder_mounts(
# Query the accessible vfolders that satisfy either:
# - the name matches with the requested vfolder name, or
# - the name starts with a dot (dot-prefixed vfolder) for automatic mounting.
extra_vf_conds = vfolders.c.name.startswith(".") & vfolders.c.status.not_in(
DEAD_VFOLDER_STATUSES
)
if requested_vfolder_names:
extra_vf_conds = vfolders.c.name.in_(
requested_vfolder_names.values()
) | vfolders.c.name.startswith(".")
else:
extra_vf_conds = vfolders.c.name.startswith(".")
extra_vf_conds = extra_vf_conds | (
vfolders.c.name.in_(requested_vfolder_names.values())
& vfolders.c.status.not_in(DEAD_VFOLDER_STATUSES)
)
accessible_vfolders = await query_accessible_vfolders(
conn,
user_scope.user_uuid,
Expand Down

0 comments on commit 3d9a3d8

Please sign in to comment.