diff --git a/internal/bridge/user.go b/internal/bridge/user.go index 3aad762d..25a697b7 100644 --- a/internal/bridge/user.go +++ b/internal/bridge/user.go @@ -329,30 +329,36 @@ func (bridge *Bridge) loginUser(ctx context.Context, client *proton.Client, auth // loadUsers tries to load each user in the vault that isn't already loaded. func (bridge *Bridge) loadUsers(ctx context.Context) error { + logrus.WithField("count", len(bridge.vault.GetUserIDs())).Info("Loading users") + return bridge.vault.ForUser(runtime.NumCPU(), func(user *vault.User) error { + log := logrus.WithField("userID", user.UserID()) + if user.AuthUID() == "" { + log.Info("Not loading disconnected user") return nil } if safe.RLockRet(func() bool { return mapHas(bridge.users, user.UserID()) }, bridge.usersLock) { + log.Debug("Not loading already-loaded user") return nil } - logrus.WithField("userID", user.UserID()).Info("Loading connected user") + log.Info("Loading connected user") bridge.publish(events.UserLoading{ UserID: user.UserID(), }) if err := bridge.loadUser(ctx, user); err != nil { - logrus.WithError(err).Error("Failed to load connected user") + log.WithError(err).Error("Failed to load connected user") bridge.publish(events.UserLoadFail{ UserID: user.UserID(), Error: err, }) } else { - logrus.WithField("userID", user.UserID()).Info("Successfully loaded user") + log.Info("Successfully loaded connected user") bridge.publish(events.UserLoadSuccess{ UserID: user.UserID(),