{"record":{"id":"fc3ddeba8c90833e","repo":"pinpoint-apm/pinpoint","slug":"maxtryperattempt-must-be-greater-than-0","errorCode":null,"errorMessage":"maxTryPerAttempt must be greater than 0","messagePattern":"maxTryPerAttempt must be greater than 0","errorType":"validation","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/AgentInfoSender.java","lineNumber":253,"sourceCode":"            this.sendIntervalMs = sendIntervalMs;\n            return this;\n        }\n\n        public Builder maxTryPerAttempt(int maxTryCountPerAttempt) {\n            this.maxTryPerAttempt = maxTryCountPerAttempt;\n            return this;\n        }\n\n\n        public AgentInfoSender build() {\n            if (this.refreshIntervalMs <= 0) {\n                throw new IllegalStateException(\"agentInfoRefreshIntervalMs must be greater than 0\");\n            }\n            if (this.sendIntervalMs <= 0) {\n                throw new IllegalStateException(\"agentInfoSendIntervalMs must be greater than 0\");\n            }\n            if (this.maxTryPerAttempt <= 0) {\n                throw new IllegalStateException(\"maxTryPerAttempt must be greater than 0\");\n            }\n            return new AgentInfoSender(this);\n        }\n    }\n}","sourceCodeStart":235,"sourceCodeEnd":258,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/AgentInfoSender.java#L235-L258","documentation":"Builder validation in AgentInfoSender.Builder.build: maxTryPerAttempt was configured as <= 0 (unset default 0 or explicitly non-positive), so the sender cannot bound its retry attempts and construction is rejected.","triggerScenarios":"Building AgentInfoSender with setMaxTryPerAttempt(0 or negative); typically from profiler.jvmInfo.maxTryPerAttempt (or similar) being zero/negative in config.","commonSituations":"Bad value in pinpoint.config for max retry count; copy-paste of 0 as 'disable retries' which is not supported; test harness builder misuse.","solutions":["Call Builder.maxTryPerAttempt with a positive retry count before build()","Check the agent info sender retry configuration for zero/negative values"],"exampleFix":"// before\nbuilder.setMaxTryPerAttempt(0).build(); // throws\n// after\nbuilder.setMaxTryPerAttempt(3).build();","handlingStrategy":"validation","validationCode":"if (maxTryPerAttempt <= 0) {\n    throw new IllegalArgumentException(\"maxTryPerAttempt must be > 0\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    sender = builder.setMaxTryPerAttempt(cfg).build();\n} catch (IllegalStateException e) {\n    logger.warn(\"bad maxTryPerAttempt, using 3\", e);\n    sender = builder.setMaxTryPerAttempt(3).build();\n}","preventionTips":["Remember 0 does not mean 'disable retries' — use 1","Validate retry counts in config loading","Add builder-level defaults for missing config"],"tags":["config","validation","retry","agent-info"],"backgroundTag":"invalid-config-value","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}