dapr/dapr · error
error parsing sidecar CPU limit: %w
Error message
error parsing sidecar CPU limit: %w
What it means
Same resource-requirement builder, CPU limit branch: the value of dapr.io/sidecar-cpu-limit (or the injector default) fails resource.ParseQuantity. The grammar is identical to the request case: cores as plain decimals or millicores with the m suffix.
Source
Thrown at pkg/injector/patcher/sidecar_container.go:446
return container, nil
}
func (c *SidecarConfig) getResourceRequirements() (*corev1.ResourceRequirements, error) {
r := corev1.ResourceRequirements{
Limits: corev1.ResourceList{},
Requests: corev1.ResourceList{},
}
if c.SidecarCPURequest != "" {
q, err := resource.ParseQuantity(c.SidecarCPURequest)
if err != nil {
return nil, fmt.Errorf("error parsing sidecar CPU request: %w", err)
}
r.Requests[corev1.ResourceCPU] = q
}
if c.SidecarCPULimit != "" {
q, err := resource.ParseQuantity(c.SidecarCPULimit)
if err != nil {
return nil, fmt.Errorf("error parsing sidecar CPU limit: %w", err)
}
r.Limits[corev1.ResourceCPU] = q
}
if c.SidecarMemoryRequest != "" {
q, err := resource.ParseQuantity(c.SidecarMemoryRequest)
if err != nil {
return nil, fmt.Errorf("error parsing sidecar memory request: %w", err)
}
r.Requests[corev1.ResourceMemory] = q
}
if c.SidecarMemoryLimit != "" {
q, err := resource.ParseQuantity(c.SidecarMemoryLimit)
if err != nil {
return nil, fmt.Errorf("error parsing sidecar memory limit: %w", err)
}
r.Limits[corev1.ResourceMemory] = q
}
View on GitHub (pinned to 74ad417027)
Solutions
- Use "1" or "1000m" style CPU quantities
- Fix the annotation / injector default and let the pod be re-injected
- Add a CI lint that runs ParseQuantity on all resource annotations
Example fix
# before dapr.io/sidecar-cpu-limit: "1000M" # after dapr.io/sidecar-cpu-limit: "1"
Defensive patterns
Strategy: validation
Validate before calling
if v, ok := annotations["dapr.io/sidecar-cpu-limit"]; ok {
if _, err := resource.ParseQuantity(v); err != nil {
return fmt.Errorf("invalid dapr.io/sidecar-cpu-limit %q: %w", v, err)
}
} Type guard
func validCPUQuantity(v string) bool {
q, err := resource.ParseQuantity(v)
return err == nil && !q.IsZero() || err == nil
} Prevention
- CPU limits use the same grammar as requests: "1" or "1000m"
- Do not use memory suffixes (M/G) for CPU
- Ensure limit >= request when both are set
When it happens
Trigger: dapr.io/sidecar-cpu-limit containing "1 CPU", "1000M" (capital M is not a valid CPU suffix), "0.5core", "-1", or other invalid quantity strings.
Common situations: Confusing memory suffixes (M/G) with CPU suffixes (m); writing human-readable units; copy-paste from documentation of other orchestrators.
Related errors
- error parsing sidecar CPU request: %w
- error parsing sidecar memory request: %w
- error parsing sidecar memory limit: %w
- service is not in the correct format '<name>:<port>': port i
- empty body
AI-assisted analysis of dapr/dapr@74ad417027 (2026-08-16).
Data as JSON: /api/errors/bea0d3f73e4b0729.
Report an issue: GitHub.