Skip to content

Commit 17e7b68

Browse files
committed
controlplane, storage: an indexable request predicate; each dropped report is traced
Review: COALESCE(resolved_at, created_at) < ? cannot use the index on created_at; resolved_at < ? OR (resolved_at IS NULL AND created_at < ?) can. And a peer whose service report the sweep drops is a decision about that peer, so it leaves a debug line with its ID; the count stays at info.
1 parent b9ae58f commit 17e7b68

2 files changed

Lines changed: 5 additions & 2 deletions

File tree

‎internal/controlplane/node_gc.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ func (s *Server) pruneCatalog(now time.Time) {
181181
for peerID := range snap {
182182
if _, ok := keep[peerID]; !ok {
183183
delete(s.catalog, peerID)
184+
logger.Debugw("Dropped service report of a node no longer admitted", "peer_id", peerID)
184185
dropped++
185186
}
186187
}

‎internal/storage/sql_store.go‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,15 +1124,17 @@ func (s *SQLStore) DeleteSilentBootstrapNodes(ctx context.Context, before, ephem
11241124

11251125
// DeleteStaleEnrollmentRequests implements Store.
11261126
func (s *SQLStore) DeleteStaleEnrollmentRequests(ctx context.Context, before, ephemeralBefore time.Time) (int64, error) {
1127-
res, err := s.db.ExecContext(ctx, s.rebind(`DELETE FROM enrollment_requests WHERE COALESCE(resolved_at, created_at) < ?`), before.UnixMilli())
1127+
// The OR form, rather than COALESCE over the two columns, lets an index
1128+
// on either column serve the predicate.
1129+
res, err := s.db.ExecContext(ctx, s.rebind(`DELETE FROM enrollment_requests WHERE resolved_at < ? OR (resolved_at IS NULL AND created_at < ?)`), before.UnixMilli(), before.UnixMilli())
11281130
if err != nil {
11291131
return 0, err
11301132
}
11311133
regular, err := res.RowsAffected()
11321134
if err != nil {
11331135
return 0, err
11341136
}
1135-
res, err = s.db.ExecContext(ctx, s.rebind(`DELETE FROM enrollment_requests WHERE COALESCE(resolved_at, created_at) < ? AND token_id IN (SELECT id FROM bootstrap_tokens WHERE ephemeral = ?)`), ephemeralBefore.UnixMilli(), true)
1137+
res, err = s.db.ExecContext(ctx, s.rebind(`DELETE FROM enrollment_requests WHERE (resolved_at < ? OR (resolved_at IS NULL AND created_at < ?)) AND token_id IN (SELECT id FROM bootstrap_tokens WHERE ephemeral = ?)`), ephemeralBefore.UnixMilli(), ephemeralBefore.UnixMilli(), true)
11361138
if err != nil {
11371139
return regular, err
11381140
}

0 commit comments

Comments
 (0)