Skip to content

Commit 1a90e21

Browse files
authored
SNOW-1754426 Fix duplicated requestId and request_guid params (#1224)
1 parent 58c35d4 commit 1a90e21

6 files changed

+48
-18
lines changed

auth.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,8 @@ func postAuth(
223223
bodyCreator bodyCreatorType,
224224
timeout time.Duration) (
225225
data *authResponse, err error) {
226-
params.Add(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
227-
params.Add(requestGUIDKey, NewUUID().String())
226+
params.Set(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
227+
params.Set(requestGUIDKey, NewUUID().String())
228228

229229
fullURL := sr.getFullURL(loginRequestPath, params)
230230
logger.WithContext(ctx).Infof("full URL: %v", fullURL)

authokta.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ func postAuthSAML(
215215
data *authResponse, err error) {
216216

217217
params := &url.Values{}
218-
params.Add(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
218+
params.Set(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
219219
fullURL := sr.getFullURL(authenticatorRequestPath, params)
220220

221221
logger.WithContext(ctx).Infof("fullURL: %v", fullURL)

heartbeat.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ func (hc *heartbeat) stop() {
5454
func (hc *heartbeat) heartbeatMain() error {
5555
logger.Info("Heartbeating!")
5656
params := &url.Values{}
57-
params.Add(requestIDKey, NewUUID().String())
58-
params.Add(requestGUIDKey, NewUUID().String())
57+
params.Set(requestIDKey, NewUUID().String())
58+
params.Set(requestGUIDKey, NewUUID().String())
5959
headers := getHeaders()
6060
token, _, _ := hc.restful.TokenAccessor.GetTokens()
6161
headers[headerAuthorizationKey] = fmt.Sprintf(headerSnowflakeToken, token)

monitoring.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func (sc *snowflakeConn) checkQueryStatus(
132132
*retStatus, error) {
133133
headers := make(map[string]string)
134134
param := make(url.Values)
135-
param.Add(requestGUIDKey, NewUUID().String())
135+
param.Set(requestGUIDKey, NewUUID().String())
136136
if tok, _, _ := sc.rest.TokenAccessor.GetTokens(); tok != "" {
137137
headers[headerAuthorizationKey] = fmt.Sprintf(headerSnowflakeToken, tok)
138138
}
@@ -206,9 +206,9 @@ func (sc *snowflakeConn) getQueryResultResp(
206206
}
207207
paramsMutex.Unlock()
208208
param := make(url.Values)
209-
param.Add(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
210-
param.Add("clientStartTime", strconv.FormatInt(sc.currentTimeProvider.currentTime(), 10))
211-
param.Add(requestGUIDKey, NewUUID().String())
209+
param.Set(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
210+
param.Set("clientStartTime", strconv.FormatInt(sc.currentTimeProvider.currentTime(), 10))
211+
param.Set(requestGUIDKey, NewUUID().String())
212212
token, _, _ := sc.rest.TokenAccessor.GetTokens()
213213
if token != "" {
214214
headers[headerAuthorizationKey] = fmt.Sprintf(headerSnowflakeToken, token)

restful.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@ func postRestfulQueryHelper(
234234
cfg *Config) (
235235
data *execResponse, err error) {
236236
logger.WithContext(ctx).Infof("params: %v", params)
237-
params.Add(requestIDKey, requestID.String())
238-
params.Add(requestGUIDKey, NewUUID().String())
237+
params.Set(requestIDKey, requestID.String())
238+
params.Set(requestGUIDKey, NewUUID().String())
239239
token, _, _ := sr.TokenAccessor.GetTokens()
240240
if token != "" {
241241
headers[headerAuthorizationKey] = fmt.Sprintf(headerSnowflakeToken, token)
@@ -326,9 +326,9 @@ func postRestfulQueryHelper(
326326
func closeSession(ctx context.Context, sr *snowflakeRestful, timeout time.Duration) error {
327327
logger.WithContext(ctx).Info("close session")
328328
params := &url.Values{}
329-
params.Add("delete", "true")
330-
params.Add(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
331-
params.Add(requestGUIDKey, NewUUID().String())
329+
params.Set("delete", "true")
330+
params.Set(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
331+
params.Set(requestGUIDKey, NewUUID().String())
332332
fullURL := sr.getFullURL(sessionRequestPath, params)
333333

334334
headers := getHeaders()
@@ -376,8 +376,8 @@ func closeSession(ctx context.Context, sr *snowflakeRestful, timeout time.Durati
376376
func renewRestfulSession(ctx context.Context, sr *snowflakeRestful, timeout time.Duration) error {
377377
logger.WithContext(ctx).Info("start renew session")
378378
params := &url.Values{}
379-
params.Add(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
380-
params.Add(requestGUIDKey, NewUUID().String())
379+
params.Set(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
380+
params.Set(requestGUIDKey, NewUUID().String())
381381
fullURL := sr.getFullURL(tokenRequestPath, params)
382382

383383
token, masterToken, _ := sr.TokenAccessor.GetTokens()
@@ -449,8 +449,8 @@ func getCancelRetry(ctx context.Context) int {
449449
func cancelQuery(ctx context.Context, sr *snowflakeRestful, requestID UUID, timeout time.Duration) error {
450450
logger.WithContext(ctx).Info("cancel query")
451451
params := &url.Values{}
452-
params.Add(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
453-
params.Add(requestGUIDKey, NewUUID().String())
452+
params.Set(requestIDKey, getOrGenerateRequestIDFromContext(ctx).String())
453+
params.Set(requestGUIDKey, NewUUID().String())
454454

455455
fullURL := sr.getFullURL(abortRequestPath, params)
456456

restful_test.go

+30
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,36 @@ func TestUnitPostQueryHelperError(t *testing.T) {
202202
}
203203
}
204204

205+
func TestUnitPostQueryHelperOnRenewSessionKeepsRequestIdButGeneratesNewRequestGuid(t *testing.T) {
206+
postCount := 0
207+
requestID := NewUUID()
208+
209+
sr := &snowflakeRestful{
210+
FuncPost: func(ctx context.Context, restful *snowflakeRestful, url *url.URL, headers map[string]string, bytes []byte, duration time.Duration, provider currentTimeProvider, config *Config) (*http.Response, error) {
211+
assertEqualF(t, len((url.Query())[requestIDKey]), 1)
212+
assertEqualF(t, len((url.Query())[requestGUIDKey]), 1)
213+
return &http.Response{
214+
StatusCode: 200,
215+
Body: &fakeResponseBody{body: []byte(`{"data":null,"code":"390112","message":"token expired for testing","success":false,"headers":null}`)},
216+
}, nil
217+
},
218+
FuncPostQuery: func(ctx context.Context, restful *snowflakeRestful, values *url.Values, headers map[string]string, bytes []byte, timeout time.Duration, uuid UUID, config *Config) (*execResponse, error) {
219+
assertEqualF(t, requestID.String(), uuid.String())
220+
assertEqualF(t, len((*values)[requestIDKey]), 1)
221+
assertEqualF(t, len((*values)[requestGUIDKey]), 1)
222+
if postCount == 0 {
223+
postCount++
224+
return postRestfulQueryHelper(ctx, restful, values, headers, bytes, timeout, uuid, config)
225+
}
226+
return nil, nil
227+
},
228+
FuncRenewSession: renewSessionTest,
229+
TokenAccessor: getSimpleTokenAccessor(),
230+
}
231+
_, err := postRestfulQueryHelper(context.Background(), sr, &url.Values{}, make(map[string]string), make([]byte, 0), time.Second, requestID, nil)
232+
assertNilE(t, err)
233+
}
234+
205235
func renewSessionTest(_ context.Context, _ *snowflakeRestful, _ time.Duration) error {
206236
return nil
207237
}

0 commit comments

Comments
 (0)