vitessio/vitess · error
no app indicated
Error message
no app indicated
What it means
This error comes from CheckApp in the throttler package when Check is invoked without a valid app name. The throttler evaluates metrics per application, so an empty appName cannot be matched against configured app rules (throttler's app-configured metric thresholds). Rather than silently treating it as the default app, the throttler returns CheckThrottlerResponseCode_APP_DENIED with this error.
Source
Thrown at go/vt/vttablet/tabletserver/throttle/check.go:101
// NewThrottlerCheck creates a ThrottlerCheck
func NewThrottlerCheck(throttler *Throttler) *ThrottlerCheck {
return &ThrottlerCheck{
throttler: throttler,
}
}
// checkAppMetricResult allows an app to check on a metric
func (check *ThrottlerCheck) checkAppMetricResult(ctx context.Context, appName string, metricResultFunc base.MetricResultFunc, flags *CheckFlags) (checkResult *CheckResult) {
// Handle deprioritized app logic
denyApp := false
//
metricResult, threshold, matchedApp := check.throttler.AppRequestMetricResult(ctx, appName, metricResultFunc, denyApp)
if flags.OverrideThreshold > 0 {
threshold = flags.OverrideThreshold
}
value, err := metricResult.Get()
if appName == "" {
return NewCheckResult(tabletmanagerdatapb.CheckThrottlerResponseCode_APP_DENIED, value, threshold, "", errors.New("no app indicated"))
}
var responseCode tabletmanagerdatapb.CheckThrottlerResponseCode
switch {
case err == base.ErrAppDenied:
// app specifically not allowed to get metrics
responseCode = tabletmanagerdatapb.CheckThrottlerResponseCode_APP_DENIED
case err == base.ErrNoSuchMetric:
// not collected yet, or metric does not exist
responseCode = tabletmanagerdatapb.CheckThrottlerResponseCode_UNKNOWN_METRIC
case err != nil:
// any error
responseCode = tabletmanagerdatapb.CheckThrottlerResponseCode_INTERNAL_ERROR
case value > threshold:
// casual throttling
responseCode = tabletmanagerdatapb.CheckThrottlerResponseCode_THRESHOLD_EXCEEDED
err = base.ErrThresholdExceeded
default:View on GitHub (pinned to 01a25a7d17)
Solutions
- Set the app name in the throttler check request (CheckRequest.app_name) before calling Check.
- If writing Go code, ensure the app name is a non-empty string passed to Check; default to a known app like "vreplication" or "onlineddl" only when intentional.
- Check the client/tool version: upgrade callers that predate mandatory app names in throttler requests.
Example fix
// before
resp := throttlerApp.Check(ctx, tabletmanagerdatapb.ThrottlerAction_CheckTablet, nil) // app name empty
// after
resp := throttlerApp.Check(ctx, tabletmanagerdatapb.ThrottlerAction_CheckTablet, &throttle.BaseFlags{AppName: "my-app"}) Defensive patterns
Strategy: validation
Validate before calling
if appName == "" { return fmt.Errorf("app name must be set before calling throttler Check") } Type guard
func hasAppName(app string) bool { return strings.TrimSpace(app) != "" } Prevention
- Always populate CheckRequest.AppName / BaseFlags.AppName for throttler calls.
- Centralize throttler client calls in a helper that validates the app name first.
- Add a unit test asserting non-empty app names on all throttler call sites.
When it happens
Trigger: Calling Check (via checkAppMetricResult/Check) with flags or request context whose appName resolves to "" — e.g. a throttler check RPC that omits the app name, or a caller constructing CheckRequest without setting AppName.
Common situations: Custom scripts hitting the throttler HTTP/gRPC endpoint directly without the app parameter; older clients calling throttler APIs before app-name fields were mandatory; copy-pasted throttler check code dropping the app name.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- unknown metric name: %s
- invalid metric name: %s
- duplicate metric name: %s
- BeforeSchema differs
- AfterSchema differs
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/5293bb5e078905cb.
Report an issue: GitHub.