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

  1. Set -Dpinpoint.applicationName=<name> in the JVM startup options
  2. Validate the name meets length/character requirements in the pinpoint config
  3. Check environment variable/JVM opt templating in deployment manifests for typos
  4. 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

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


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)