aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2026-02-19 15:27:16 +0000
committerAleksandr Nogikh <nogikh@google.com>2026-03-04 18:19:12 +0000
commitd51c35ebcaaadf15489b4adc62c951d5e6900a6a (patch)
tree906c11381fa8ee5db824c5454c0ddc5d121e69b5
parentb69311f5e478a1f47877dbf887729f87c2a7c6ac (diff)
syz-cluster: remember creation time of findings
It will help us diambiguate them later.
-rw-r--r--syz-cluster/pkg/db/entities.go1
-rw-r--r--syz-cluster/pkg/db/migrations/12_add_finding_created_at.down.sql1
-rw-r--r--syz-cluster/pkg/db/migrations/12_add_finding_created_at.up.sql1
-rw-r--r--syz-cluster/pkg/service/finding.go2
4 files changed, 5 insertions, 0 deletions
diff --git a/syz-cluster/pkg/db/entities.go b/syz-cluster/pkg/db/entities.go
index 0a0551c8e..cedb34188 100644
--- a/syz-cluster/pkg/db/entities.go
+++ b/syz-cluster/pkg/db/entities.go
@@ -167,6 +167,7 @@ type Finding struct {
SyzReproOptsURI string `spanner:"SyzReproOptsURI"`
CReproURI string `spanner:"CReproURI"`
InvalidatedAt spanner.NullTime `spanner:"InvalidatedAt"`
+ CreatedAt spanner.NullTime `spanner:"CreatedAt"`
}
func (f *Finding) SetInvalidatedAt(t time.Time) {
diff --git a/syz-cluster/pkg/db/migrations/12_add_finding_created_at.down.sql b/syz-cluster/pkg/db/migrations/12_add_finding_created_at.down.sql
new file mode 100644
index 000000000..8e873cfd4
--- /dev/null
+++ b/syz-cluster/pkg/db/migrations/12_add_finding_created_at.down.sql
@@ -0,0 +1 @@
+ALTER TABLE Findings DROP COLUMN CreatedAt;
diff --git a/syz-cluster/pkg/db/migrations/12_add_finding_created_at.up.sql b/syz-cluster/pkg/db/migrations/12_add_finding_created_at.up.sql
new file mode 100644
index 000000000..fce4beca0
--- /dev/null
+++ b/syz-cluster/pkg/db/migrations/12_add_finding_created_at.up.sql
@@ -0,0 +1 @@
+ALTER TABLE Findings ADD COLUMN CreatedAt TIMESTAMP;
diff --git a/syz-cluster/pkg/service/finding.go b/syz-cluster/pkg/service/finding.go
index fa68fb993..bfa7d13f1 100644
--- a/syz-cluster/pkg/service/finding.go
+++ b/syz-cluster/pkg/service/finding.go
@@ -11,6 +11,7 @@ import (
"slices"
"time"
+ "cloud.google.com/go/spanner"
"github.com/google/syzkaller/syz-cluster/pkg/api"
"github.com/google/syzkaller/syz-cluster/pkg/app"
"github.com/google/syzkaller/syz-cluster/pkg/blob"
@@ -59,6 +60,7 @@ func (s *FindingService) Save(ctx context.Context, req *api.RawFinding) error {
SessionID: req.SessionID,
TestName: req.TestName,
Title: req.Title,
+ CreatedAt: spanner.NullTime{Time: time.Now(), Valid: true},
}
// TODO: if it's not actually addded, these blobs will be orphaned.
err := s.saveAssets(finding, req)