func checkConnection()

in cmd/collector/sanitize.go [280:336]


func checkConnection() error {
	// check mongo_urls
	for _, mongo := range conf.Options.MongoUrls {
		_, err := utils.NewMongoCommunityConn(mongo, conf.Options.MongoConnectMode, true,
			utils.ReadWriteConcernDefault, utils.ReadWriteConcernDefault, conf.Options.MongoSslRootCaFile)
		if err != nil {
			return fmt.Errorf("connect source mongodb[%v] failed[%v]", utils.BlockMongoUrlPassword(mongo, "***"), err)
		}
	}

	// check mongo_cs_url
	if conf.Options.MongoCsUrl != "" {
		_, err := utils.NewMongoCommunityConn(conf.Options.MongoCsUrl, utils.VarMongoConnectModeSecondaryPreferred,
			true, utils.ReadWriteConcernDefault, utils.ReadWriteConcernDefault, conf.Options.MongoSslRootCaFile)
		if err != nil {
			return fmt.Errorf("connect config-server[%v] failed[%v]", utils.BlockMongoUrlPassword(conf.Options.MongoCsUrl, "***"), err)
		}
	}

	// check tunnel address
	// no need to check target connection when debug flag set.
	if conf.Options.Tunnel == utils.VarTunnelDirect &&
		!conf.Options.FullSyncExecutorDebug &&
		!conf.Options.IncrSyncExecutorDebug {
		for i, mongo := range conf.Options.TunnelAddress {
			targetConn, err := utils.NewMongoCommunityConn(mongo, conf.Options.MongoConnectMode, true,
				utils.ReadWriteConcernDefault, utils.ReadWriteConcernDefault, conf.Options.TunnelMongoSslRootCaFile)
			if err != nil {
				return fmt.Errorf("connect target tunnel mongodb[%v] failed[%v]", utils.BlockMongoUrlPassword(mongo, "***"), err)
			}

			// set target version
			if i == 0 {
				conf.Options.TargetDBVersion, _ = utils.GetDBVersion(targetConn)
			}
		}
	}

	// set source version
	source, err := getSourceDbUrl()
	if err != nil {
		return err
	}

	sourceConn, _ := utils.NewMongoCommunityConn(source, utils.VarMongoConnectModeSecondaryPreferred, true,
		utils.ReadWriteConcernDefault, utils.ReadWriteConcernDefault, conf.Options.MongoSslRootCaFile)
	// ignore error
	conf.Options.SourceDBVersion, _ = utils.GetDBVersion(sourceConn)
	if ok, err := utils.GetAndCompareVersion(sourceConn, "2.6.0",
		conf.Options.SourceDBVersion); err != nil {
		return err
	} else if !ok {
		return fmt.Errorf("source MongoDB version[%v] should >= 3.0", conf.Options.SourceDBVersion)
	}

	return nil
}