Skip to content

Commit a4e1a03

Browse files
authored
fix: Cache sync event details to track Cmd+C. (#18409)
In order to fix the issue described here: cloudquery/cloudquery-issues#1911 (comment) I'm caching the event details in a global variable except on `LoginSuccess` as suggested by @erezrokah. Testing: Successful sync ![Screenshot 2024-06-26 at 16 08 18](https://github.com/cloudquery/cloudquery/assets/1078546/e7c76d7a-38ea-4fc9-8e62-ce91edebbbc8) Cmd+C during sync ![Screenshot 2024-06-26 at 16 08 55](https://github.com/cloudquery/cloudquery/assets/1078546/1cc57dbc-071d-4cbc-ad93-99989c5fdb75)
1 parent 0c76682 commit a4e1a03

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

cli/internal/analytics/client.go

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ import (
1515
)
1616

1717
var (
18-
client rudderstack.Client
18+
client rudderstack.Client
19+
cachedSyncEventDetails *eventDetails
1920
)
2021

2122
type eventDetails struct {
@@ -51,7 +52,15 @@ func getEnvironment() string {
5152
return "cli"
5253
}
5354

54-
func getEventDetails(ctx context.Context) *eventDetails {
55+
// getSyncEventDetails returns the cached event details if available, otherwise it fetches the details from the API
56+
func getSyncEventDetails(ctx context.Context) *eventDetails {
57+
if cachedSyncEventDetails == nil {
58+
refreshSyncEventDetails(ctx)
59+
}
60+
return cachedSyncEventDetails
61+
}
62+
63+
func refreshSyncEventDetails(ctx context.Context) *eventDetails {
5564
tc := cqauth.NewTokenClient()
5665
token, err := tc.GetToken()
5766
if err != nil {
@@ -63,19 +72,24 @@ func getEventDetails(ctx context.Context) *eventDetails {
6372
}
6473
currentTeam, _ := internalAuth.GetTeamForToken(ctx, token)
6574

66-
return &eventDetails{
75+
eventDetails := &eventDetails{
6776
user: *user,
6877
currentTeam: currentTeam,
6978
environment: getEnvironment(),
7079
}
80+
81+
// Cache event details for future use
82+
cachedSyncEventDetails = eventDetails
83+
84+
return eventDetails
7185
}
7286

7387
func TrackLoginSuccess(ctx context.Context, invocationUUID uuid.UUID) {
7488
if client == nil {
7589
return
7690
}
7791

78-
details := getEventDetails(ctx)
92+
details := refreshSyncEventDetails(ctx)
7993
if details == nil {
8094
return
8195
}
@@ -124,7 +138,7 @@ func TrackSyncStarted(ctx context.Context, invocationUUID uuid.UUID, event SyncS
124138
return
125139
}
126140

127-
details := getEventDetails(ctx)
141+
details := getSyncEventDetails(ctx)
128142
if details == nil {
129143
return
130144
}
@@ -150,7 +164,7 @@ func TrackSyncCompleted(ctx context.Context, invocationUUID uuid.UUID, event Syn
150164
return
151165
}
152166

153-
details := getEventDetails(ctx)
167+
details := getSyncEventDetails(ctx)
154168
if details == nil {
155169
return
156170
}

0 commit comments

Comments
 (0)