fix keep alive (#12041)

This commit is contained in:
Michael Yang
2025-08-27 11:51:25 -07:00
committed by GitHub
parent 59412fbb43
commit 1081532430
3 changed files with 9 additions and 4 deletions

View File

@@ -888,7 +888,7 @@ func (d *Duration) UnmarshalJSON(b []byte) (err error) {
if t < 0 { if t < 0 {
d.Duration = time.Duration(math.MaxInt64) d.Duration = time.Duration(math.MaxInt64)
} else { } else {
d.Duration = time.Duration(int(t) * int(time.Second)) d.Duration = time.Duration(t * float64(time.Second))
} }
case string: case string:
d.Duration, err = time.ParseDuration(t) d.Duration, err = time.ParseDuration(t)

View File

@@ -17,6 +17,11 @@ func TestKeepAliveParsingFromJSON(t *testing.T) {
req string req string
exp *Duration exp *Duration
}{ }{
{
name: "Unset",
req: `{ }`,
exp: nil,
},
{ {
name: "Positive Integer", name: "Positive Integer",
req: `{ "keep_alive": 42 }`, req: `{ "keep_alive": 42 }`,
@@ -25,7 +30,7 @@ func TestKeepAliveParsingFromJSON(t *testing.T) {
{ {
name: "Positive Float", name: "Positive Float",
req: `{ "keep_alive": 42.5 }`, req: `{ "keep_alive": 42.5 }`,
exp: &Duration{42 * time.Second}, exp: &Duration{42500 * time.Millisecond},
}, },
{ {
name: "Positive Integer String", name: "Positive Integer String",

View File

@@ -189,7 +189,7 @@ func (s *Server) GenerateHandler(c *gin.Context) {
} }
// expire the runner // expire the runner
if req.Prompt == "" && req.KeepAlive != nil && int(req.KeepAlive.Seconds()) == 0 { if req.Prompt == "" && req.KeepAlive != nil && req.KeepAlive.Duration == 0 {
s.sched.expireRunner(m) s.sched.expireRunner(m)
c.JSON(http.StatusOK, api.GenerateResponse{ c.JSON(http.StatusOK, api.GenerateResponse{
@@ -1544,7 +1544,7 @@ func (s *Server) ChatHandler(c *gin.Context) {
} }
// expire the runner // expire the runner
if len(req.Messages) == 0 && req.KeepAlive != nil && int(req.KeepAlive.Seconds()) == 0 { if len(req.Messages) == 0 && req.KeepAlive != nil && req.KeepAlive.Duration == 0 {
model, err := GetModel(req.Model) model, err := GetModel(req.Model)
if err != nil { if err != nil {
switch { switch {