Skip to content

Commit 852a2c1

Browse files
faisal-memonsorindumitru
authored andcommitted
Allow reads for cache events to go to RO DB
Signed-off-by: Faisal Memon <[email protected]>
1 parent 11d5780 commit 852a2c1

File tree

5 files changed

+24
-40
lines changed

5 files changed

+24
-40
lines changed

pkg/server/datastore/datastore.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ type ListAttestedNodesResponse struct {
170170
}
171171

172172
type ListAttestedNodeEventsRequest struct {
173+
DataConsistency DataConsistency
173174
GreaterThanEventID uint
174175
LessThanEventID uint
175176
}
@@ -224,6 +225,7 @@ type ListRegistrationEntriesResponse struct {
224225
}
225226

226227
type ListRegistrationEntryEventsRequest struct {
228+
DataConsistency DataConsistency
227229
GreaterThanEventID uint
228230
LessThanEventID uint
229231
}

pkg/server/datastore/sqlstore/sqlstore.go

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -375,13 +375,10 @@ func (ds *Plugin) DeleteAttestedNode(ctx context.Context, spiffeID string) (atte
375375

376376
// ListAttestedNodeEvents lists all attested node events
377377
func (ds *Plugin) ListAttestedNodeEvents(ctx context.Context, req *datastore.ListAttestedNodeEventsRequest) (resp *datastore.ListAttestedNodeEventsResponse, err error) {
378-
if err = ds.withReadTx(ctx, func(tx *gorm.DB) (err error) {
379-
resp, err = listAttestedNodeEvents(tx, req)
380-
return err
381-
}); err != nil {
382-
return nil, err
378+
if req.DataConsistency == datastore.TolerateStale && ds.roDb != nil {
379+
return listAttestedNodeEvents(ds.roDb, req)
383380
}
384-
return resp, nil
381+
return listAttestedNodeEvents(ds.db, req)
385382
}
386383

387384
// PruneAttestedNodeEvents deletes all attested node events older than a specified duration (i.e. more than 24 hours old)
@@ -572,13 +569,10 @@ func (ds *Plugin) PruneRegistrationEntries(ctx context.Context, expiresBefore ti
572569

573570
// ListRegistrationEntryEvents lists all registration entry events
574571
func (ds *Plugin) ListRegistrationEntryEvents(ctx context.Context, req *datastore.ListRegistrationEntryEventsRequest) (resp *datastore.ListRegistrationEntryEventsResponse, err error) {
575-
if err = ds.withReadTx(ctx, func(tx *gorm.DB) (err error) {
576-
resp, err = listRegistrationEntryEvents(tx, req)
577-
return err
578-
}); err != nil {
579-
return nil, err
572+
if req.DataConsistency == datastore.TolerateStale && ds.roDb != nil {
573+
return listRegistrationEntryEvents(ds.roDb, req)
580574
}
581-
return resp, nil
575+
return listRegistrationEntryEvents(ds.db, req)
582576
}
583577

584578
// PruneRegistrationEntryEvents deletes all registration entry events older than a specified duration (i.e. more than 24 hours old)
@@ -1707,7 +1701,7 @@ func createAttestedNodeEvent(tx *gorm.DB, event *datastore.AttestedNodeEvent) er
17071701
return nil
17081702
}
17091703

1710-
func listAttestedNodeEvents(tx *gorm.DB, req *datastore.ListAttestedNodeEventsRequest) (*datastore.ListAttestedNodeEventsResponse, error) {
1704+
func listAttestedNodeEvents(db *sqlDB, req *datastore.ListAttestedNodeEventsRequest) (*datastore.ListAttestedNodeEventsResponse, error) {
17111705
var events []AttestedNodeEvent
17121706

17131707
if req.GreaterThanEventID != 0 || req.LessThanEventID != 0 {
@@ -1716,11 +1710,11 @@ func listAttestedNodeEvents(tx *gorm.DB, req *datastore.ListAttestedNodeEventsRe
17161710
return nil, newWrappedSQLError(err)
17171711
}
17181712

1719-
if err := tx.Find(&events, query.String(), id).Order("id asc").Error; err != nil {
1713+
if err := db.Find(&events, query.String(), id).Order("id asc").Error; err != nil {
17201714
return nil, newWrappedSQLError(err)
17211715
}
17221716
} else {
1723-
if err := tx.Find(&events).Order("id asc").Error; err != nil {
1717+
if err := db.Find(&events).Order("id asc").Error; err != nil {
17241718
return nil, newWrappedSQLError(err)
17251719
}
17261720
}
@@ -4098,7 +4092,7 @@ func deleteRegistrationEntryEvent(tx *gorm.DB, eventID uint) error {
40984092
return nil
40994093
}
41004094

4101-
func listRegistrationEntryEvents(tx *gorm.DB, req *datastore.ListRegistrationEntryEventsRequest) (*datastore.ListRegistrationEntryEventsResponse, error) {
4095+
func listRegistrationEntryEvents(db *sqlDB, req *datastore.ListRegistrationEntryEventsRequest) (*datastore.ListRegistrationEntryEventsResponse, error) {
41024096
var events []RegisteredEntryEvent
41034097

41044098
if req.GreaterThanEventID != 0 || req.LessThanEventID != 0 {
@@ -4107,11 +4101,11 @@ func listRegistrationEntryEvents(tx *gorm.DB, req *datastore.ListRegistrationEnt
41074101
return nil, newWrappedSQLError(err)
41084102
}
41094103

4110-
if err := tx.Find(&events, query.String(), id).Order("id asc").Error; err != nil {
4104+
if err := db.Find(&events, query.String(), id).Order("id asc").Error; err != nil {
41114105
return nil, newWrappedSQLError(err)
41124106
}
41134107
} else {
4114-
if err := tx.Find(&events).Order("id asc").Error; err != nil {
4108+
if err := db.Find(&events).Order("id asc").Error; err != nil {
41154109
return nil, newWrappedSQLError(err)
41164110
}
41174111
}

pkg/server/datastore/sqlstore/sqlstore_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,7 +1594,7 @@ func (s *PluginSuite) TestListAttestedNodeEvents() {
15941594
name: "Setting both greater and less than",
15951595
greaterThanEventID: 1,
15961596
lessThanEventID: 1,
1597-
expectedErr: "rpc error: code = Unknown desc = datastore-sql: can't set both greater and less than event id",
1597+
expectedErr: "datastore-sql: can't set both greater and less than event id",
15981598
},
15991599
}
16001600
for _, test := range tests {
@@ -4133,7 +4133,7 @@ func (s *PluginSuite) TestListRegistrationEntryEvents() {
41334133
name: "Setting both greater and less than",
41344134
greaterThanEventID: 1,
41354135
lessThanEventID: 1,
4136-
expectedErr: "rpc error: code = Unknown desc = datastore-sql: can't set both greater and less than event id",
4136+
expectedErr: "datastore-sql: can't set both greater and less than event id",
41374137
},
41384138
}
41394139
for _, test := range tests {

pkg/server/endpoints/authorized_entryfetcher_attested_nodes.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,16 +102,10 @@ func (a *attestedNodes) selectPolledEvents(ctx context.Context) {
102102
}
103103

104104
func (a *attestedNodes) scanForNewEvents(ctx context.Context) error {
105-
// If we haven't seen an event, scan for all events; otherwise, scan from the last event.
106-
var resp *datastore.ListAttestedNodeEventsResponse
107-
var err error
108-
if a.firstEventTime.IsZero() {
109-
resp, err = a.ds.ListAttestedNodeEvents(ctx, &datastore.ListAttestedNodeEventsRequest{})
110-
} else {
111-
resp, err = a.ds.ListAttestedNodeEvents(ctx, &datastore.ListAttestedNodeEventsRequest{
112-
GreaterThanEventID: a.lastEvent,
113-
})
114-
}
105+
resp, err := a.ds.ListAttestedNodeEvents(ctx, &datastore.ListAttestedNodeEventsRequest{
106+
DataConsistency: datastore.TolerateStale,
107+
GreaterThanEventID: a.lastEvent,
108+
})
115109
if err != nil {
116110
return err
117111
}

pkg/server/endpoints/authorized_entryfetcher_registration_entries.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,10 @@ func (a *registrationEntries) selectPolledEvents(ctx context.Context) {
101101
}
102102

103103
func (a *registrationEntries) scanForNewEvents(ctx context.Context) error {
104-
// If we haven't seen an event, scan for all events; otherwise, scan from the last event.
105-
var resp *datastore.ListRegistrationEntryEventsResponse
106-
var err error
107-
if a.firstEventTime.IsZero() {
108-
resp, err = a.ds.ListRegistrationEntryEvents(ctx, &datastore.ListRegistrationEntryEventsRequest{})
109-
} else {
110-
resp, err = a.ds.ListRegistrationEntryEvents(ctx, &datastore.ListRegistrationEntryEventsRequest{
111-
GreaterThanEventID: a.lastEvent,
112-
})
113-
}
104+
resp, err := a.ds.ListRegistrationEntryEvents(ctx, &datastore.ListRegistrationEntryEventsRequest{
105+
DataConsistency: datastore.TolerateStale,
106+
GreaterThanEventID: a.lastEvent,
107+
})
114108
if err != nil {
115109
return err
116110
}

0 commit comments

Comments
 (0)