Skip to content

Commit 387b30e

Browse files
committed
do filtered index again
1 parent 8ff9489 commit 387b30e

File tree

3 files changed

+26
-29
lines changed

3 files changed

+26
-29
lines changed

sky/backends/backend_utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3358,8 +3358,8 @@ def _refresh_cluster_record(cluster_name):
33583358
requests = requests_lib.get_request_tasks(
33593359
req_filter=requests_lib.RequestTaskFilter(
33603360
status=[requests_lib.RequestStatus.RUNNING],
3361-
cluster_names=cluster_names,
3362-
include_request_names=['sky.launch']))
3361+
include_request_names=['sky.launch'],
3362+
cluster_names=cluster_names))
33633363
cluster_names_with_launch_request = {
33643364
request.cluster_name for request in requests
33653365
}

sky/server/requests/preconditions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ async def check(self) -> Tuple[bool, Optional[str]]:
162162
requests = await api_requests.get_request_tasks_async(
163163
req_filter=api_requests.RequestTaskFilter(
164164
status=[
165-
api_requests.RequestStatus.RUNNING,
166-
api_requests.RequestStatus.PENDING
165+
api_requests.RequestStatus.PENDING,
166+
api_requests.RequestStatus.RUNNING
167167
],
168168
include_request_names=['sky.launch', 'sky.start'],
169169
cluster_names=[self.cluster_name]))

sky/server/requests/requests.py

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -398,9 +398,9 @@ def kill_cluster_requests(cluster_name: str, exclude_request_name: str):
398398
request_ids = [
399399
request_task.request_id
400400
for request_task in get_request_tasks(req_filter=RequestTaskFilter(
401-
cluster_names=[cluster_name],
402401
status=[RequestStatus.PENDING, RequestStatus.RUNNING],
403-
exclude_request_names=[exclude_request_name]))
402+
exclude_request_names=[exclude_request_name],
403+
cluster_names=[cluster_name]))
404404
]
405405
kill_requests(request_ids)
406406

@@ -422,10 +422,10 @@ def kill_requests(request_ids: Optional[List[str]] = None,
422422
request_ids = [
423423
request_task.request_id
424424
for request_task in get_request_tasks(req_filter=RequestTaskFilter(
425-
user_id=user_id,
426-
status=[RequestStatus.RUNNING, RequestStatus.PENDING],
425+
status=[RequestStatus.PENDING, RequestStatus.RUNNING],
427426
# Avoid cancelling the cancel request itself.
428-
exclude_request_names=['sky.api_cancel']))
427+
exclude_request_names=['sky.api_cancel'],
428+
user_id=user_id))
429429
]
430430
cancelled_request_ids = []
431431
for request_id in request_ids:
@@ -489,31 +489,28 @@ def create_table(cursor, conn):
489489
{COL_SHOULD_RETRY} INTEGER,
490490
{COL_FINISHED_AT} REAL
491491
)""")
492-
# Add an index on created_at to speed up queries that sort on this column.
492+
493+
db_utils.add_column_to_table(cursor, conn, REQUEST_TABLE, COL_STATUS_MSG,
494+
'TEXT')
495+
db_utils.add_column_to_table(cursor, conn, REQUEST_TABLE, COL_SHOULD_RETRY,
496+
'INTEGER')
497+
db_utils.add_column_to_table(cursor, conn, REQUEST_TABLE, COL_FINISHED_AT,
498+
'REAL')
499+
500+
# Add an index on status to speed up queries that filter on this column.
493501
cursor.execute(f"""\
494-
CREATE INDEX IF NOT EXISTS created_at_idx ON {REQUEST_TABLE} (created_at);
502+
CREATE INDEX IF NOT EXISTS status_name_idx ON {REQUEST_TABLE} (status, name) WHERE status IN ('PENDING', 'RUNNING');
495503
""")
496504
# Add an index on cluster_name to speed up queries
497505
# that filter on this column.
498506
cursor.execute(f"""\
499-
CREATE INDEX IF NOT EXISTS cluster_name_idx ON {REQUEST_TABLE} ({COL_CLUSTER_NAME});
500-
""")
501-
# Add an index on name to speed up queries that filter on this column.
502-
cursor.execute(f"""\
503-
CREATE INDEX IF NOT EXISTS name_idx ON {REQUEST_TABLE} (name);
507+
CREATE INDEX IF NOT EXISTS cluster_name_idx ON {REQUEST_TABLE} ({COL_CLUSTER_NAME}) WHERE status IN ('PENDING', 'RUNNING');
504508
""")
505-
# Add an index on status to speed up queries that filter on this column.
509+
# Add an index on created_at to speed up queries that sort on this column.
506510
cursor.execute(f"""\
507-
CREATE INDEX IF NOT EXISTS status_idx ON {REQUEST_TABLE} (status);
511+
CREATE INDEX IF NOT EXISTS created_at_idx ON {REQUEST_TABLE} (created_at);
508512
""")
509513

510-
db_utils.add_column_to_table(cursor, conn, REQUEST_TABLE, COL_STATUS_MSG,
511-
'TEXT')
512-
db_utils.add_column_to_table(cursor, conn, REQUEST_TABLE, COL_SHOULD_RETRY,
513-
'INTEGER')
514-
db_utils.add_column_to_table(cursor, conn, REQUEST_TABLE, COL_FINISHED_AT,
515-
'REAL')
516-
517514

518515
_DB = None
519516
_init_db_lock = threading.Lock()
@@ -770,6 +767,10 @@ def build_query(self) -> Tuple[str, List[Any]]:
770767
status_list_str = ','.join(
771768
repr(status.value) for status in self.status)
772769
filters.append(f'status IN ({status_list_str})')
770+
if self.include_request_names is not None:
771+
request_names_str = ','.join(
772+
repr(name) for name in self.include_request_names)
773+
filters.append(f'name IN ({request_names_str})')
773774
if self.exclude_request_names is not None:
774775
exclude_request_names_str = ','.join(
775776
repr(name) for name in self.exclude_request_names)
@@ -781,10 +782,6 @@ def build_query(self) -> Tuple[str, List[Any]]:
781782
if self.user_id is not None:
782783
filters.append(f'{COL_USER_ID} = ?')
783784
filter_params.append(self.user_id)
784-
if self.include_request_names is not None:
785-
request_names_str = ','.join(
786-
repr(name) for name in self.include_request_names)
787-
filters.append(f'name IN ({request_names_str})')
788785
if self.finished_before is not None:
789786
filters.append('finished_at < ?')
790787
filter_params.append(self.finished_before)

0 commit comments

Comments
 (0)