]> source.dussan.org Git - gitea.git/commitdiff
fix https://github.com/go-xorm/xorm/issues/161
authorUnknwon <joe2010xtmf@163.com>
Fri, 12 Sep 2014 22:58:24 +0000 (18:58 -0400)
committerUnknwon <joe2010xtmf@163.com>
Fri, 12 Sep 2014 22:58:24 +0000 (18:58 -0400)
models/models.go
models/webhook.go

index 247bcf2f6514c130a3de815cfc0feaef116a4903..283a8f7a93aa2973676ccb7401c1b9c59b6fcf18 100644 (file)
@@ -77,7 +77,7 @@ func getEngine() (*xorm.Engine, error) {
                        return nil, fmt.Errorf("Unknown database type: %s", DbCfg.Type)
                }
                os.MkdirAll(path.Dir(DbCfg.Path), os.ModePerm)
-               cnnstr = DbCfg.Path
+               cnnstr = "file:" + DbCfg.Path + "?cache=shared&mode=rwc"
        default:
                return nil, fmt.Errorf("Unknown database type: %s", DbCfg.Type)
        }
index 5c0e217975438e77cb95854fbc10a95823302e49..3c07cc81797d7ed16bd1134c2da767aec3b0faae 100644 (file)
@@ -236,6 +236,7 @@ func UpdateHookTask(t *HookTask) error {
 
 // DeliverHooks checks and delivers undelivered hooks.
 func DeliverHooks() {
+       tasks := make([]*HookTask, 0, 10)
        timeout := time.Duration(setting.WebhookDeliverTimeout) * time.Second
        x.Where("is_delivered=?", false).Iterate(new(HookTask),
                func(idx int, bean interface{}) error {
@@ -283,12 +284,18 @@ func DeliverHooks() {
                                }
                        }
 
-                       if err := UpdateHookTask(t); err != nil {
-                               log.Error(4, "UpdateHookTask: %v", err)
-                               return nil
-                       }
+                       tasks = append(tasks, t)
 
-                       log.Trace("Hook delivered(%s): %s", t.Uuid, t.PayloadContent)
+                       if t.IsSucceed {
+                               log.Trace("Hook delivered(%s): %s", t.Uuid, t.PayloadContent)
+                       }
                        return nil
                })
+
+       // Update hook task status.
+       for _, t := range tasks {
+               if err := UpdateHookTask(t); err != nil {
+                       log.Error(4, "UpdateHookTask(%d): %v", t.Id, err)
+               }
+       }
 }