aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard/dashapi/dashapi.go
Commit message (Collapse)AuthorAgeFilesLines
* dashboard/dashapi: retry requests on errorsDmitry Vyukov2026-01-131-8/+21
| | | | | | | | | API requests episodically fail due to internal datastore errors, some timeouts, etc. Failure of some requests is especially unpleasant and leads to lots of wasted work (uploading of syz-ci build info, job completion, etc). So we retry requests several times. We do this always for all requests, since we don't expect any of them to legitimately fail (we don't send malformed requests), and it won't harm for any request types.
* all: use any instead of interface{}Dmitry Vyukov2025-12-221-4/+4
| | | | Any is the preferred over interface{} now in Go.
* dashboard: add send_email methodAleksandr Nogikh2025-07-031-0/+13
| | | | | The API method can be used to send a raw email on behalf of the GAE instance.
* dashboard: include revoked reproducers in reportsAleksandr Nogikh2025-03-081-0/+1
| | | | | | | | | | | | | Context: #5829. Let's not pretend that the revoked reproducer never existed and still report it. It will avoid unexpected side-effects for the higher-level logic. There may be better ways to resolve the bug, but let's first just get it fixed to prevent syzbot from spamming the mailing lists. Add a test to verify the new behavior.
* tools/syz-covermerger: upload coverage as jsonlTaras Madan2024-12-191-36/+8
| | | | | | | | | | | | | | | | | Previous implementation store only the summary of processed records. The summary was <1GB and single processing node was able to manipulate the data. Current implementation stores all the details about records read to make post-processing more flexible. This change was needed to get access to the source manager name and will help to analyze other details. This new implementation requires 20GB mem to process single day records. CSV log interning experiment allowed to merge using 10G. Quarter data aggregation will cost ~100 times more. The alternative is to use stream processing. We can process data kernel-file-by-file. It allows to /15000 memory consumption. This approach is implemented here. We're batching coverage signals by file and store per-file results in GCS JSONL file. See https://jsonlines.org/ to learn about jsonl.
* dashboard/app: upload coverage using GCS bucketTaras Madan2024-12-171-5/+24
|
* dashboard/dashapi: change json encoding to streamTaras Madan2024-12-131-6/+3
| | | | It may help to compress huge coverage json w/o OOM.
* tools/syz-covermerger: more logsTaras Madan2024-12-121-2/+8
| | | | | | | I don't see any visible problems but the records in DB are not created. Let's report the amount of records created at the end of the batch step. +log the names of the managers
* pkg/covermerger: aggregate data per-managerTaras Madan2024-12-121-1/+1
| | | | It enables us to see the manager unique coverage.
* prog: annotate image assets with fsck logsFlorent Revest2024-12-091-0/+4
| | | | | | | | | | | | | | | | | | Syscall attributes are extended with a fsck command field which lets file system mount definitions specify a fsck-like command to run. This is required because all file systems have a custom fsck command invokation style. When uploading a compressed image asset to the dashboard, syz-manager also runs the fsck command and logs its output over the dashapi. The dashboard logs these fsck logs into the database. This has been requested by fs maintainer Ted Tso who would like to quickly understand whether a filesystem is corrupted or not before looking at a reproducer in more details. Ultimately, this could be used as an early triage sign to determine whether a bug is obviously critical.
* pkg/spanner/coveragedb: move package to pkg/coveragedbTaras Madan2024-08-291-1/+1
|
* dashboard/dashapi/dashapi.go: fix api nameTaras Madan2024-07-241-1/+1
|
* all: move spanner writes to dashboard/appTaras Madan2024-07-231-0/+20
| | | | dashboard/app knows about subsystems more
* dashboard: specify the types of LogToRepro repliesAleksandr Nogikh2024-07-221-0/+8
|
* syz-manager: add userAgent argumentKonstantinos Andrikopoulos2024-07-081-2/+19
|
* dashboard/dashapi/dashapi.go: delete RequestMockerTaras Madan2024-05-101-15/+6
|
* dashapi: send requests using multipart/form-dataAleksandr Nogikh2024-02-151-11/+23
| | | | | | | | | | This format is much better suitable for our API since we're including a potentially very big binary blob into every request. No changes have to be made on the server side -- it already supports both formats. Hopefully it will help remediate #4495.
* dashboard: retest missing backportsAleksandr Nogikh2024-02-051-0/+2
| | | | | | | | Poll missing backport commits and, once a missing backport is found to be present in the fuzzed trees, don't display it on the web dashboard and send an email with the suggestion to close the bug. Closes #4425.
* all: record diverted bug reproductionsAleksandr Nogikh2024-01-301-3/+5
| | | | | | | | | | | | In some cases, we derail during bug reproduction and end up finding and reporting a reproducer for another issue. It causes no problems since it's bucketed using the new title, but it's difficult to trace such situations - on the original bug page, there are no failed reproduction logs and on the new bug page it looks as if we intended to find a reproducer for the bug with the new title. Let's record bug reproduction logs in this case, so that we'd also see a failed bug reproduction attempt on the original bug page.
* all: restart unfinished bug reproductionsAleksandr Nogikh2024-01-301-0/+17
| | | | | | | | | | | There are cases when syz-manager is killed before it could finish bug reproduction. If the bug is frequent, it's not a problem - we might have more luck next time. However, if the bug happened only once, we risk never finding a repro. Let syz-managers periodically query dashboard for crash logs to reproducer. Later we can reuse the same API to move repro sharing functionality out from syz-hub.
* dashboard: capture cover and PCs after corpus triageAleksandr Nogikh2024-01-231-0/+4
| | | | | This statistics allows us to better estimate the amount of coverage that is lost after every syzbot instance is restarted.
* pgk/asset: don't use dashapi.NewMock()Aleksandr Nogikh2023-12-201-6/+0
| | | | Define a pkg-only view of the required dashapi methods.
* dashboard: display the number of open low-prio issues separatelyAleksandr Nogikh2023-11-271-0/+1
| | | | | It will help users better focus on the problems they have identified as important themselves.
* tools/syz-lore: save discussions as JSON filesAleksandr Nogikh2023-09-041-0/+1
| | | | | | Make the tool more flexible by supporting two modes of operation: 1) The already existing mode -- upload the results to dashboard. 2) The local mode -- save parsed LKML discussions as JSON files.
* dashboard: remember failed repro logsAleksandr Nogikh2023-08-301-0/+1
| | | | | | | This will help analyze reasons for bug reproduction failures. This commit does not include visual display of the results, it will follow later.
* dashboard: distinguish cross tree job reportsAleksandr Nogikh2023-08-041-0/+1
| | | | | Add a new CrossTree field to dashapi.BisectResult in order to distinguish fix candidate results from normal fix bisections.
* dashboard: display fix candidate info on the bug pageAleksandr Nogikh2023-07-261-0/+1
|
* all: support cross-tree fix bisectionAleksandr Nogikh2023-07-251-12/+16
| | | | | | | | | | | | | If tree origin assessment code has identified that the bug is not reproducible in a tree from which we merge/cherry-pick commits, use fix bisection to identify that commit. This can e.g. be used to find fixing commits that were not backported from Linux kernel mainline into LTS branches. In case of bisection errors, re-do such jobs every 30 days. Remember in the Bug structure whether there's a fix candidate and return the details in the full bug info API query.
* syz-ci: don't always return Build.CommitAleksandr Nogikh2023-07-251-1/+0
| | | | | | | For bisections, only return it if it's successful. We don't seem to be interested in specific values for jobs anyway. Do the same for KernelCommitDate.
* dashboard: rename createPatchTestingJobs() to jobFromBugSample()Aleksandr Nogikh2023-07-251-0/+4
| | | | | This will let us use the same code for sampling-based generation of bisection jobs as well.
* all: use special placeholder for errorsTaras Madan2023-07-241-3/+3
|
* dashboard: include Manager into BugReportAleksandr Nogikh2023-07-071-0/+1
| | | | | De-facto BugReport anyway refers to a specified crash and not just to the bug in general. Let's also include the Manager field there.
* dashboard: export causeBug repo + branchTaras Madan2023-06-291-0/+2
|
* dashboard: allow admins to retry individual bisectionsSpace Meyer2023-06-121-0/+2
| | | | | | | | | | Changes to our rootfs, compilers or bisection logic regularly cause regressions in our bisection accuracy. Retrying them currently entails fiddling with the GCP datastore directly or mass deleting all failed bisections. This change will allow us to retry specific bisections with a single click.
* dashboard: include tree origin jobs into full bug infoAleksandr Nogikh2023-05-261-0/+1
|
* dashboard: include label message into bug reportsAleksandr Nogikh2023-05-251-1/+2
|
* dashboard: send per-label notificationsAleksandr Nogikh2023-05-251-0/+6
| | | | | | | | If the label is not user-set and the config specifies a message for it, send a bug notification. If the label is related to bug origin testing, attach the list of tested trees.
* dashapi: display error text for BisectInfraErrorAleksandr Nogikh2023-05-251-0/+23
|
* dashboard: display bug origin tree testing resultsAleksandr Nogikh2023-05-121-0/+1
| | | | | Display them as a collapsible block on the bug info page. Use colors to distinguish results.
* dashboard: move job info to dashapiAleksandr Nogikh2023-05-121-0/+34
| | | | | | | This is a quite generic information that can be useful not just for templating, but also for API calls. Reuse the already existing dashapi.Commit structure.
* dashboard: restart failed cause bisectionsAleksandr Nogikh2023-05-091-4/+5
| | | | | If the bisection failed due to infrastructure problems, let's retry it in 7 days.
* all: support patch testing on merge baseAleksandr Nogikh2023-04-281-0/+2
| | | | | | | | | | | | If merge base repo & branch are specified, syz-ci will first calculate the merge base between KernelRepo + KernelBranch and MergeBaseRepo + MergeBaseBranch and then it will execute patch testing on the latest commit reachable from both. If there's no such commit or several ones are equally good, abort the job with an error. Also, support a TreeOrigin job flag that will be needed later.
* dashboard: include month into monthly reportsAleksandr Nogikh2023-04-261-0/+1
| | | | | To make reports better distinguishable, include the month and the year when the report was generated. E.g. "Monthly ext4 report (Jan 2000)".
* dashboard: separate DiscussionReport and DiscussionMentionAleksandr Nogikh2023-04-121-0/+1
| | | | | | DiscussionReport are the discussions started by syzbot. All other discussions that Cc syzbot or mention its bugs are DiscussionMention.
* dashboard: introduce DiscussionReminder typeAleksandr Nogikh2023-04-121-2/+3
| | | | | | | | Bugs are also mentioned in mass reminders, treat it as a separate discussion type. Later we'll want to limit the number of DiscussionReminder discussions we show on a bug page, so this information will be very useful.
* dashboard: collect and display bug-related discussionsAleksandr Nogikh2023-04-061-0/+38
| | | | | | | | | Collect the information about the discussions under bug reports and patches that target the reported bugs. For now only Lore discussions are supported. Display the discussion list on the bug info page.
* dashboard: share repro level and report link in SimilarBugInfoAleksandr Nogikh2023-03-281-5/+7
| | | | This will make FullBugInfo's contents much more useful.
* dashboard: support `#syz regenerate` commandAleksandr Nogikh2023-03-281-3/+4
| | | | | | If the `#syz regenerate` command is sent in response to a bug list, dashboard will schedule its regeneration the next time the corresponding cron job is run.
* dashboard: introduce per-subsystem reminders about open bugsAleksandr Nogikh2023-03-241-0/+42
| | | | | | | | | Once in a month, collect for each subsystem the list of bugs that are still open on the syzbot dashboard and send an email to the corresponding mailing list. Support manual moderation of such reminders, we'll need that at least for the time being.
* dashboard/app: differentiate user-set tags in the subjectAleksandr Nogikh2023-02-241-2/+3
| | | | | | Only include the question mark sign for automatically inferred subsystems. For user-set subsystems, just put tags in the brackets: [net] [fs].