From 306519fd6de0882bc4429abe16e6ffba0cfaf80e Mon Sep 17 00:00:00 2001 From: Elle Mouton Date: Sun, 2 Mar 2025 08:22:59 +0200 Subject: [PATCH] session: remove variadic State param from ListSessionsByState We only really ever use it in one place and even then, only for a session State that we no longer use anymore. This is done to make the SQL queries we will need to implement the SQL Store more simple. --- session/interface.go | 4 ++-- session/kvdb_store.go | 12 +++--------- session/store_test.go | 11 ----------- session_rpcserver.go | 14 ++++++++++++-- 4 files changed, 17 insertions(+), 24 deletions(-) diff --git a/session/interface.go b/session/interface.go index a861f7e3..1ce3854f 100644 --- a/session/interface.go +++ b/session/interface.go @@ -288,8 +288,8 @@ type Store interface { ListSessionsByType(ctx context.Context, t Type) ([]*Session, error) // ListSessionsByState returns all sessions currently known to the store - // that are in the given states. - ListSessionsByState(ctx context.Context, state ...State) ([]*Session, + // that are in the given state. + ListSessionsByState(ctx context.Context, state State) ([]*Session, error) // UpdateSessionRemotePubKey can be used to add the given remote pub key diff --git a/session/kvdb_store.go b/session/kvdb_store.go index 69b2eac8..00524e3d 100644 --- a/session/kvdb_store.go +++ b/session/kvdb_store.go @@ -370,20 +370,14 @@ func (db *BoltStore) ListSessionsByType(_ context.Context, t Type) ([]*Session, } // ListSessionsByState returns all sessions currently known to the store that -// are in the given states. +// are in the given state. // // NOTE: this is part of the Store interface. -func (db *BoltStore) ListSessionsByState(_ context.Context, states ...State) ( +func (db *BoltStore) ListSessionsByState(_ context.Context, state State) ( []*Session, error) { return db.listSessions(func(s *Session) bool { - for _, state := range states { - if s.State == state { - return true - } - } - - return false + return s.State == state }) } diff --git a/session/store_test.go b/session/store_test.go index a3c6c428..71937ebb 100644 --- a/session/store_test.go +++ b/session/store_test.go @@ -134,17 +134,6 @@ func TestBasicSessionStore(t *testing.T) { assertEqualSessions(t, s2, sessions[0]) assertEqualSessions(t, s3, sessions[1]) - sessions, err = db.ListSessionsByState(ctx, StateCreated, StateRevoked) - require.NoError(t, err) - require.Equal(t, 3, len(sessions)) - assertEqualSessions(t, s1, sessions[0]) - assertEqualSessions(t, s2, sessions[1]) - assertEqualSessions(t, s3, sessions[2]) - - sessions, err = db.ListSessionsByState(ctx) - require.NoError(t, err) - require.Empty(t, sessions) - sessions, err = db.ListSessionsByState(ctx, StateReserved) require.NoError(t, err) require.Empty(t, sessions) diff --git a/session_rpcserver.go b/session_rpcserver.go index 7362d8c7..c185a3a9 100644 --- a/session_rpcserver.go +++ b/session_rpcserver.go @@ -102,13 +102,23 @@ func (s *sessionRpcServer) start(ctx context.Context) error { } // Start up all previously created sessions. - sessions, err := s.cfg.db.ListSessionsByState( - ctx, session.StateCreated, session.StateInUse, + sessions, err := s.cfg.db.ListSessionsByState(ctx, session.StateCreated) + if err != nil { + return fmt.Errorf("error listing sessions: %v", err) + } + + // For backwards compatibility, we will also resume sessions that are in + // the InUse state even though we no longer put sessions into this + // state. + inUseSessions, err := s.cfg.db.ListSessionsByState( + ctx, session.StateInUse, ) if err != nil { return fmt.Errorf("error listing sessions: %v", err) } + sessions = append(sessions, inUseSessions...) + for _, sess := range sessions { key := sess.LocalPublicKey.SerializeCompressed()