Skip to content

Commit

Permalink
Changes to not allow timeout on request.
Browse files Browse the repository at this point in the history
  • Loading branch information
favalos committed Feb 4, 2024
1 parent bc52a4d commit 4687d81
Show file tree
Hide file tree
Showing 4 changed files with 3 additions and 43 deletions.
2 changes: 1 addition & 1 deletion internal/app/coroutines/completePromise.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ func CompletePromise(metadata *metadata.Metadata, req *t_api.Request, res func(*
} else {
status := t_api.ForbiddenStatus(p.State)
strict := req.CompletePromise.Strict && p.State != req.CompletePromise.State
timeout := !req.CompletePromise.Strict && req.CompletePromise.State.In(promise.Timedout)
timeout := !req.CompletePromise.Strict && p.State == promise.Timedout

if (!strict && p.IdempotencyKeyForComplete.Match(req.CompletePromise.IdempotencyKey)) || timeout {
status = t_api.StatusOK
Expand Down
40 changes: 0 additions & 40 deletions internal/app/subsystems/api/http/http_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -613,46 +613,6 @@ func TestHttpServer(t *testing.T) {
},
status: 201,
},
{
name: "RejectTimeoutPromise",
path: "promises/foo/bar",
method: "PATCH",
headers: map[string]string{
"Idempotency-Key": "bar",
"Strict": "true",
},
body: []byte(`{
"state": "REJECTED_TIMEDOUT",
"value": {
"headers": {"a":"a","b":"b","c":"c"},
"data": "cmVqZWN0"
}
}`),
req: &t_api.Request{
Kind: t_api.CompletePromise,
CompletePromise: &t_api.CompletePromiseRequest{
Id: "foo/bar",
IdempotencyKey: util.ToPointer(idempotency.Key("bar")),
Strict: true,
State: promise.Timedout,
Value: promise.Value{
Headers: map[string]string{"a": "a", "b": "b", "c": "c"},
Data: []byte("reject"),
},
},
},
res: &t_api.Response{
Kind: t_api.CompletePromise,
CompletePromise: &t_api.CompletePromiseResponse{
Status: t_api.StatusPromiseAlreadyTimedOut,
Promise: &promise.Promise{
Id: "foo/bar",
State: promise.Timedout,
},
},
},
status: 403,
},
{
name: "ReadSchedule",
path: "schedules/foo",
Expand Down
2 changes: 1 addition & 1 deletion internal/app/subsystems/api/http/promise.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ func (s *server) completePromise(c *gin.Context) {
err error
)

if !body.State.In(promise.Resolved | promise.Rejected | promise.Canceled | promise.Timedout) {
if !body.State.In(promise.Resolved | promise.Rejected | promise.Canceled) {
c.JSON(http.StatusBadRequest, api.HandleValidationError(errors.New("invalid state")))
return
}
Expand Down
2 changes: 1 addition & 1 deletion test/dst/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ func (m *Model) ValidateCompletePromise(t int64, req *t_api.Request, res *t_api.
switch res.CompletePromise.Status {
case t_api.StatusOK:
if pm.completed() {
if !(!req.CompletePromise.Strict && req.CompletePromise.State.In(promise.Timedout)) &&
if !(!req.CompletePromise.Strict && pm.promise.State == promise.Timedout) &&
!pm.idempotencyKeyForCompleteMatch(res.CompletePromise.Promise) {
return fmt.Errorf("ikey mismatch (%s, %s)", pm.promise.IdempotencyKeyForComplete, res.CompletePromise.Promise.IdempotencyKeyForComplete)
} else if req.CompletePromise.Strict && pm.promise.State != req.CompletePromise.State {
Expand Down

0 comments on commit 4687d81

Please sign in to comment.