Skip to content

Commit 933a999

Browse files
Handle new fuzz targets in split builds properly (#4436)
Previously we tried to handle it by finding the fuzz targets in the list. But we still failed because it wasn't in the db. Save it to the db to solve this problem.
1 parent 1ff092d commit 933a999

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2025,18 +2025,25 @@ def _pick_fuzz_target():
20252025
return build_manager.pick_random_fuzz_target(target_weights)
20262026

20272027

2028-
def _get_fuzz_target_from_db(engine_name, fuzz_target_binary, job_type):
2028+
def _get_or_create_fuzz_target(engine_name, fuzz_target_binary, job_type):
2029+
"""Gets or creates a FuzzTarget db entity."""
20292030
project = data_handler.get_project_name(job_type)
20302031
qualified_name = data_types.fuzz_target_fully_qualified_name(
20312032
engine_name, project, fuzz_target_binary)
20322033
key = ndb.Key(data_types.FuzzTarget, qualified_name)
2033-
return key.get()
2034+
fuzz_target = key.get()
2035+
if fuzz_target:
2036+
return fuzz_target
2037+
fuzz_target = data_types.FuzzTarget(
2038+
engine=engine_name, binary=fuzz_target_binary, project=project)
2039+
fuzz_target.put()
2040+
return fuzz_target
20342041

20352042

20362043
def _preprocess_get_fuzz_target(fuzzer_name, job_type):
20372044
fuzz_target_name = _pick_fuzz_target()
20382045
if fuzz_target_name:
2039-
return _get_fuzz_target_from_db(fuzzer_name, fuzz_target_name, job_type)
2046+
return _get_or_create_fuzz_target(fuzzer_name, fuzz_target_name, job_type)
20402047
return None
20412048

20422049

0 commit comments

Comments
 (0)