-
-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sporadic cleanup issues on AppVeyor after upload #14
Comments
But not all pkgs have been uploaded! Current status for windows:
|
This issue only occurs after all uploads were attempted. It actually has nothing to do with uploading itself, but some finalization step after uploading. Looking at the log, it says the following... Attempting to finalize metadata for go_osx-64
Attempting to finalize metadata for go_win-64
Attempting to finalize metadata for go Normally these are followed by a IOW it tried to upload those packages, but failed for some reason. Unfortunately the log doesn't give us enough information to know what, but it sounds like it failed to render. Maybe a bug in the recipe or the tooling. Would check the former first. |
I don't think the problem is with rendering. I wrote a small snippet to test this out: import conda_build.api
metas = conda_build.api.render('.', variant_config_files=['..\.ci_support\win_.yaml'])
for meta, _, _ in metas:
fnames = conda_build.api.get_output_file_paths(meta)
for fname in fnames:
print(fname) Although it says 'Solving environment' only three times, it still prints all the names. |
The upload function is called each time for each tarball, so even if one calls returns the Access Denied error, the rest of the uploads are ignored. |
What I find interesting is after restarting the CI it keeps failing on those 3 specifically. It may very well be a network issue, but it seems a little strange that it doesn't fail elsewhere. 🤔 |
Anaconda Client does this: def get_server_api(token=None, site=None, cls=None, config=None, **kwargs):
"""
Get the anaconda server api class
"""
if not cls:
from binstar_client import Binstar
cls = Binstar
config = config if config is not None else get_config(site=site)
url = config.get('url', DEFAULT_URL)
logger.info("Using Anaconda API: %s", url)
if token:
logger.debug("Using token from command line args")
elif 'BINSTAR_API_TOKEN' in os.environ:
logger.debug("Using token from environment variable BINSTAR_API_TOKEN")
token = os.environ['BINSTAR_API_TOKEN']
elif 'ANACONDA_API_TOKEN' in os.environ:
logger.debug("Using token from environment variable ANACONDA_API_TOKEN")
token = os.environ['ANACONDA_API_TOKEN']
else:
token = load_token(url)
verify = config.get('ssl_verify', config.get('verify_ssl', True))
return cls(token, domain=url, verify=verify, **kwargs) Why not just rely on the environment variable? Why create a file and then read from it and and delete it later? |
As noted in this comment and again in this comment, it seems that sometimes we lack permissions to do a little bit of cleanup on AppVeyor (possibly due to resource contention), which causes the build to fail after uploading packages. Since this appears to be occurring after upload it isn't actually messing the uploads, but it does give one pause. Restarting seems to make it go away, but it does show up too often for comfort and it does make users nervous. Maybe sleeping for a bit before cleaning up would avoid this issue. There may be better fixes though.
ref: https://ci.appveyor.com/project/conda-forge/conda-feedstock/build/1.0.122
ref: https://ci.appveyor.com/project/conda-forge/r-base-feedstock/build/1.0.90
The text was updated successfully, but these errors were encountered: