
We should be explicit that we are cancelling jobs once the script finds some log messages that are linked with known issues. That means the script preemptively retried the job without giving chances to recover. Adds magenta color to cancelled jobs. Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17389>
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
import re
|
|
from dataclasses import dataclass, field
|
|
from typing import TYPE_CHECKING, Any
|
|
|
|
if TYPE_CHECKING:
|
|
from lava.utils import LogFollower
|
|
|
|
from lava.exceptions import MesaCIKnownIssueException
|
|
from lava.utils.console_format import CONSOLE_LOG
|
|
from lava.utils.log_section import LogSectionType
|
|
|
|
|
|
@dataclass
|
|
class LAVALogHints:
|
|
log_follower: LogFollower
|
|
has_r8152_issue_history: bool = field(default=False, init=False)
|
|
|
|
def detect_failure(self, new_lines: list[dict[str, Any]]):
|
|
for line in new_lines:
|
|
self.detect_r8152_issue(line)
|
|
|
|
def detect_r8152_issue(self, line):
|
|
if (
|
|
self.log_follower.phase == LogSectionType.TEST_CASE
|
|
and line["lvl"] == "target"
|
|
):
|
|
if re.search(r"r8152 \S+ eth0: Tx status -71", line["msg"]):
|
|
self.has_r8152_issue_history = True
|
|
return
|
|
|
|
if self.has_r8152_issue_history and re.search(
|
|
r"nfs: server \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} not responding, still trying",
|
|
line["msg"],
|
|
):
|
|
raise MesaCIKnownIssueException(
|
|
f"{CONSOLE_LOG['FG_MAGENTA']}"
|
|
"Probable network issue failure encountered, retrying the job"
|
|
f"{CONSOLE_LOG['RESET']}"
|
|
)
|
|
|
|
self.has_r8152_issue_history = False
|