Save Peer Status separately in the FileStore (#554)

Due to peer reconnects when restarting the Management service,
there are lots of SaveStore operations to update peer status.

Store.SavePeerStatus stores peer status separately and the
FileStore implementation stores it in memory.
This commit is contained in:
Misha Bragin
2022-11-08 10:46:12 +01:00
committed by GitHub
parent 7e262572a4
commit f37b43a542
13 changed files with 150 additions and 29 deletions

View File

@@ -9,9 +9,12 @@ type Store interface {
GetAccountByPrivateDomain(domain string) (*Account, error)
SaveAccount(account *Account) error
GetInstallationID() string
SaveInstallationID(id string) error
SaveInstallationID(ID string) error
// AcquireAccountLock should attempt to acquire account lock and return a function that releases the lock
AcquireAccountLock(accountID string) func()
// AcquireGlobalLock should attempt to acquire a global lock and return a function that releases the lock
AcquireGlobalLock() func()
SavePeerStatus(accountID, peerKey string, status PeerStatus) error
// Close should close the store persisting all unsaved data.
Close() error
}