Compare commits

...

3 Commits

Author SHA1 Message Date
Maycon Santos
0cf6ece217 limit response to 200 and output Link header 2023-12-14 17:56:09 +01:00
Maycon Santos
86340fb684 2 minutes timeout and info log level 2023-12-14 16:23:25 +01:00
Yury Gargay
52e86cabc3 Increase HTTP timeout for Keycloak and meassure totalUsersCount call 2023-12-14 13:37:06 +01:00

View File

@@ -62,7 +62,7 @@ func NewKeycloakManager(config KeycloakClientConfig, appMetrics telemetry.AppMet
httpTransport.MaxIdleConns = 5
httpClient := &http.Client{
Timeout: 10 * time.Second,
Timeout: 120 * time.Second,
Transport: httpTransport,
}
helper := JsonParser{}
@@ -354,13 +354,13 @@ func (km *KeycloakManager) DeleteUser(userID string) error {
}
func (km *KeycloakManager) fetchAllUserProfiles() ([]keycloakProfile, error) {
totalUsers, err := km.totalUsersCount()
if err != nil {
return nil, err
}
//totalUsers, err := km.totalUsersCount()
//if err != nil {
// return nil, err
//}
q := url.Values{}
q.Add("max", fmt.Sprint(*totalUsers))
q.Add("max", fmt.Sprint(200))
body, err := km.get("users", q)
if err != nil {
@@ -409,12 +409,19 @@ func (km *KeycloakManager) get(resource string, q url.Values) ([]byte, error) {
return nil, fmt.Errorf("unable to get %s, statusCode %d", reqURL, resp.StatusCode)
}
log.Infof("Link header: %v", resp.Header.Get("Link"))
return io.ReadAll(resp.Body)
}
// totalUsersCount returns the total count of all user created.
// Used when fetching all registered accounts with pagination.
func (km *KeycloakManager) totalUsersCount() (*int, error) {
start := time.Now()
defer func() {
log.Infof("Keycloak totalUsersCount took %d ms to handle", time.Since(start).Milliseconds())
}()
body, err := km.get("users/count", nil)
if err != nil {
return nil, err