Re: dmg pool operation stuck


Nabarro, Tom
 

This is unusual, normally the name resolution works.

 

After talking to a colleague (Mike), we suspect that the IsLocalAddr() test is failing to match the AP address with a local address, with the result that the MS never starts: https://github.com/daos-stack/daos/blob/release/1.2/src/control/common/net_utils.go#L67

 

In ordered to investigate this case, since you seem to be open to adding debugging code, could you add some debug to dump the list of ifaceAddrs returned so that we can see what the system's idea of the local address set is please?

 

From: daos@daos.groups.io <daos@daos.groups.io> On Behalf Of allen.zhuo@...
Sent: Thursday, December 2, 2021 7:49 AM
To: daos@daos.groups.io
Subject: Re: [daos] dmg pool operation stuck

 

Hi Tom,
I think I know why it timed out when creating the pool. Because I set the 'access_points:' in daos_server.yml to my hostname 'sw2', it should be set to 'localhost'. If it is set to hostname, it will be judged as LocalAddr (common.IsLocalAddr(repAddr)) in new NewDatabase, and then not setReplica.
I'm not sure if this is a bug, but I think it should support setting to hostname.

// NewDatabase returns a configured and initialized Database instance.

func NewDatabase(log logging.Logger, cfg *DatabaseConfig) (*Database, error) {

        if cfg == nil {

                cfg = &DatabaseConfig{}

        }

 

        if cfg.SystemName == "" {

                cfg.SystemName = build.DefaultSystemName

        }

 

        db := &Database{

                log:                log,

                cfg:                cfg,

                replicaAddr:        &syncTCPAddr{},

                shutdownErrCh:      make(chan error),

                raftLeaderNotifyCh: make(chan bool),

 

                data: &dbData{

                        log: log,

 

                        Members: &MemberDatabase{

                                Ranks:        make(MemberRankMap),

                                Uuids:        make(MemberUuidMap),

                                Addrs:        make(MemberAddrMap),

                                FaultDomains: NewFaultDomainTree(),

                        },

                        Pools: &PoolDatabase{

                                Ranks:  make(PoolRankMap),

                                Uuids:  make(PoolUuidMap),

                                Labels: make(PoolLabelMap),

                        },

                        SchemaVersion: CurrentSchemaVersion,

                },

        }

 

        for _, repAddr := range db.cfg.Replicas {

                if !common.IsLocalAddr(repAddr) {

                        continue

                }

                db.setReplica(repAddr)

        }

 

        return db, nil

}

 

Join daos@daos.groups.io to automatically receive all group messages.