{"record":{"id":"4328892903ff00e2","repo":"pinpoint-apm/pinpoint","slug":"applicationname-not-provided-432889","errorCode":null,"errorMessage":"ApplicationName not provided","messagePattern":"ApplicationName not provided","errorType":"validation","errorClass":"ObjectNameValidationFailedException","httpStatus":null,"severity":"error","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/name/v4/ObjectNameResolverV4.java","lineNumber":70,"sourceCode":"\n    @Override\n    public ObjectName resolve() {\n        TimeBasedEpochGenerator timeBasedEpochGenerator = Generators.timeBasedEpochGenerator();\n        final UUID agentId = timeBasedEpochGenerator.generate();\n\n        ObjectNameFilter filter = new ObjectNameFilter(agentPropertyList);\n\n        final ObjectNameProperty agentName = filter.resolve(AgentProperties::getAgentName, idValidator::validateAgentName);\n        if (!agentName.hasLengthValue()) {\n            logger.info(\"No AgentName(-Dpinpoint.agentName) provided, it's optional!\");\n        } else {\n            resolveLog(agentName);\n        }\n\n        final ObjectNameProperty applicationName = filter.resolve(AgentProperties::getApplicationName, idValidator::validateApplicationName);\n        if (!applicationName.hasLengthValue()) {\n            logger.warn(\"Failed to resolve ApplicationName(-Dpinpoint.applicationName)\");\n            throw new ObjectNameValidationFailedException(AgentIdType.ApplicationName, \"ApplicationName not provided\");\n        }  else {\n            resolveLog(applicationName);\n        }\n\n        final ObjectNameProperty serviceName = filter.resolve(AgentProperties::getServiceName, idValidator::validateServiceName);\n        if (!serviceName.hasLengthValue()) {\n            logger.warn(\"Failed to resolve ServiceName(-Dpinpoint.serviceName)\");\n            throw new ObjectNameValidationFailedException(AgentIdType.ServiceName, \"ServiceName not provided\");\n        } else {\n            resolveLog(serviceName);\n        }\n\n        final ObjectNameProperty apiKey = getApiKey(filter);\n        if (!apiKey.hasLengthValue()) {\n            logger.info(\"Failed to resolve ApiKey(-Dpinpoint.apikey)(Optional)\");\n//            throw new ObjectNameValidationFailedException(AgentIdType.APIKEY, \"ApiKey not provided\");\n        } else {\n            resolveLog(apiKey);","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/name/v4/ObjectNameResolverV4.java#L52-L88","documentation":"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.","triggerScenarios":"Agent start (v4 naming mode) without -Dpinpoint.applicationName, or a value that fails AgentIdValidator.validateApplicationName (empty/too long/invalid chars).","commonSituations":"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.","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"],"exampleFix":"// before\nenv: { JAVA_OPTS: \"-Dpinpoint.agentId=agent1\" }\n// after\nenv: { JAVA_OPTS: \"-Dpinpoint.agentId=agent1 -Dpinpoint.applicationName=myApp\" }","handlingStrategy":"validation","validationCode":"String appName = System.getProperty(\"pinpoint.applicationName\");\nif (appName == null || appName.trim().isEmpty() || appName.length() > 24) {\n    throw new IllegalArgumentException(\"-Dpinpoint.applicationName is required in v4 naming mode\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    resolverV4.resolve();\n} catch (ObjectNameValidationFailedException e) {\n    logger.error(\"Missing required identity property: {}\", e.getPropertyType());\n}","preventionTips":["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"],"tags":["agent-config","naming","missing-property"],"backgroundTag":"missing-required-config-field","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}