{"record":{"id":"9c065e41ba176386","repo":"badges/shields","slug":"property-release-not-found","errorCode":null,"errorMessage":"property 'release' not found","messagePattern":"property 'release' not found","errorType":"exception","errorClass":"InvalidResponse","httpStatus":null,"severity":"error","filePath":"services/maven-metadata/maven-metadata.service.js","lineNumber":100,"sourceCode":"\n  static applyFilter({ versions, filter }) {\n    if (!filter) {\n      return versions\n    }\n    return matcher(versions, filter)\n  }\n\n  static getLatestVersion({ data, strategy, filter }) {\n    if (strategy === 'latestProperty') {\n      if (data.metadata.versioning.latest === undefined) {\n        throw new InvalidResponse({\n          prettyMessage: \"property 'latest' not found\",\n        })\n      }\n      return data.metadata.versioning.latest\n    } else if (strategy === 'releaseProperty') {\n      if (data.metadata.versioning.release === undefined) {\n        throw new InvalidResponse({\n          prettyMessage: \"property 'release' not found\",\n        })\n      }\n      return data.metadata.versioning.release\n    } else if (strategy === 'highestVersion') {\n      if (\n        data.metadata.versioning.versions?.version === undefined ||\n        data.metadata.versioning.versions?.version?.length === 0\n      ) {\n        throw new InvalidResponse({\n          prettyMessage: 'no versions found',\n        })\n      }\n      const versions = this.applyFilter({\n        versions: data.metadata.versioning.versions.version,\n        filter,\n      })\n      if (versions.length === 0) {","sourceCodeStart":82,"sourceCodeEnd":118,"githubUrl":"https://github.com/badges/shields/blob/766fd8bc89a90b8534dc573ab72dec30215ab1ec/services/maven-metadata/maven-metadata.service.js#L82-L118","documentation":"Thrown when strategy 'releaseProperty' is requested but the maven-metadata.xml lacks a <release> element under <versioning>, leaving data.metadata.versioning.release undefined. The library flags the upstream response as invalid because the requested field is mandatory for this strategy.","triggerScenarios":"Calling getLatestVersion/handle with strategy='releaseProperty' against metadata that contains only a <versions> list or only <latest>, e.g. repos hosting only snapshots or metadata generated without <release>.","commonSituations":"Artifacts published by tools that omit <release> (only versions list), repositories with exclusively SNAPSHOT builds, or stale/partial metadata on mirror servers.","solutions":["Use strategy 'highestVersion' instead — it computes the latest from the versions list and works without <release>.","Check the maven-metadata.xml content to confirm whether <release> exists before choosing the strategy.","Republish the artifact or correct the repository manager config so metadata includes <release>.","Catch the error and retry with a fallback strategy."],"exampleFix":"// before\nconst v = await service.getLatestVersion({ data, strategy: 'releaseProperty', filter })\n// after\nconst v = data.metadata.versioning.release !== undefined\n  ? await service.getLatestVersion({ data, strategy: 'releaseProperty', filter })\n  : await service.getLatestVersion({ data, strategy: 'highestVersion', filter })","handlingStrategy":"validation","validationCode":"if (data?.metadata?.versioning?.release === undefined) {\n  return service.getLatestVersion({ data, strategy: 'highestVersion' })\n}","typeGuard":"function hasRelease(data) {\n  return data?.metadata?.versioning?.release !== undefined\n}","tryCatchPattern":"try {\n  return await service.getLatestVersion({ data, strategy: 'releaseProperty' })\n} catch (err) {\n  if (err && err.prettyMessage === \"property 'release' not found\") {\n    return service.getLatestVersion({ data, strategy: 'highestVersion' })\n  }\n  throw err\n}","preventionTips":["Verify the metadata XML contains <release> before selecting 'releaseProperty'.","Default to 'highestVersion' for snapshot-only or tools-generated repositories.","Optional-chain check data.metadata.versioning.release before the call.","Implement strategy fallback instead of hardcoding releaseProperty."],"tags":["invalid-response","maven","metadata","missing-field"],"backgroundTag":"missing-metadata-field","analyzedSha":"766fd8bc89a90b8534dc573ab72dec30215ab1ec","analyzedAt":"2026-08-30T01:40:27.499Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}