// WriteBootstrapInfo implements the gossip.Storage interface. Write // persists the supplied bootstrap info to every known store. Returns // nil on success; otherwise returns first error encountered writing // to the stores. func (ls *Stores) WriteBootstrapInfo(bi *gossip.BootstrapInfo) error { ls.mu.RLock() defer ls.mu.RUnlock() bi.Timestamp = ls.clock.Now() if err := ls.updateBootstrapInfo(bi); err != nil { return err } log.Infof("wrote %d node addresses to persistent storage", len(bi.Addresses)) return nil }
// WriteBootstrapInfo implements the gossip.Storage interface. Write // persists the supplied bootstrap info to every known store. Returns // nil on success; otherwise returns first error encountered writing // to the stores. func (ls *Stores) WriteBootstrapInfo(bi *gossip.BootstrapInfo) error { ls.mu.RLock() defer ls.mu.RUnlock() ls.biLatestTS = ls.clock.Now() bi.Timestamp = ls.biLatestTS for _, s := range ls.storeMap { if err := engine.MVCCPutProto(s.engine, nil, keys.StoreGossipKey(), roachpb.ZeroTimestamp, nil, bi); err != nil { return err } log.Infof("wrote gossip bootstrap info to %s", s) } return nil }