{"id":"b902238c52ce9f48","repo":"apache/kafka","slug":"nrelease-version-is-not-complete-since-there-ar","errorCode":null,"errorMessage":"\\nRelease {version} is not complete since there are unresolved or improperly\\nresolved issues tagged {version} as the fix version:\\n\\n{issue_list}\\n\\nNote that for some resolutions, you should simply remove the fix version\\nas they have not been truly fixed in this release.\\n        ","messagePattern":"\\\\nRelease (.+?) is not complete since there are unresolved or improperly\\\\nresolved issues tagged (.+?) as the fix version:\\\\n\\\\n(.+?)\\\\n\\\\nNote that for some resolutions, you should simply remove the fix version\\\\nas they have not been truly fixed in this release\\.\\\\n        ","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"release/notes.py","lineNumber":152,"sourceCode":"    \"\"\"\n    key = \"%15s\" % issue.key\n    resolution = \"%15s\" % issue.fields.resolution\n    link = issue_link(issue)\n    return f\"{key} {resolution} {link}\"\n\ndef generate(version):\n    \"\"\"\n    Generates the release notes in HTML format for given version.\n    Raises an error if there are unresolved issues or no issues\n    at all for the specified version.\n    \"\"\"\n    issues = query(f\"project=KAFKA and fixVersion={version}\")\n    if not issues:\n        raise Exception(f\"Didn't find any issues for version {version}\")\n    unresolved_issues = filter_unresolved(issues)\n    if unresolved_issues:\n        issue_list = \"\\n\".join([issue_str(issue) for issue in unresolved_issues])\n        raise Exception(f\"\"\"\nRelease {version} is not complete since there are unresolved or improperly\nresolved issues tagged {version} as the fix version:\n\n{issue_list}\n\nNote that for some resolutions, you should simply remove the fix version\nas they have not been truly fixed in this release.\n        \"\"\")\n    return render(version, issues)\n\n\nif __name__ == \"__main__\":\n    if len(sys.argv) != 2:\n        print(\"Usage: python notes.py <version>\", file=sys.stderr)\n        sys.exit(1)\n\n    version = sys.argv[1]\n    try:","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/apache/kafka/blob/c31c9215e131f8c17e79f8901b48c13ee6aa8e7a/release/notes.py#L134-L170","documentation":"Raised by generate() in release/notes.py after filter_unresolved() returns a non-empty list, i.e. some issues tagged with the fixVersion have a resolution considered 'not actually fixed' (None, Unresolved, Duplicate, Invalid, Not A Problem, Not A Bug, Won't Fix, Incomplete, Cannot Reproduce, Later, Works for Me, Workaround, Information Provided). The release process refuses to ship notes for a version that still contains such issues, because they would misleadingly appear as resolved. The message lists the offending issues and advises removing the fixVersion from them.","triggerScenarios":"Running `python release/notes.py <version>` when at least one KAFKA JIRA issue still has {version} as its fixVersion while its resolution is in the UNRESOLVED_RESOLUTIONS list. Commonly hit when an issue was marked Won't Fix / Duplicate / Invalid but the fixVersion was not cleared, or when an issue is genuinely still open (resolution = None) yet carries the target fixVersion.","commonSituations":"Finalizing a Kafka release while triage is still in progress; an issue was closed as Duplicate or Won't Fix during the cycle but nobody removed the upcoming fixVersion from it; bulk-editing fixVersions added the new version to issues that were later rejected; a release manager cut the version string while issues are still being resolved; stale fixVersions left over from a previous aborted release attempt.","solutions":["Open each listed issue in JIRA and remove the {version} fixVersion from issues whose resolution is Duplicate, Invalid, Won't Fix, Not A Bug, Incomplete, Cannot Reproduce, Later, Works for Me, Workaround, or Information Provided, since they were not actually fixed in this release","For issues with resolution = None (truly open) that should ship in this release, resolve them with an appropriate resolution (e.g. Fixed) before re-running; otherwise move them to a later fixVersion","After editing in JIRA, re-run `python release/notes.py <version>` and confirm the unresolved list is empty","If you believe a resolution should count as 'fixed', review the UNRESOLVED_RESOLUTIONS list in filter_unresolved() in release/notes.py:54 and adjust the issue's resolution in JIRA to one outside that list"],"exampleFix":"// before (issue KAFKA-12345 is Won't Fix but still tagged fixVersion=3.7.0)\n$ python release/notes.py 3.7.0\nRelease 3.7.0 is not complete since there are unresolved or improperly\nresolved issues tagged 3.7.0 as the fix version:\n     KAFKA-12345      Won't Fix https://issues.apache.org/jira/browse/KAFKA-12345\n\n// after (remove the 3.7.0 fixVersion from KAFKA-12345 in JIRA, then re-run)\n$ python release/notes.py 3.7.0 > RELEASE_NOTES.html","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":["release","jira","release-notes","kafka","release-management","triage"],"analyzedSha":"c31c9215e131f8c17e79f8901b48c13ee6aa8e7a","analyzedAt":"2026-08-03T12:34:05.770Z","schemaVersion":2}