Skip to content

Commit 37dfb82

Browse files
committed
update insert logic when snark_work missing and handle uq_submissions_submitter_date unique index
1 parent 2be9722 commit 37dfb82

File tree

1 file changed

+37
-4
lines changed

1 file changed

+37
-4
lines changed

src/delegation_backend/postgres.go

+37-4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ func NewPostgreSQL(cfg *PostgreSQLConfig) (*sql.DB, error) {
2727
}
2828

2929
func (ctx *PostgreSQLContext) insertSubmission(submission *Submission) error {
30+
// if SnarkWork is empty, do not insert it into the database
31+
if len(submission.SnarkWork) == 0 {
32+
return ctx.insertSubmissionWithoutSnarkWork(submission)
33+
}
34+
return ctx.insertSubmissionWithSnarkWork(submission)
35+
}
36+
37+
func (ctx *PostgreSQLContext) insertSubmissionWithoutSnarkWork(submission *Submission) error {
3038
query := `INSERT INTO submissions
3139
(submitted_at_date,
3240
submitted_at,
@@ -35,14 +43,33 @@ func (ctx *PostgreSQLContext) insertSubmission(submission *Submission) error {
3543
block_hash,
3644
remote_addr,
3745
peer_id,
38-
snark_work,
3946
graphql_control_port,
4047
built_with_commit_sha)
41-
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)`
48+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)`
49+
_, err := ctx.DB.Exec(query, submission.SubmittedAtDate, submission.SubmittedAt,
50+
submission.Submitter, submission.CreatedAt, submission.BlockHash,
51+
submission.RemoteAddr, submission.PeerId, submission.GraphqlControlPort,
52+
submission.BuiltWithCommitSha)
53+
return err
54+
}
55+
56+
func (ctx *PostgreSQLContext) insertSubmissionWithSnarkWork(submission *Submission) error {
57+
query := `INSERT INTO submissions
58+
(submitted_at_date,
59+
submitted_at,
60+
submitter,
61+
created_at,
62+
block_hash,
63+
remote_addr,
64+
peer_id,
65+
graphql_control_port,
66+
built_with_commit_sha,
67+
snark_work)
68+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)`
4269
_, err := ctx.DB.Exec(query, submission.SubmittedAtDate, submission.SubmittedAt,
4370
submission.Submitter, submission.CreatedAt, submission.BlockHash,
44-
submission.RemoteAddr, submission.PeerId, submission.SnarkWork,
45-
submission.GraphqlControlPort, submission.BuiltWithCommitSha)
71+
submission.RemoteAddr, submission.PeerId, submission.GraphqlControlPort,
72+
submission.BuiltWithCommitSha, submission.SnarkWork)
4673
return err
4774
}
4875

@@ -54,6 +81,12 @@ func (ctx *PostgreSQLContext) PostgreSQLSave(objs ObjectsToSave) {
5481
}
5582

5683
if err := ctx.insertSubmission(submissionToSave); err != nil {
84+
// if err contains uq_submissions_submitter_date then we can ignore it
85+
// because it means that the submission is already in the database
86+
if err.Error() == "pq: duplicate key value violates unique constraint \"uq_submissions_submitter_date\"" {
87+
ctx.Log.Infof("PostgreSQLSave: Submission for submitter: %v at %v already exists", submissionToSave.Submitter, submissionToSave.SubmittedAt)
88+
return
89+
}
5790
ctx.Log.Errorf("PostgreSQLSave: Error saving submission to PostgreSQL: %v", err)
5891
} else {
5992
ctx.Log.Infof("PostgreSQLSave: Successfully saved submission for submitter: %v at %v", submissionToSave.Submitter, submissionToSave.SubmittedAt)

0 commit comments

Comments
 (0)