grafana/k6 · error
failed to create request: %w
Error message
failed to create request: %w
What it means
Building the HTTP request for a secret fetch failed at http.NewRequestWithContext — almost always an invalid URL after substituting the key into urlTemplate, or an invalid HTTP method configured for the source.
Source
Thrown at internal/secretsource/url/url.go:178
func (us *urlSecrets) Get(key string) (string, error) {
ctx := context.Background()
if err := us.limiter.Wait(ctx); err != nil {
return "", fmt.Errorf("rate limiter error: %w", err)
}
var secret string
// MaxRetries is the number of retries, so total attempts = retries + 1
maxAttempts := int(us.config.MaxRetries.Int64) + 1
backoff := time.Duration(us.config.RetryBackoff.Duration)
err := retry(ctx, maxAttempts, backoff, us.logger, func() (error, bool) {
// Replace {key} placeholder in URL template
url := strings.ReplaceAll(us.config.URLTemplate, "{key}", key)
req, err := http.NewRequestWithContext(ctx, us.config.Method.String, url, nil)
if err != nil {
return fmt.Errorf("failed to create request: %w", err), true
}
// Add headers
for k, v := range us.config.Headers {
req.Header.Set(k, v)
}
response, err := us.httpClient.Do(req) //nolint:gosec
if err != nil {
// Network errors are retryable
return fmt.Errorf("failed to get secret: %w", err), true
}
defer func() { _ = response.Body.Close() }()
if response.StatusCode != http.StatusOK {
statusErr := fmt.Errorf("status code %d: %w", response.StatusCode, errFailedToGetSecret)
// Retry on server errors (5xx) and rate limiting (429)View on GitHub (pinned to 01ffac6f24)
Solutions
- Fix urlTemplate so it forms a valid absolute URL for any key
- Verify the configured HTTP method (GET/POST) is valid
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/secretsource/url/url.go:178 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grafana/k6@01ffac6f24 (2026-08-18).
Data as JSON: /api/errors/9ac6a58e5f4a8183.
Report an issue: GitHub.