Skip to content

Commit f9d516c

Browse files
authored
Revert #4499 (#4512)
There is a clear way to partition ErrorType enums in the criteria proposed, reverting this one. Part of #4271
1 parent 8da25b5 commit f9d516c

File tree

1 file changed

+6
-58
lines changed

1 file changed

+6
-58
lines changed

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

Lines changed: 6 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -84,50 +84,6 @@ def __init__(self, subtask: _Subtask):
8484
self._subtask = subtask
8585
self._labels = None
8686
self.utask_main_failure = None
87-
self._utask_success_conditions = [
88-
uworker_msg_pb2.ErrorType.NO_ERROR, # pylint: disable=no-member
89-
uworker_msg_pb2.ErrorType.ANALYZE_NO_CRASH, # pylint: disable=no-member
90-
uworker_msg_pb2.ErrorType.PROGRESSION_BAD_STATE_MIN_MAX, # pylint: disable=no-member
91-
uworker_msg_pb2.ErrorType.REGRESSION_NO_CRASH, # pylint: disable=no-member
92-
uworker_msg_pb2.ErrorType.REGRESSION_LOW_CONFIDENCE_IN_REGRESSION_RANGE, # pylint: disable=no-member
93-
uworker_msg_pb2.ErrorType.MINIMIZE_UNREPRODUCIBLE_CRASH, # pylint: disable=no-member
94-
uworker_msg_pb2.ErrorType.MINIMIZE_CRASH_TOO_FLAKY, # pylint: disable=no-member
95-
uworker_msg_pb2.ErrorType.LIBFUZZER_MINIMIZATION_UNREPRODUCIBLE, # pylint: disable=no-member
96-
uworker_msg_pb2.ErrorType.ANALYZE_CLOSE_INVALID_UPLOADED, # pylint: disable=no-member
97-
]
98-
self._utask_maybe_retry_conditions = [
99-
uworker_msg_pb2.ErrorType.ANALYZE_BUILD_SETUP, # pylint: disable=no-member
100-
uworker_msg_pb2.ErrorType.ANALYZE_NO_REVISIONS_LIST, # pylint: disable=no-member
101-
uworker_msg_pb2.ErrorType.TESTCASE_SETUP, # pylint: disable=no-member
102-
uworker_msg_pb2.ErrorType.MINIMIZE_SETUP, # pylint: disable=no-member
103-
uworker_msg_pb2.ErrorType.FUZZ_DATA_BUNDLE_SETUP_FAILURE, # pylint: disable=no-member
104-
uworker_msg_pb2.ErrorType.FUZZ_NO_FUZZ_TARGET_SELECTED, # pylint: disable=no-member
105-
uworker_msg_pb2.ErrorType.PROGRESSION_NO_CRASH, # pylint: disable=no-member
106-
uworker_msg_pb2.ErrorType.PROGRESSION_TIMEOUT, # pylint: disable=no-member
107-
uworker_msg_pb2.ErrorType.PROGRESSION_BUILD_SETUP_ERROR, # pylint: disable=no-member
108-
uworker_msg_pb2.ErrorType.REGRESSION_BUILD_SETUP_ERROR, # pylint: disable=no-member
109-
uworker_msg_pb2.ErrorType.REGRESSION_TIMEOUT_ERROR, # pylint: disable=no-member
110-
uworker_msg_pb2.ErrorType.SYMBOLIZE_BUILD_SETUP_ERROR, # pylint: disable=no-member
111-
uworker_msg_pb2.ErrorType.MINIMIZE_DEADLINE_EXCEEDED, # pylint: disable=no-member
112-
uworker_msg_pb2.ErrorType.MINIMIZE_DEADLINE_EXCEEDED_IN_MAIN_FILE_PHASE, # pylint: disable=no-member
113-
]
114-
self._utask_failure_conditions = [
115-
uworker_msg_pb2.ErrorType.ANALYZE_NO_REVISION_INDEX, # pylint: disable=no-member
116-
uworker_msg_pb2.ErrorType.UNHANDLED, # pylint: disable=no-member
117-
uworker_msg_pb2.ErrorType.VARIANT_BUILD_SETUP, # pylint: disable=no-member
118-
uworker_msg_pb2.ErrorType.FUZZ_BUILD_SETUP_FAILURE, # pylint: disable=no-member
119-
uworker_msg_pb2.ErrorType.FUZZ_NO_FUZZER, # pylint: disable=no-member
120-
uworker_msg_pb2.ErrorType.PROGRESSION_REVISION_LIST_ERROR, # pylint: disable=no-member
121-
uworker_msg_pb2.ErrorType.PROGRESSION_BUILD_NOT_FOUND, # pylint: disable=no-member
122-
uworker_msg_pb2.ErrorType.PROGRESSION_BAD_BUILD, # pylint: disable=no-member
123-
uworker_msg_pb2.ErrorType.REGRESSION_REVISION_LIST_ERROR, # pylint: disable=no-member
124-
uworker_msg_pb2.ErrorType.REGRESSION_BUILD_NOT_FOUND, # pylint: disable=no-member
125-
uworker_msg_pb2.ErrorType.REGRESSION_BAD_BUILD_ERROR, # pylint: disable=no-member
126-
uworker_msg_pb2.ErrorType.LIBFUZZER_MINIMIZATION_FAILED, # pylint: disable=no-member
127-
uworker_msg_pb2.ErrorType.CORPUS_PRUNING_FUZZER_SETUP_FAILED, # pylint: disable=no-member
128-
uworker_msg_pb2.ErrorType.CORPUS_PRUNING_ERROR, # pylint: disable=no-member
129-
uworker_msg_pb2.ErrorType.FUZZ_BAD_BUILD, # pylint: disable=no-member
130-
]
13187

