apache/kafka · error · Exception

\nRelease {version} is not complete since there are unresolv

Error message

\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        

What it means

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.

Source

Thrown at release/notes.py:152

    """
    key = "%15s" % issue.key
    resolution = "%15s" % issue.fields.resolution
    link = issue_link(issue)
    return f"{key} {resolution} {link}"

def generate(version):
    """
    Generates the release notes in HTML format for given version.
    Raises an error if there are unresolved issues or no issues
    at all for the specified version.
    """
    issues = query(f"project=KAFKA and fixVersion={version}")
    if not issues:
        raise Exception(f"Didn't find any issues for version {version}")
    unresolved_issues = filter_unresolved(issues)
    if unresolved_issues:
        issue_list = "\n".join([issue_str(issue) for issue in unresolved_issues])
        raise Exception(f"""
Release {version} is not complete since there are unresolved or improperly
resolved issues tagged {version} as the fix version:

{issue_list}

Note that for some resolutions, you should simply remove the fix version
as they have not been truly fixed in this release.
        """)
    return render(version, issues)


if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python notes.py <version>", file=sys.stderr)
        sys.exit(1)

    version = sys.argv[1]
    try:

View on GitHub (pinned to c31c9215e1)

Solutions

  1. 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
  2. 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
  3. After editing in JIRA, re-run `python release/notes.py <version>` and confirm the unresolved list is empty
  4. 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

Example fix

// before (issue KAFKA-12345 is Won't Fix but still tagged fixVersion=3.7.0)
$ python release/notes.py 3.7.0
Release 3.7.0 is not complete since there are unresolved or improperly
resolved issues tagged 3.7.0 as the fix version:
     KAFKA-12345      Won't Fix https://issues.apache.org/jira/browse/KAFKA-12345

// after (remove the 3.7.0 fixVersion from KAFKA-12345 in JIRA, then re-run)
$ python release/notes.py 3.7.0 > RELEASE_NOTES.html

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of apache/kafka@c31c9215e1 (2026-08-03). Data as JSON: /data/errors/b902238c52ce9f48.json. Report an issue: GitHub.