pinpoint-apm/pinpoint · error · ObjectNameValidationFailedException
ApplicationName not provided
Error message
ApplicationName not provided
What it means
ObjectNameResolverV4.resolve() resolves agent identity properties (applicationName, serviceName, apiKey). Application name is required: if -Dpinpoint.applicationName is missing or fails length validation, the resolver throws ObjectNameValidationFailedException, aborting agent startup since the collector requires a valid application name.
Solutions
- Set -Dpinpoint.applicationName=<name> in the JVM startup options
- Validate the name meets length/character requirements in the pinpoint config
- Check environment variable/JVM opt templating in deployment manifests for typos
- Confirm the intended ObjectNameResolver version and its required properties
Example fix
// before
env: { JAVA_OPTS: "-Dpinpoint.agentId=agent1" }
// after
env: { JAVA_OPTS: "-Dpinpoint.agentId=agent1 -Dpinpoint.applicationName=myApp" } Defensive patterns
Strategy: validation
Validate before calling
String appName = System.getProperty("pinpoint.applicationName");
if (appName == null || appName.trim().isEmpty() || appName.length() > 24) {
throw new IllegalArgumentException("-Dpinpoint.applicationName is required in v4 naming mode");
} Try / catch
try {
resolverV4.resolve();
} catch (ObjectNameValidationFailedException e) {
logger.error("Missing required identity property: {}", e.getPropertyType());
} Prevention
- Include -Dpinpoint.applicationName in k8s/docker JAVA_OPTS templates
- Trim whitespace from values injected via env vars
- Verify required properties when migrating to a newer naming resolver version
- Fail fast in CI by booting the agent with the production flags
When it happens
Trigger: Agent start (v4 naming mode) without -Dpinpoint.applicationName, or a value that fails AgentIdValidator.validateApplicationName (empty/too long/invalid chars).
Common situations: Forgetting the flag in container/k8s JVM opts; applicationName exceeding configured length limit; name copied with trailing whitespace; upgrading to v4 naming without adding the new required property.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- ApplicationName not provided
- ServiceName not provided
- Could not resolve placeholder
- customMetricName must consist of
- Failed to create MetricId. metricName
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/4328892903ff00e2.
Report an issue: GitHub.
Appendix: source
Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/name/v4/ObjectNameResolverV4.java:70
@Override
public ObjectName resolve() {
TimeBasedEpochGenerator timeBasedEpochGenerator = Generators.timeBasedEpochGenerator();
final UUID agentId = timeBasedEpochGenerator.generate();
ObjectNameFilter filter = new ObjectNameFilter(agentPropertyList);
final ObjectNameProperty agentName = filter.resolve(AgentProperties::getAgentName, idValidator::validateAgentName);
if (!agentName.hasLengthValue()) {
logger.info("No AgentName(-Dpinpoint.agentName) provided, it's optional!");
} else {
resolveLog(agentName);
}
final ObjectNameProperty applicationName = filter.resolve(AgentProperties::getApplicationName, idValidator::validateApplicationName);
if (!applicationName.hasLengthValue()) {
logger.warn("Failed to resolve ApplicationName(-Dpinpoint.applicationName)");
throw new ObjectNameValidationFailedException(AgentIdType.ApplicationName, "ApplicationName not provided");
} else {
resolveLog(applicationName);
}
final ObjectNameProperty serviceName = filter.resolve(AgentProperties::getServiceName, idValidator::validateServiceName);
if (!serviceName.hasLengthValue()) {
logger.warn("Failed to resolve ServiceName(-Dpinpoint.serviceName)");
throw new ObjectNameValidationFailedException(AgentIdType.ServiceName, "ServiceName not provided");
} else {
resolveLog(serviceName);
}
final ObjectNameProperty apiKey = getApiKey(filter);
if (!apiKey.hasLengthValue()) {
logger.info("Failed to resolve ApiKey(-Dpinpoint.apikey)(Optional)");
// throw new ObjectNameValidationFailedException(AgentIdType.APIKEY, "ApiKey not provided");
} else {
resolveLog(apiKey);View on GitHub (pinned to 744c3d3075)