git-annex/Utility
Joey Hess 7013798df5
async exception safety for coprocesses
Tested the forcerestart code path and it works.

The hairy part is, what if an async exception is caught when it's in
restart?

If it's in the part that stops the old process, the old process
is left in the handle. The next attempt to use the CoProcessHandle
will then throw an IO exception, which will result in restart getting
run again. So I think this will work, but have not actually tested it.

The use of withMVarMasked lets it start the new process and fill the
mvar with it, even if there's an async exception at that point.

Note that exceptions are masked while running forcerestart, so
do not need to worry about an async exception being thrown while it's
recovering from an async exception.
2020-06-09 13:44:23 -04:00
..
Directory explict export lists 2019-11-21 16:08:37 -04:00
DirWatcher explict export lists 2019-11-21 16:08:37 -04:00
Env explict export lists 2019-11-21 16:08:37 -04:00
LockFile async exception safety for openFd 2020-06-05 15:48:00 -04:00
LockPool add DebugLocks build flag 2018-11-19 15:02:43 -04:00
Path explict export lists 2019-11-21 16:08:37 -04:00
Process bracket createPipe for async exception safety 2020-06-05 13:58:04 -04:00
Scheduled explict export lists 2019-11-23 11:24:10 -04:00
Tmp explict export lists 2019-11-23 11:24:10 -04:00
Aeson.hs switch MetaValue to ByteString and MetaField to Text 2019-01-07 14:18:24 -04:00
Android.hs explict export lists 2019-11-21 16:08:37 -04:00
Applicative.hs squelch tab warnings 2019-11-22 12:49:41 -04:00
Attoparsec.hs fix git ls-tree parser 2019-12-06 14:05:48 -04:00
AuthToken.hs comment typo 2019-01-03 00:22:05 -04:00
Base64.hs switch MetaValue to ByteString and MetaField to Text 2019-01-07 14:18:24 -04:00
Batch.hs simplify 2020-06-03 13:01:18 -04:00
Bloom.hs remove many old version ifdefs 2019-07-05 15:09:37 -04:00
CoProcess.hs async exception safety for coprocesses 2020-06-09 13:44:23 -04:00
CopyFile.hs convert to withCreateProcess for async exception safety 2020-06-04 15:45:52 -04:00
Daemon.hs some easy createDirectoryUnder conversions 2020-03-05 15:20:10 -04:00
Data.hs explict export lists 2019-11-21 16:08:37 -04:00
DataUnits.hs adeiu, MissingH 2017-05-16 01:03:52 -04:00
DBus.hs explict export lists 2019-11-21 16:08:37 -04:00
DebugLocks.hs explict export lists 2019-11-21 16:08:37 -04:00
Directory.hs remove unused imports 2020-03-30 12:11:52 -04:00
DirWatcher.hs explict export lists 2019-11-21 16:08:37 -04:00
DiskFree.hs removed the old Android app 2018-10-13 01:41:11 -04:00
Dot.hs explict export lists 2019-11-21 16:08:37 -04:00
DottedVersion.hs explict export lists 2019-11-21 16:08:37 -04:00
Env.hs explict export lists 2019-11-21 16:08:37 -04:00
Exception.hs async exception safety for coprocesses 2020-06-09 13:44:23 -04:00
FileMode.hs Make test suite work better when the temp directory is on NFS. 2018-12-19 12:44:56 -04:00
FileSize.hs use RawFilePath getFileStatus for speed 2019-12-06 14:44:42 -04:00
FileSystemEncoding.hs use conversion functions from filepath-bytestring (again) 2020-01-04 20:18:40 -04:00
Format.hs add a formatContainsVar function 2020-05-19 15:35:00 -04:00
FreeDesktop.hs use System.Directory not Utility.Directory 2016-09-22 11:34:55 -04:00
GitLFS.hs remove unused 2019-09-24 18:16:01 -04:00
Glob.hs adeiu, MissingH 2017-05-16 01:03:52 -04:00
Gpg.hs async exception safety 2020-06-05 14:08:46 -04:00
Hash.hs split up quickcheck tests for hashes and macs 2020-03-02 14:34:48 -04:00
HtmlDetect.hs explict export lists 2019-11-21 16:08:37 -04:00
HttpManagerRestricted.hs merge from http-client-restricted 2019-07-17 16:48:50 -04:00
HumanNumber.hs explict export lists 2019-11-21 16:08:37 -04:00
HumanTime.hs changelog and minor style 2020-02-28 12:57:55 -04:00
InodeCache.hs Merge branch 'bs' into sqlite-bs 2019-12-18 14:51:03 -04:00
IPAddress.hs annex.security.allowed-ip-addresses ports syntax 2020-02-25 15:45:52 -04:00
libkqueue.c update my email address and homepage url 2015-01-21 12:50:09 -04:00
libkqueue.h
LinuxMkLibs.hs missed an export 2019-11-22 12:35:57 -04:00
LockFile.hs use lock pools throughout git-annex 2015-05-19 14:09:52 -04:00
LockPool.hs Fix shared lock file FD leak. 2016-03-01 15:31:39 -04:00
LogFile.hs explict export lists 2019-11-21 16:08:37 -04:00
Lsof.hs convert to withCreateProcess for async exception safety 2020-06-04 12:44:09 -04:00
MagicWormhole.hs convert to withCreateProcess 2020-06-03 13:15:01 -04:00
Matcher.hs avoid list lookup by parseToken 2019-05-14 13:11:29 -04:00
MD5.hs use filepath-bytestring for annex object manipulations 2019-12-11 15:25:07 -04:00
Metered.hs async exception safety 2020-06-03 13:19:28 -04:00
Misc.hs ByteString Ref continued 2020-04-07 11:54:27 -04:00
Monad.hs explict export lists 2019-11-21 16:08:37 -04:00
Mounts.hs removed the old Android app 2018-10-13 01:41:11 -04:00
Network.hs explict export lists 2019-11-21 16:08:37 -04:00
NotificationBroadcaster.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
OptParse.hs explict export lists 2019-11-21 16:08:37 -04:00
OSX.hs explict export lists 2019-11-21 16:08:37 -04:00
PartialPrelude.hs explict export lists 2019-11-21 16:08:37 -04:00
Path.hs Display a warning message when asked to operate on a file inside a directory that's a symbolic link to elsewhere 2020-05-11 15:03:35 -04:00
Percentage.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
PID.hs explict export lists 2019-11-21 16:08:37 -04:00
Process.hs support building with process-1.6.3 again 2020-06-05 11:40:18 -04:00
QuickCheck.hs remove many old version ifdefs 2019-07-05 15:09:37 -04:00
RawFilePath.hs windows build fix 2020-01-01 12:24:31 -04:00
ResourcePool.hs check-attr resource pool 2020-04-21 11:05:57 -04:00
Rsync.hs explict export lists 2019-11-21 16:08:37 -04:00
SafeCommand.hs make safeCommand stop the process if the thread gets killed 2020-06-03 12:52:11 -04:00
Scheduled.hs add dropFromEnd 2018-11-23 11:24:05 -04:00
Shell.hs explict export lists 2019-11-23 11:24:10 -04:00
SimpleProtocol.hs clean P2P protocol shutdown on EOF 2018-09-13 10:46:37 -04:00
Split.hs reword comment 2019-11-27 16:38:18 -04:00
SshConfig.hs explict export lists 2019-11-23 11:24:10 -04:00
SshHost.hs avoid the dashed ssh hostname class of security holes 2017-08-17 22:11:31 -04:00
Su.hs explict export lists 2019-11-21 16:08:37 -04:00
SystemDirectory.hs Fix build with directory-1.3. 2016-12-20 15:23:59 -04:00
Tense.hs explict export lists 2019-11-23 11:24:10 -04:00
ThreadLock.hs explict export lists 2019-11-23 11:24:10 -04:00
ThreadScheduler.hs explict export lists 2019-11-23 11:24:10 -04:00
TimeStamp.hs explict export lists 2019-11-23 11:24:10 -04:00
TList.hs explict export lists 2019-11-23 11:24:10 -04:00
Tmp.hs explict export lists 2019-11-23 11:24:10 -04:00
Tor.hs explict export lists 2019-11-23 11:24:10 -04:00
Touch.hs remove unused import 2018-10-30 13:38:29 -04:00
Tuple.hs explict export lists 2019-11-23 11:24:10 -04:00
Url.hs fix some build warnings 2020-05-04 12:44:26 -04:00
UserInfo.hs removed the old Android app 2018-10-13 01:41:11 -04:00
Verifiable.hs explict export lists 2019-11-23 11:24:10 -04:00
WebApp.hs explict export lists 2019-11-23 11:24:10 -04:00
Yesod.hs remove many old version ifdefs 2019-07-05 15:09:37 -04:00