Improve the error message when the build data file has been deleted#1963
Merged
Conversation
On Honeycomb I've seen cases of builds failing due to a pre/post-compile
hook having deleted the buildpacks internal build data file - typically
as part of the user trying to clean up the build cache.
This file is required for the buildpack to function correctly, so
deleting it isn't supported. However, we can show a clearer error
message.
Before:
```
-----> Running bin/post_compile hook
+ rm -rf /tmp/cache
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
! Internal Error: An unhandled buildpack error occurred.
!
! An unhandled error occurred while executing the command:
! jq --exit-status --arg key "${key}" "${jq_args[@]}" '. + { ($key): ($value) }' "${BUILD_DATA_FILE}"
!
! If this issue persists, please open a support ticket or file
! an issue on the buildpack's GitHub repository:
! https://help.heroku.com/
! https://github.com/heroku/heroku-buildpack-python/issues
!
! Stack trace:
! build_data::_set @ /tmp/buildpack/lib/build_data.sh:109
! build_data::set_raw @ /tmp/buildpack/lib/build_data.sh:76
! build_data::set_duration @ /tmp/buildpack/lib/build_data.sh:60
! hooks::run_hook @ /tmp/buildpack/lib/hooks.sh:37
! main @ ./bin/compile:289
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
! Internal Error: An unhandled buildpack error occurred.
!
! An unhandled error occurred while executing the command:
! new_data_file_contents="$(jq --exit-status --arg key "${key}" "${jq_args[@]}" '. + { ($key): ($value) }' "${BUILD_DATA_FILE}")"
!
! If this issue persists, please open a support ticket or file
! an issue on the buildpack's GitHub repository:
! https://help.heroku.com/
! https://github.com/heroku/heroku-buildpack-python/issues
!
! Stack trace:
! build_data::_set @ /tmp/buildpack/lib/build_data.sh:109
! build_data::set_raw @ /tmp/buildpack/lib/build_data.sh:76
! build_data::set_duration @ /tmp/buildpack/lib/build_data.sh:60
! hooks::run_hook @ /tmp/buildpack/lib/hooks.sh:37
! main @ ./bin/compile:289
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
```
After:
```
-----> Running bin/post_compile hook
+ rm -rf /tmp/cache
! Error: The buildpack's build data file has been deleted.
!
! The Python buildpack's build data file can't be found:
! /tmp/cache/build-data/python.json
!
! This file is required for the buildpack to work correctly,
! and so you must not delete it when removing files from the
! build cache or /tmp directories.
```
Lastly, we also now use `--exit-status` in more places to prevent
invalid empty build data files from being silently ignored.
GUS-W-20220731.
515b5dd to
0321510
Compare
colincasey
approved these changes
Nov 14, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On Honeycomb I've seen cases of builds failing due to a pre/post-compile hook having deleted the buildpack's internal build data file - typically as part of the user trying to clean up the build cache.
This file is required for the buildpack to function correctly, so deleting it isn't supported. However, we can show a clearer error message.
Before:
After:
Lastly, we also now use
--exit-statusin more places to prevent invalid empty build data files from being silently ignored.GUS-W-20220731.