Пн go - go -driver: крайний срок контекста превышен - PullRequest
0 голосов
/ 04 августа 2020

Я недавно обновил до более новой и официальной версии golang mon go драйвера для приложения, над которым я работаю. Все работает идеально для моей локальной разработки, однако, когда я подключаю его и указываю на свой внутренний сервер, я получаю «истек срок контекста» при вызове метода client.Ping (...).

Старый код драйвера по-прежнему работает нормально, и я также распечатываю строку подключения и могу скопировать и вставить ее в приложение компаса, и оно работает без проблем.

Однако, хоть убей, я не могу понять, почему этот новый код вернуть тайм-аут контекста. Другое дело, что mon go работает на нестандартном порту 32680, и я также использую пакет mgm. Однако он просто использует официальный драйвер mon go под капотом.

Mon go версия: 4.0.12 (локально и удаленно)

Код подключения здесь:

// NewClient creates a mongo DateBase connection
func NewClient(cfg config.Mongo) (*Client, error) {
    // create database connection string
    conStr := fmt.Sprintf("mongodb://%s:%s@%s:%s", cfg.Username, cfg.Password, cfg.Host, cfg.Port)

    // set mgm conf ie ctxTimeout value
    conf := mgm.Config{CtxTimeout: cfg.CtxTimeout}

    // setup mgm / DateBase connection
    err := mgm.SetDefaultConfig(&conf, cfg.Database, options.Client().ApplyURI(conStr))
    if err != nil {
        return nil, errors.Wrapf(err, "failed to connect to mongodb. cfg: %+v. conStr: %+v.", cfg, conStr)
    }

    // get access to underlying mongodb client driver, db and mgmConfig. Need for adding additional tools like seeding/migrations/etc
    mgmCfg, client, db, err := mgm.DefaultConfigs()
    if err != nil {
        return nil, errors.Wrap(err, "failed to return mgm.DefaultConfigs")
    }

    // NOTE: fails here!
    if err := client.Ping(mgm.Ctx(), readpref.Primary()); err != nil {
        return nil, errors.Wrapf(err, "Ping failed to mongodb. cfg: %+v. conStr: %+v. mgmCfg: %+v", cfg, conStr, mgmCfg)
    }

    return &Client{
        cfg:    cfg,
        mgmCfg: mgmCfg,
        client: client,
        db:     db,
    }, nil
}

ПОМОЩЬ! Понятия не имею, как я могу отладить то, что у меня есть?

1 Ответ

0 голосов
/ 04 августа 2020

Попробуйте добавить источник авторизации в свой DSN,

что-то вроде

mongodb://USER:PASSWORD@HOST:PORT/DBNAME?authsource=AUTHSOURCE
...