Skip to content

Commit ec30295

Browse files
committed
Revert "Store webhook event in database (go-gitea#29145)"
This reverts commit 26653b1.
1 parent 50deb45 commit ec30295

28 files changed

+1545
-1713
lines changed

models/fixtures/hook_task.yml

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,3 @@
33
hook_id: 1
44
uuid: uuid1
55
is_delivered: true
6-
is_succeed: false
7-
request_content: >
8-
{
9-
"url": "/matrix-delivered",
10-
"http_method":"PUT",
11-
"headers": {
12-
"X-Head": "42"
13-
},
14-
"body": "{}"
15-
}
16-
17-
-
18-
id: 2
19-
hook_id: 1
20-
uuid: uuid2
21-
is_delivered: false
22-
23-
-
24-
id: 3
25-
hook_id: 1
26-
uuid: uuid3
27-
is_delivered: true
28-
is_succeed: true
29-
payload_content: '{"key":"value"}' # legacy task, payload saved in payload_content (and not in request_content)
30-
request_content: >
31-
{
32-
"url": "/matrix-success",
33-
"http_method":"PUT",
34-
"headers": {
35-
"X-Head": "42"
36-
}
37-
}

models/migrations/migrations.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -564,8 +564,6 @@ var migrations = []Migration{
564564
NewMigration("Add user_blocking table", v1_22.AddUserBlockingTable),
565565
// v289 -> v290
566566
NewMigration("Add default_wiki_branch to repository table", v1_22.AddDefaultWikiBranch),
567-
// v290 -> v291
568-
NewMigration("Add PayloadVersion to HookTask", v1_22.AddPayloadVersionToHookTaskTable),
569567
}
570568

571569
// GetCurrentDBVersion returns the current db version

models/migrations/v1_22/v290.go

Lines changed: 0 additions & 17 deletions
This file was deleted.

models/webhook/hooktask.go

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ package webhook
55

66
import (
77
"context"
8-
"errors"
98
"time"
109

1110
"code.gitea.io/gitea/models/db"
1211
"code.gitea.io/gitea/modules/json"
1312
"code.gitea.io/gitea/modules/log"
1413
"code.gitea.io/gitea/modules/setting"
14+
api "code.gitea.io/gitea/modules/structs"
1515
"code.gitea.io/gitea/modules/timeutil"
1616
webhook_module "code.gitea.io/gitea/modules/webhook"
1717

@@ -31,7 +31,6 @@ type HookRequest struct {
3131
URL string `json:"url"`
3232
HTTPMethod string `json:"http_method"`
3333
Headers map[string]string `json:"headers"`
34-
Body string `json:"body"`
3534
}
3635

3736
// HookResponse represents hook task response information.
@@ -46,15 +45,11 @@ type HookTask struct {
4645
ID int64 `xorm:"pk autoincr"`
4746
HookID int64 `xorm:"index"`
4847
UUID string `xorm:"unique"`
48+
api.Payloader `xorm:"-"`
4949
PayloadContent string `xorm:"LONGTEXT"`
50-
// PayloadVersion number to allow for smooth version upgrades:
51-
// - PayloadVersion 1: PayloadContent contains the JSON as sent to the URL
52-
// - PayloadVersion 2: PayloadContent contains the original event
53-
PayloadVersion int `xorm:"DEFAULT 1"`
54-
55-
EventType webhook_module.HookEventType
56-
IsDelivered bool
57-
Delivered timeutil.TimeStampNano
50+
EventType webhook_module.HookEventType
51+
IsDelivered bool
52+
Delivered timeutil.TimeStampNano
5853

5954
// History info.
6055
IsSucceed bool
@@ -120,12 +115,16 @@ func HookTasks(ctx context.Context, hookID int64, page int) ([]*HookTask, error)
120115
// it handles conversion from Payload to PayloadContent.
121116
func CreateHookTask(ctx context.Context, t *HookTask) (*HookTask, error) {
122117
t.UUID = gouuid.New().String()
118+
if t.Payloader != nil {
119+
data, err := t.Payloader.JSONPayload()
120+
if err != nil {
121+
return nil, err
122+
}
123+
t.PayloadContent = string(data)
124+
}
123125
if t.Delivered == 0 {
124126
t.Delivered = timeutil.TimeStampNanoNow()
125127
}
126-
if t.PayloadVersion == 0 {
127-
return nil, errors.New("missing HookTask.PayloadVersion")
128-
}
129128
return t, db.Insert(ctx, t)
130129
}
131130

@@ -166,7 +165,6 @@ func ReplayHookTask(ctx context.Context, hookID int64, uuid string) (*HookTask,
166165
HookID: task.HookID,
167166
PayloadContent: task.PayloadContent,
168167
EventType: task.EventType,
169-
PayloadVersion: task.PayloadVersion,
170168
})
171169
}
172170

