From a23ce43337fc2f28e5872b5d0fbff370f80bc572 Mon Sep 17 00:00:00 2001 From: Klaus Ma Date: Wed, 2 Dec 2015 18:09:22 +0800 Subject: [PATCH] Add MESOS_OFFER_REFUSE_SECONDS environment configuration Signed-off-by: Klaus Ma --- cluster/mesos/cluster.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/cluster/mesos/cluster.go b/cluster/mesos/cluster.go index 5ac21bf069..4257a5e636 100644 --- a/cluster/mesos/cluster.go +++ b/cluster/mesos/cluster.go @@ -9,6 +9,7 @@ import ( "io" "os" "sort" + "strconv" "sync" "time" @@ -470,7 +471,21 @@ func (c *Cluster) scheduleTask(t *task) bool { t.build(n.ID, c.agents[n.ID].offers) - if _, err := c.driver.LaunchTasks(offerIDs, []*mesosproto.TaskInfo{&t.TaskInfo}, &mesosproto.Filters{}); err != nil { + // Set Mesos refuse seconds by environment variables. + var offerFilters *mesosproto.Filters; + var refuseSecondsStr string; + + offerFilters = &mesosproto.Filters{}; + refuseSecondsStr = os.Getenv("MESOS_OFFER_REFUSE_SECONDS"); + + if refuseSecondsStr != "" { + refuseSeconds, err := strconv.ParseFloat(refuseSecondsStr, 64); + if !err { + offerFilters.RefuseSeconds = &refuseSeconds; + } + } + + if _, err := c.driver.LaunchTasks(offerIDs, []*mesosproto.TaskInfo{&t.TaskInfo}, offerFilters); err != nil { // TODO: Do not erase all the offers, only the one used for _, offer := range s.offers { c.removeOffer(offer)