-
Notifications
You must be signed in to change notification settings - Fork 301
Conversation
Guess it would be too easy for the Mac build to fail and let me see that the code changes are working... It at least didn't break the builds! Might do a few other tiny changes in this branch, to see if I can get the code changes to trigger. |
Codecov Report
@@ Coverage Diff @@
## master #2346 +/- ##
=========================================
+ Coverage 37.55% 38.2% +0.64%
=========================================
Files 299 300 +1
Lines 12420 12518 +98
Branches 1640 1649 +9
=========================================
+ Hits 4664 4782 +118
+ Misses 7507 7481 -26
- Partials 249 255 +6
Continue to review full report at Codecov.
|
@bryphe, I've updated the check in CheckBinariesForBuild to include Windows, which I think is the intended result. There was occasionally errors where the cache files would be restored fine, but Windows was only restoring the ripgrep binaries, so it would fail to launch nvim. If I'm missing something and that isn't the intended behaviour, I can restore it. |
Bring it inline with the Mac + Windows Binaries.
I've also moved the Demo screenshot out of PR builds. Since it was labelled If its actually performing something useful for testing, I can add it back. |
Finally got the Mac build to call the changed code, and it looks like the process stopping works fine, but now that Oni is being killed it causes an issue with the following code (I'm assuming it is this code as the other promise this races against is just a sleep) const promise1 = this._app.stop().then(
() => {
log("_app.stop promise completed!")
didStop = true
},
err => {
// tslint:disable-next-line
console.error(err)
},
)
What is interesting is that if you look at the final try to quit out (https://travis-ci.org/onivim/oni/jobs/395803384#L3831) we can see that it fails one last time, and moves to the next test, then in that next test, the promise seems to complete:
Not fully sure how that promise completed that much further into the future, when the next test had started. |
@bryphe do you have any input on what a suitable timeout for the CI tests is? Currently we have two values I think, which causes issues like in https://travis-ci.org/onivim/oni/jobs/395911164#L3702. runInProcTest.ts runs the tests with a 300000ms timeout but the actual node call defined in the package.json uses a 120000ms timeout. Ideally it would never be reached....but its probably best to have the in code one be the shorter one, so a retry can be performed. |
Thanks for all your help investigating here @CrossR ! Really appreciate it 💯 Sorry I've been slow to reply.
That's reasonable! I was hoping it'd be more stable, but yes, let's move it out - don't want that to hurt stability of the builds. I think @badosu logged an issue tracking this, too.
Hmm, I wonder if Spectron is doing something extra to close or something that causes the promise to resolve?
Regarding the timeouts - I think we only hit the timeout in the case where there is a hanging process (I could be wrong, though). I'd be okay adjusting these, though. We could bump the code one down to 120000 to match. |
@@ -149,8 +149,9 @@ export class Oni { | |||
log("- Race complete. didStop: " + didStop) | |||
|
|||
if (!didStop) { | |||
log("- Attemping to force close processes:") | |||
log("- Attempting to force close processes:") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for fixing this 😄
@@ -13,7 +13,7 @@ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then | |||
sleep 3 | |||
|
|||
# Install Neovim | |||
curl -LO https://github.com/neovim/neovim/releases/download/v0.2.2/nvim.appimage | |||
curl -LO https://github.com/neovim/neovim/releases/download/v0.3.0/nvim.appimage |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice catch!
And ya, I hadn't seen this error before on OSX before, either:
But I think it's due to the fact that we kill the |
Should help this get merged, so the other changed can be benefited from.
Not sure how much more I can do on this.... I've added the killing of As far as I can tell, the main outstanding issue is that the AppVeyor builds sometimes just don't have the cached binaries since the release isn't downloaded, nor the cache restored. If I'm remembering correctly, the releases sometimes aren't downloaded due to GitHub API rate limiting? But we evidently don't get that on the Linux builds, which also download things. I could be missing something, but what is stopping us adding a The other solution is the way Veonim does it, which is basically how we had it before. The entirety of the binaries is stored in the repo, just in a seperate repo. Then they publish individual npm modules for each platform. Lot less clean...but also doesn't have the issues we are having on Windows CI. https://github.com/veonim/neovim for reference. Failing that, its storing it all somewhere, which I think we'd rather avoid. |
Thanks for all your help with this, @CrossR ! 💯
Sounds good. I thought that the
Yes, given all the issues we've had, I'm OK going back to that approach. It's not ideal, but it would definitely be more reliable. We could just stash the binaries in a Thanks again @CrossR - digging into these CI issues is a heroic endeavor! |
Updated ensureProcessNotRunning to run on both Nvim and Oni processes.
May help with the CI server issues on Mac (or at least killing the processes, won't change whatever bug/weirdness is causing it).
EDIT: