This issue occurs because the underlying package manager (pakManager) fails to properly register the completion of the cleanup phase. Even though the upgrade may have applied successfully, the .results JSON file for the upgrade package retains null or empty values for the cleanup status. Because these values do not show as completed, the VCF Fleet lifecycle management system cannot mark the upgrade task as finished, causing it to hang in the UI.
This can be verified by reviewing the casa.log and the corresponding .results file.
# /storage/log/vcops/log/casa/casa.log
INFO casa 744161 [ops@4413 threadId="30324" threadName="ajp-nio-127.0.0.1-8011-exec-29" requestId="3D0007qE"] [com.vmware.vcops.casa.support.subprocess.GeneralCommand.execute:254] - Command '/usr/bin/sudo -n /usr/lib/vmware-python-3/bin/python /usr/lib/vmware-vcopssuite/utilities/pakManager/bin/vcopsPakManager.py --action query_pak_status --pak vRealizeOperationsManagerEnterprise-910040025541550 --json --force_content_update false' completed successfully with exit code '0'.
Notice that cleanup_exit_code and cleanup_result are empty "no results"
#/storage/db/pakRepoLocal/vRealizeOperationsManagerEnterprise-910040025541550/vRealizeOperationsManagerEnterprise-910040025541550.results
...
"certs_renew_exit_code": "0",
"certs_renew_result": "Completed successfully",
"cleanup_exit_code": "",
"cleanup_result": "no results",
...