Skip to content
This repository was archived by the owner on Nov 1, 2023. It is now read-only.

Commit 46e8454

Browse files
authored
compare containers rather than SAS urls when building worksets (#418)
By comparing container names rather than SAS urls, this removes a race condition that prevented co-locatable tasks from being co-located.
1 parent e799eb0 commit 46e8454

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/api-service/__app__/onefuzzlib/tasks/scheduler.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from onefuzztypes.enums import OS, PoolState, TaskState
1111
from onefuzztypes.models import WorkSet, WorkUnit
12+
from onefuzztypes.primitives import Container
1213
from pydantic import BaseModel
1314

1415
from ..azure.containers import blob_exists, get_container_sas_url
@@ -102,7 +103,7 @@ def bucket_tasks(tasks: List[Task]) -> Dict[Tuple, List[Task]]:
102103
class BucketConfig(BaseModel):
103104
count: int
104105
reboot: bool
105-
setup_url: str
106+
setup_container: Container
106107
setup_script: Optional[str]
107108
pool: Pool
108109

@@ -118,10 +119,6 @@ def build_work_unit(task: Task) -> Optional[Tuple[BucketConfig, WorkUnit]]:
118119
task_config = build_task_config(task.job_id, task.task_id, task.config)
119120

120121
setup_container = get_setup_container(task.config)
121-
setup_url = get_container_sas_url(
122-
setup_container, StorageType.corpus, read=True, list=True
123-
)
124-
125122
setup_script = None
126123

127124
if task.os == OS.windows and blob_exists(
@@ -165,7 +162,7 @@ def build_work_unit(task: Task) -> Optional[Tuple[BucketConfig, WorkUnit]]:
165162
count=count,
166163
reboot=reboot,
167164
setup_script=setup_script,
168-
setup_url=setup_url,
165+
setup_container=setup_container,
169166
)
170167

171168
return bucket_config, work_unit
@@ -201,10 +198,14 @@ def build_work_set(tasks: List[Task]) -> Optional[Tuple[BucketConfig, WorkSet]]:
201198
work_units.append(work_unit)
202199

203200
if bucket_config:
201+
setup_url = get_container_sas_url(
202+
bucket_config.setup_container, StorageType.corpus, read=True, list=True
203+
)
204+
204205
work_set = WorkSet(
205206
reboot=bucket_config.reboot,
206207
script=(bucket_config.setup_script is not None),
207-
setup_url=bucket_config.setup_url,
208+
setup_url=setup_url,
208209
work_units=work_units,
209210
)
210211
return (bucket_config, work_set)

0 commit comments

Comments
 (0)