13288
if subtask == _Subtask.PREPROCESS:
13389
self._preprocess_start_time_ns = self.start_time_ns
@@ -169,18 +125,6 @@ def set_task_details(self,
169125
# Ensure we always have a value after this method returns.
170126
assert self._preprocess_start_time_ns is not None
171127

172-
def _infer_uworker_main_outcome(self, exc_type, uworker_error):
173-
'''Infers, on a best effort basis, whether an uworker output implies
174-
success or failure. If an unequivocal response is not possible,
175-
classifies as maybe_retry.'''
176-
if exc_type or uworker_error in self._utask_failure_conditions:
177-
outcome = 'error'
178-
elif uworker_error in self._utask_maybe_retry_conditions:
179-
outcome = 'maybe_retry'
180-
else:
181-
outcome = 'success'
182-
return outcome
183-
184128
def __exit__(self, _exc_type, _exc_value, _traceback):
185129
# Ignore exception details, let Python continue unwinding the stack.
186130

@@ -201,8 +145,7 @@ def __exit__(self, _exc_type, _exc_value, _traceback):
201145
# The only case where a task might fail without throwing, is in
202146
# utask_main, by returning an ErrorType proto which indicates
203147
# failure.
204-
outcome = self._infer_uworker_main_outcome(_exc_type,
205-
self.utask_main_failure)
148+
outcome = 'error' if _exc_type or self.utask_main_failure else 'success'
206149
monitoring_metrics.TASK_OUTCOME_COUNT.increment({
207150
**self._labels, 'outcome': outcome
208151
})
@@ -223,6 +166,11 @@ def __exit__(self, _exc_type, _exc_value, _traceback):
223166
monitoring_metrics.TASK_OUTCOME_COUNT_BY_ERROR_TYPE.increment(
224167
trimmed_labels)
225168

169+
if error_condition != 'UNHANDLED_EXCEPTION':
170+
task = self._labels['task']
171+
subtask = self._labels['subtask']
172+
logs.info(f'Task {task}, at subtask {subtask}, finished successfully.')
173+
226174

227175
def ensure_uworker_env_type_safety(uworker_env):
228176
"""Converts all values in |uworker_env| to str types.

0 commit comments

Comments
 (0)