Skip to content
This repository was archived by the owner on Aug 30, 2020. It is now read-only.

Commit 17e8c42

Browse files
committed
ctx always created just before ent.Save; msg for 500; offer non-check update
1 parent 8d3d423 commit 17e8c42

File tree

6 files changed

+11
-11
lines changed

6 files changed

+11
-11
lines changed

gutils/tasks.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ func processEntity(ent *models.Entity) {
3232
return
3333
}
3434
// save the entity before returning
35-
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(CancelWaitTime))
3635
defer func() {
37-
if err := ent.Save(ctx, EntityType, DsClient); err != nil {
36+
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(CancelWaitTime))
37+
if err := ent.Save(ctx, EntityType, DsClient, true); err != nil {
3838
log.Println("ERROR: failed to save entity:", err, ". Entity: ", ent)
3939
}
4040
cancel()

handlers/create.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func Create(c echo.Context) error {
5454
entity := gutils.ConvReq2Ent(req)
5555
ctx, cancel := context.WithTimeout(context.Background(), gutils.CancelWaitTime)
5656
defer cancel()
57-
if err := entity.Save(ctx, gutils.EntityType, gutils.DsClient); err != nil {
57+
if err := entity.Save(ctx, gutils.EntityType, gutils.DsClient, false); err != nil {
5858
return err
5959
}
6060

handlers/delete.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ func Delete(c echo.Context) error {
2121
defer cancel()
2222
entity := &models.Entity{}
2323
if err := gutils.DsClient.Get(ctx, req.Key, entity); err != nil {
24-
return err
24+
return c.String(http.StatusInternalServerError, err.Error())
2525
}
2626

2727
ctx1, cancel1 := context.WithTimeout(context.Background(), gutils.CancelWaitTime)
2828
defer cancel1()
2929
if err := gutils.DsClient.Delete(ctx1, req.Key); err != nil {
30-
return err
30+
return c.String(http.StatusInternalServerError, err.Error())
3131
}
3232

3333
subject := fmt.Sprintf("[%s] <%s> INFO: %s!", email.Identity, entity.Name, "Deleted")

handlers/read.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func Read(c echo.Context) error {
1919
defer cancel()
2020
entity := &models.Entity{}
2121
if err := gutils.DsClient.Get(ctx, req.Key, entity); err != nil {
22-
return err
22+
return c.String(http.StatusInternalServerError, err.Error())
2323
}
2424
return c.JSON(http.StatusOK, entity)
2525
}

handlers/update.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func Update(c echo.Context) error {
2222
defer cancel()
2323
entity := &models.Entity{}
2424
if err := gutils.DsClient.Get(ctx, req.Key, entity); err != nil {
25-
return err
25+
return c.String(http.StatusInternalServerError, err.Error())
2626
}
2727

2828
// update relevant fields
@@ -58,8 +58,8 @@ func Update(c echo.Context) error {
5858
// update entity
5959
ctx1, cancel1 := context.WithTimeout(context.Background(), gutils.CancelWaitTime)
6060
defer cancel1()
61-
if err := entity.Save(ctx1, gutils.EntityType, gutils.DsClient); err != nil {
62-
return err
61+
if err := entity.Save(ctx1, gutils.EntityType, gutils.DsClient, false); err != nil {
62+
return c.String(http.StatusInternalServerError, err.Error())
6363
}
6464

6565
subject := fmt.Sprintf("[%s] <%s> INFO: %s!", email.Identity, entity.Name, "Updated")

models/entity.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ type (
3131
)
3232

3333
// Save saves the entry in the datastore
34-
func (entity *Entity) Save(ctx context.Context, entTypName string, dsClient *datastore.Client) (err error) {
34+
func (entity *Entity) Save(ctx context.Context, entTypName string, dsClient *datastore.Client, check bool) (err error) {
3535
defer func() {
3636
k, _ := json.Marshal(entity.K)
3737
if err != nil {
@@ -47,7 +47,7 @@ func (entity *Entity) Save(ctx context.Context, entTypName string, dsClient *dat
4747
if err := tx.Get(entity.K, &_ent); err != nil {
4848
return err
4949
}
50-
if _ent.NextCheck.After(time.Now()) {
50+
if _ent.NextCheck.After(time.Now()) && check {
5151
return errors.New("Entity was updated by another goroutine")
5252
}
5353
if _, err := tx.Mutate(datastore.NewUpdate(entity.K, entity)); err != nil {

0 commit comments

Comments
 (0)