/home/git/project.git/hooks/pre-receive: No such file or directory #3458
Comments
that looks like the repository in the builder could be corrupted somehow. If you enter into the builder again, what's the status of |
basically it's coughing up on this line which originally came from the gitreceive project: https://github.com/deis/deis/blob/master/builder/rootfs/etc/confd/templates/gitreceive#L33 |
I'm having this issue with one of my repositories as well; it comes after performing an in-place upgrade of my Deis cluster from 1.4.x to 1.5.0:
Destroying the repository and re-creating it didn't seem to work:
The other project I am running under Deis didn't have this problem. |
You can also try restarting builder - the repository cache does not persist through restart: |
@bacongobbler Everything is missing now.
|
@carmstrong Restarted the builder. Nothing.
|
Tried re-creating. Same thing. Weird.
|
that is certainly odd behaviour. Maybe something changed with the |
I have the same issue today morning. Can someone help with running command on builder? |
Recreate of project help. |
I don't know what to do. The cluster is useless for this project at the minute. Can push other projects fine, though. This is the most important one, unfortunately. |
@onbjerg try the following:
after that, try pushing again. If that doesn't work then I'd try and see how we can reproduce this issue consistently (we haven't been seeing it over on our end) |
@bacongobbler: your work around helped for me. I noticed this issue today with (one) of my projects. I believe the issue MIGHT have been some general unstability earler today on my platform. Deis builder was moved between hosts a few times during some period, and might not have completely started up properly... |
@bacongobbler ,
|
@bacongobbler
|
@babarinde |
@bacongobbler Erh..
|
@onbjerg Can you see if the CoreOS host is OOM? And what's using the memory? What platform is this deployment on? |
How can I check that in CoreOS? It is deployed on a 3-node cluster on DO. |
I'd start with |
Definitely not OOM. Only one node has little memory left (deis-1, 233 megs) all of the others have >2GB of memory left. |
Is that the node running builder? Confirm with |
@bacongobbler The way this happened was that my Macbook turned of mid-push. So I guess one way to reproduce it would be
|
@carmstrong Yes. It is running the builder. Can I move it somehow? |
You could What are the specs on these machines? |
@bacongobbler |
@carmstrong The 4GB instances on DO. Should do for 2 apps, though. Uninstalling and reinstalling didn't help. Dang it. |
The builder has been completely rewritten to be a purely Go-based service for Deis v1.10. I'd encourage everyone to give it a go upon upgrade, and let us know if you continue to run into this issue. |
@carmstrong It's still the case with 1.10. I've switched to stateless Deis during upgrade to 1.10 and redeployed all my apps to populate storage with docker images, so all repos were there in the builder. After some time one of repo directories was corrupted (i.e. no git files, only
Result: /home/git/app.git is there, but it is corrupted: only It looks like something is removing existing directory and something creates 'corrupted' directory instead. It shouldn't be And also another question: why is /home/git is not stored in volume just like /var/lib/docker is? It makes it possible to push same revision again after restarting builder, which is not something Heroku allows. |
We recently had the same issue with the v1.10 Builder. It looks to be functioning after doing a restart on the builder.
|
I deployed a new Deis v1.10 cluster yesterday and just had the same builder failure repeat. I'll upgrade to Deis v1.10.1 and see if it repeats. |
@sstarcher I don't believe there are any relevant fixes in v1.10.1 to address this issue. We know and acknowledge that this is an issue, but there is a workaround for now and nobody has found a reliable reproduction case. If you can find a way to reliably reproduce the issue, we should be able to better nail it down, but so far we've spent a lot of time with no luck finding a common pattern on our end. :( |
Let me quote myself: #3458 (comment)
|
@ineu do you happen to know if your steps for reproducing this work equally well with a stateful cluster? |
@ineu reminds me we are doing something that would probably be considered unorthodox with one of our repos. One of our Deis deployments comes from a git repo that runs some scripts and generates some artifacts.
So every time we are force pushing a new blank git repo to deis. What we are doing may not be the issue, but if it is it could be why only a few people are reporting this problem. |
@ineu I am using a new v1.10.0 cluster (not stateless) and following the steps you outlined exactly. I was unable to reproduce. I do have a few comments / questions about the steps you suggested.
Although I did perform them, steps 1 - 3 strike me as superfluous because of what step 4 is. When builder restarts, its cache of git repos should go away as @carmstrong had previously indicated. In this experiment and every other I've performed, I've consistently gotten a clean slate after builder restart. The result you documented in your instructions is that Is it possible you could show us the exact
|
Unfortunately I don't have any stateful cluster to check. |
@ineu, @jackfrancis just tried your steps on his stateless v.1.10.0 cluster in AWS as well with no luck reproducing. We believe this is an issue, for sure, but as hard as it's been to reproduce, we're still looking for a smoking gun. |
here's a log of that attempt to reproduce: |
Ok! I finally had some luck reproducing this, although I had to follow different steps. Instead of following @ineu's steps, I attempted to more accurately reproduce the OP's scenario by interrupting a push. Well... this wasn't reproducing the issue at first, then I realized that my repo was so small, I was already past the push and into the hook by the time I actually interrupted it... So I added a large file to my repo to slow down the push so I could interrupt it during the upload instead of the hook. This worked! The results I see are as described by others above. On a subsequent attempt to push, I'm told the repo doesn't exist or I may not have adequate permissions. When I Restarting builder does not resolve this issue as expected. Oddly, what does seem to resolve the issue is if I make continues attempts to push the app. The failure seems to occur at most twice for me and then I'm able to successfully push again. If I interrupt this, I'm back to the failing again. Can anyone else who has experienced this issue comment on whether continued attempts to push eventually succeed? |
That sounds exactly like our problem. We are pushing around 300mb of files with our git push and it's going through a Jenkins job that sometimes people will stop before it finishes. Continued attempts to push have never worked for me. I believe every time I uninstall the builder entirely and recreate it. |
@krancour I've also seen this problem after interrupted push first, but then retried with sucessfull push and it failed as well, which is weird. Maybe there's something wrong with gitreceive? Also I have no idea how could it persist after restarting container, as it's not a mounted volume. To me it sounds like something is recreating it right after container starts. |
I think this is the line that masks the issue: https://github.com/deis/deis/blob/master/builder/rootfs/etc/confd/templates/builder#L62. Parent directory must be there for builder to do something. I suspect that it doesn't exist, so builder creates it because of |
This seems like a plausible explanation. Were you able to edit the builder to test this fix? |
I spent ~16 hours trying identify what process create catalog app.git/cache and app.git/build without success. Maybe this is bug of overlayfs or something near. I was create a working code which handle this situation by detecting some files in git repo, and if its not exists, remove catalog and create it again.
Today I will start testing this on our dev cluster with 30+ projects, and try to create PR soon. |
Thanks for the awesome work on this, @rvadim! |
It's a total shot in the dark, but the latest CoreOS release includes a fix for an OverlayFS issue. The error there manifests differently (could not allocate memory), but I'm wondering if we're swallowing that error in some cases when this is encountered. |
Anyone interested in this topic who has been participating... are any of you willing to test this out with a builder built from master? It seems #4671 had inadvertently fixed this issue (altho I'm not yet clear on how). @rvadim and myself can confirm, but I'd like some confirmation from others as well. |
Directions for the above: from the root of the project:
|
Building and deploying the deis-builder from master works for me. |
Uh. I tried to push a new version to Deis. Mid-push my computer shut down, and when I returned I could not push again because a push was in progress.
I read in the issue tracker that you could a) delete the lock file or b) restart the builder. I didn't find any lockfile, so I restarted the builder.
Now it seems like nothing works.
I get this error when pushing
The text was updated successfully, but these errors were encountered: