Commit graph

37149 commits

Author SHA1 Message Date
Joey Hess
2670890b17
convert to withCreateProcess for async exception safety
This handles all createProcessSuccess callers, and aside from process
pools, the complete conversion of all process running to async exception
safety should be complete now.

Also, was able to remove from Utility.Process the old API that I now
know was not a good idea. And proof it was bad: The code size went *down*,
despite there being a fair bit of boilerplate for some future API to
reduce.
2020-06-04 15:45:52 -04:00
Joey Hess
12e7d52c8b
another wrinkle 2020-06-04 14:46:28 -04:00
Joey Hess
e4993b4456
async exception safety
Convert to withCreateProcess (missed this one a couple commits ago)
and also make sure that the child thread gets canceled on exception.
2020-06-04 12:57:22 -04:00
Joey Hess
bd3074643b
remove unused createBackgroundProcess 2020-06-04 12:48:42 -04:00
Joey Hess
20557cf0ef
stop exporting createProcessChecked
Yay, that had an ugly comment associated with it.
2020-06-04 12:46:55 -04:00
Joey Hess
438dbe3b66
convert to withCreateProcess for async exception safety
This handles all sites where checkSuccessProcess/ignoreFailureProcess
is used, except for one: Git.Command.pipeReadLazy
That one will be significantly more work to convert to bracketing.

(Also skipped Command.Assistant.autoStart, but it does not need to
shut down the processes it started on exception because they are
git-annex assistant daemons..)

forceSuccessProcess is done, except for createProcessSuccess.
All call sites of createProcessSuccess will need to be converted
to bracketing.

(process pools still todo also)
2020-06-04 12:44:09 -04:00
Joey Hess
2dc7b5186a
convert to withCreateProcess for async exception safety 2020-06-04 12:05:25 -04:00
Joey Hess
c429bbf2bd
remove workaround for old versions of process
ghc 8.4.4 has process 1.6.3, which was the first version to include
getPid.
2020-06-03 16:03:08 -04:00
Joey Hess
92f775eba0
convert to withCreateProcess for async exception safety
Not yet 100% done, so far I've grepped for waitForProcess and converted
everything that uses that to start the process with withCreateProcess.

Except for some things like P2P.IO and Assistant.TransferrerPool,
and Utility.CoProcess, that manage a pool of processes. See #2
in https://git-annex.branchable.com/todo/more_extensive_retries_to_mask_transient_failures/#comment-209f8a8c38e63fb3a704e1282cb269c7
for how those will need to be dealt with.

checkSuccessProcess, ignoreFailureProcess, and forceSuccessProcess calls waitForProcess, so
callers of them will also need to be dealt with, and have not been yet.
2020-06-03 15:48:09 -04:00
Joey Hess
1ee5919d1e
make createProcess calls async exception safe
Using cleanupProcess because withCreateProcess cannot run an Annex
action, but the effect is the same as using it.
2020-06-03 15:30:30 -04:00
Joey Hess
31d53587d5
generalize withNullHandle to MonadIO 2020-06-03 15:18:48 -04:00
Joey Hess
e683207123
make runRelayService async exception safe
Use withCreateProcess so the helper process will be shut down
if the thread is killed.

Use withAsync to ensure the helper threads get shut down
too.
2020-06-03 13:51:56 -04:00
Joey Hess
1f2e2d15e8
async exception safety
Convert to withCreateProcess and concurrently, both of which
handle cleaning up when there's an async exception thrown to the thread
running this.
2020-06-03 13:19:28 -04:00
Joey Hess
94986fb228
convert to withCreateProcess
Makes it stop the command if the consumer gets killed.

Also, it seems that the old version expected bracketOnError to return
the False from the error handler, but it does not, it would have thrown
the exception and ignored the False. That's fixed, it will now return
False when there is an exception.
2020-06-03 13:15:01 -04:00
Joey Hess
53263efe4b
simplify
This was a pre-withCreateProcess attempt at doing the same thing, so can
just call boolSystem now that it uses withCreateProcess.

There's a slight behavior change, since it used to wait, after an async
exception, for the command to finish, before re-throwing the exception.
Now, it rethrows the exception right away. I don't think that impact any
of the users of this.
2020-06-03 13:01:18 -04:00
Joey Hess
e1fc4f7594
make safeCommand stop the process if the thread gets killed
And a comment on a todo item that this commit is perhaps the start of
solving.
2020-06-03 12:52:11 -04:00
Joey Hess
156e728b56
bump process version
Want to use eg withCreateProcess.

The base constraint already implied a ghc version bundled with process
1.6 or newer.
2020-06-03 12:09:41 -04:00
Joey Hess
81a811d935
comment 2020-06-03 12:00:44 -04:00
Joey Hess
697ebba78f
Merge branch 'master' of ssh://git-annex.branchable.com 2020-06-03 11:40:24 -04:00
the13thletter
e3b487d41c Added a comment 2020-06-02 14:26:52 +00:00
Ilya_Shlyakhter
fa3a8e73cf removed 2020-06-01 16:36:34 +00:00
superhair123
10dcc6e27e 2020-06-01 13:48:04 +00:00
superhair123
4b0dd1fcb2 2020-06-01 13:47:30 +00:00
superhair123
1614e3e4cd 2020-06-01 13:46:52 +00:00
superhair123
401f0f7d5a 2020-06-01 13:44:15 +00:00
TroisSinges
ef04af6869 2020-06-01 07:36:47 +00:00
thk
8ac64700ec 2020-05-31 18:32:52 +00:00
thk
3ece3aafe6 2020-05-31 18:12:40 +00:00
branchable@bafd175a4b99afd6ed72501042e364ebd3e0c45e
32ef0206fb Added a comment 2020-05-31 11:03:05 +00:00
Joey Hess
2b52962ea2
commnet 2020-05-29 15:36:42 -04:00
Joey Hess
ed2d2ae256
Merge branch 'master' of ssh://git-annex.branchable.com 2020-05-29 13:09:01 -04:00
Joey Hess
0ba6144597
devblog 2020-05-29 13:08:38 -04:00
yarikoptic
e8dd62689b Added a comment 2020-05-28 23:53:58 +00:00
kyle
f5e300909f Added a comment 2020-05-28 20:41:48 +00:00
Joey Hess
0243c6b6c5
comment 2020-05-28 16:31:53 -04:00
Joey Hess
ba11fad102
Merge branch 'master' of ssh://git-annex.branchable.com 2020-05-28 15:56:07 -04:00
Joey Hess
89b2542d3c
annex.skipunknown with transition plan
Added annex.skipunknown git config, that can be set to false to change the
behavior of commands like `git annex get foo*`, to not skip over files/dirs
that are not checked into git and are explicitly listed in the command
line.

Significant complexity was needed to handle git-annex add, which uses some
git ls-files calls, but needs to not use --error-unmatch because of course
the files are not known to git.

annex.skipunknown is planned to change to default to false in a
git-annex release in early 2022. There's a todo for that.
2020-05-28 15:55:17 -04:00
kyle
8b280d4d8a Added a comment 2020-05-28 17:55:11 +00:00
Joey Hess
5b28a37ea1
titles 2020-05-28 13:21:56 -04:00
Joey Hess
5ffc864718
comment 2020-05-28 13:21:40 -04:00
branchable@bafd175a4b99afd6ed72501042e364ebd3e0c45e
19ad80de22 2020-05-28 16:25:27 +00:00
Joey Hess
4bf8f45efe
comment 2020-05-28 12:22:52 -04:00
Joey Hess
5e71e81fb6
close 2020-05-28 12:10:52 -04:00
Joey Hess
1572d72931
remove dup comment 2020-05-28 12:09:37 -04:00
Joey Hess
f2d91be78b
close 2020-05-28 12:08:26 -04:00
Joey Hess
e84d4c7a64
followup 2020-05-28 12:01:35 -04:00
Joey Hess
1d63d2bc83
close 2020-05-28 11:36:30 -04:00
Joey Hess
399eb4bdec
close 2020-05-28 11:32:27 -04:00
https://christian.amsuess.com/chrysn
e18af2d5d9 Formatting fixes (markdown swallowed the line breaks making the entry hard to read) 2020-05-28 12:47:51 +00:00
thk
c0437bfd2c Added a comment 2020-05-27 20:41:03 +00:00