models/webhook/webhook_test.go

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"code.gitea.io/gitea/models/unittest"
1313
"code.gitea.io/gitea/modules/json"
1414
"code.gitea.io/gitea/modules/optional"
15+
api "code.gitea.io/gitea/modules/structs"
1516
"code.gitea.io/gitea/modules/timeutil"
1617
webhook_module "code.gitea.io/gitea/modules/webhook"
1718

@@ -34,10 +35,8 @@ func TestWebhook_History(t *testing.T) {
3435
webhook := unittest.AssertExistsAndLoadBean(t, &Webhook{ID: 1})
3536
tasks, err := webhook.History(db.DefaultContext, 0)
3637
assert.NoError(t, err)
37-
if assert.Len(t, tasks, 3) {
38-
assert.Equal(t, int64(3), tasks[0].ID)
39-
assert.Equal(t, int64(2), tasks[1].ID)
40-
assert.Equal(t, int64(1), tasks[2].ID)
38+
if assert.Len(t, tasks, 1) {
39+
assert.Equal(t, int64(1), tasks[0].ID)
4140
}
4241

4342
webhook = unittest.AssertExistsAndLoadBean(t, &Webhook{ID: 2})
@@ -198,10 +197,8 @@ func TestHookTasks(t *testing.T) {
198197
assert.NoError(t, unittest.PrepareTestDatabase())
199198
hookTasks, err := HookTasks(db.DefaultContext, 1, 1)
200199
assert.NoError(t, err)
201-
if assert.Len(t, hookTasks, 3) {
202-
assert.Equal(t, int64(3), hookTasks[0].ID)
203-
assert.Equal(t, int64(2), hookTasks[1].ID)
204-
assert.Equal(t, int64(1), hookTasks[2].ID)
200+
if assert.Len(t, hookTasks, 1) {
201+
assert.Equal(t, int64(1), hookTasks[0].ID)
205202
}
206203

207204
hookTasks, err = HookTasks(db.DefaultContext, unittest.NonexistentID, 1)
@@ -212,8 +209,8 @@ func TestHookTasks(t *testing.T) {
212209
func TestCreateHookTask(t *testing.T) {
213210
assert.NoError(t, unittest.PrepareTestDatabase())
214211
hookTask := &HookTask{
215-
HookID: 3,
216-
PayloadVersion: 2,
212+
HookID: 3,
213+
Payloader: &api.PushPayload{},
217214
}
218215
unittest.AssertNotExistsBean(t, hookTask)
219216
_, err := CreateHookTask(db.DefaultContext, hookTask)
@@ -235,10 +232,10 @@ func TestUpdateHookTask(t *testing.T) {
235232
func TestCleanupHookTaskTable_PerWebhook_DeletesDelivered(t *testing.T) {
236233
assert.NoError(t, unittest.PrepareTestDatabase())
237234
hookTask := &HookTask{
238-
HookID: 3,
239-
IsDelivered: true,
240-
Delivered: timeutil.TimeStampNanoNow(),
241-
PayloadVersion: 2,
235+
HookID: 3,
236+
Payloader: &api.PushPayload{},
237+
IsDelivered: true,
238+
Delivered: timeutil.TimeStampNanoNow(),
242239
}
243240
unittest.AssertNotExistsBean(t, hookTask)
244241
_, err := CreateHookTask(db.DefaultContext, hookTask)
@@ -252,9 +249,9 @@ func TestCleanupHookTaskTable_PerWebhook_DeletesDelivered(t *testing.T) {
252249
func TestCleanupHookTaskTable_PerWebhook_LeavesUndelivered(t *testing.T) {
253250
assert.NoError(t, unittest.PrepareTestDatabase())
254251
hookTask := &HookTask{
255-
HookID: 4,
256-
IsDelivered: false,
257-
PayloadVersion: 2,
252+
HookID: 4,
253+
Payloader: &api.PushPayload{},
254+
IsDelivered: false,
258255
}
259256
unittest.AssertNotExistsBean(t, hookTask)
260257
_, err := CreateHookTask(db.DefaultContext, hookTask)
@@ -268,10 +265,10 @@ func TestCleanupHookTaskTable_PerWebhook_LeavesUndelivered(t *testing.T) {
268265
func TestCleanupHookTaskTable_PerWebhook_LeavesMostRecentTask(t *testing.T) {
269266
assert.NoError(t, unittest.PrepareTestDatabase())
270267
hookTask := &HookTask{
271-
HookID: 4,
272-
IsDelivered: true,
273-
Delivered: timeutil.TimeStampNanoNow(),
274-
PayloadVersion: 2,
268+
HookID: 4,
269+
Payloader: &api.PushPayload{},
270+
IsDelivered: true,
271+
Delivered: timeutil.TimeStampNanoNow(),
275272
}
276273
unittest.AssertNotExistsBean(t, hookTask)
277274
_, err := CreateHookTask(db.DefaultContext, hookTask)
@@ -285,10 +282,10 @@ func TestCleanupHookTaskTable_PerWebhook_LeavesMostRecentTask(t *testing.T) {
285282
func TestCleanupHookTaskTable_OlderThan_DeletesDelivered(t *testing.T) {
286283
assert.NoError(t, unittest.PrepareTestDatabase())
287284
hookTask := &HookTask{
288-
HookID: 3,
289-
IsDelivered: true,
290-
Delivered: timeutil.TimeStampNano(time.Now().AddDate(0, 0, -8).UnixNano()),
291-
PayloadVersion: 2,
285+
HookID: 3,
286+
Payloader: &api.PushPayload{},
287+
IsDelivered: true,
288+
Delivered: timeutil.TimeStampNano(time.Now().AddDate(0, 0, -8).UnixNano()),
292289
}
293290
unittest.AssertNotExistsBean(t, hookTask)
294291
_, err := CreateHookTask(db.DefaultContext, hookTask)
@@ -302,9 +299,9 @@ func TestCleanupHookTaskTable_OlderThan_DeletesDelivered(t *testing.T) {
302299
func TestCleanupHookTaskTable_OlderThan_LeavesUndelivered(t *testing.T) {
303300
assert.NoError(t, unittest.PrepareTestDatabase())
304301
hookTask := &HookTask{
305-
HookID: 4,
306-
IsDelivered: false,
307-
PayloadVersion: 2,
302+
HookID: 4,
303+
Payloader: &api.PushPayload{},
304+
IsDelivered: false,
308305
}
309306
unittest.AssertNotExistsBean(t, hookTask)
310307
_, err := CreateHookTask(db.DefaultContext, hookTask)
@@ -318,10 +315,10 @@ func TestCleanupHookTaskTable_OlderThan_LeavesUndelivered(t *testing.T) {
318315
func TestCleanupHookTaskTable_OlderThan_LeavesTaskEarlierThanAgeToDelete(t *testing.T) {
319316
assert.NoError(t, unittest.PrepareTestDatabase())
320317
hookTask := &HookTask{
321-
HookID: 4,
322-
IsDelivered: true,
323-
Delivered: timeutil.TimeStampNano(time.Now().AddDate(0, 0, -6).UnixNano()),
324-
PayloadVersion: 2,
318+
HookID: 4,
319+
Payloader: &api.PushPayload{},
320+
IsDelivered: true,
321+
Delivered: timeutil.TimeStampNano(time.Now().AddDate(0, 0, -6).UnixNano()),
325322
}
326323
unittest.AssertNotExistsBean(t, hookTask)
327324
_, err := CreateHookTask(db.DefaultContext, hookTask)

0 commit comments

Comments
 (0)