func runOnce(c *agent.Conf, a Agent) error { st, passwordChanged, err := c.OpenState() if err != nil { return err } defer st.Close() entity, err := a.Entity(st) if state.IsNotFound(err) || err == nil && entity.Life() == state.Dead { return worker.ErrDead } if err != nil { return err } if passwordChanged { if err := c.Write(); err != nil { return err } if err := entity.SetMongoPassword(c.StateInfo.Password); err != nil { return err } } return a.RunOnce(st, entity) }