summaryrefslogtreecommitdiff
path: root/Assistant/Threads/SanityChecker.hs
Commit message (Collapse)AuthorAge
* fixed the race breaking moving files from archive in direct modeGravatar Joey Hess2013-03-04
| | | | | | | | | | | | | | | | | | | | | | assistant: Fix bug in direct mode that could occur when a symlink is moved out of an archive directory, and resulted in the file not being set to direct mode when it was transferred. The bug was that the direct mode mapping was not up-to-date when the transferrer finished. So, finding no direct mode place to store the object, it was put into .git/annex in indirect mode. To fix this, just make the watcher update the direct mode mapping to include the new file before it starts the transfer. (Seems we don't need to update it to remove the old file if the link was moved, because the direct mode code will notice it's not present and the mapping gets updated for its removal later.) The reason this was a race, and was probably not seen often is because the committer came along and updated the direct mode mapping as part of adding the moved symlink. But when the file was sufficiently small or the remote sufficiently fast, this could happen after the transfer finished.
* better prevention of auto repackGravatar Joey Hess2013-03-03
| | | | | | | | | | | | | Looking through the git sources (documentation is unclear), it seems commit doesn't ever trigger git-gc, mostly fetching and merging seems to. I cannot easily override the setting in all those places, so instead set gc.auto in git config when initializing a repository with the assistant. This does mean that the user cannot set gc.auto=0 and completely avoid repacks, as the assistant does it daily. But, it only does it after there are 100x the default number of loose objects, so this is probably not going to be too annoying.
* assistant: Prevent automatic commits from causing git-gc runs, as that can ↵Gravatar Joey Hess2013-03-03
| | | | make things quite slow. Instead, git-gc --auto is run once a day. (This can be disabled by the usual gc.auto=0 setting.)
* remove excess log rotation; openLog rotatesGravatar Joey Hess2013-03-01
|
* assistant: Logs are rotated to avoid them using too much disk space.Gravatar Joey Hess2013-03-01
| | | | | | This cannot completely guard against a runaway log event, and only runs every hour anyway, but it should avoid most problems with very long-running, active assistants using up too much space.
* webapp: Now allows restarting any threads that crash.Gravatar Joey Hess2013-01-26
|
* pushed Assistant monad down into DaemonStatus codeGravatar Joey Hess2012-10-30
| | | | | | Currently have three old versions of functions that more reworking is needed to remove: getDaemonStatusOld, modifyDaemonStatusOld_, and modifyDaemonStatusOld
* cleanup daemonStatus accessorsGravatar Joey Hess2012-10-30
|
* lift alertWhileGravatar Joey Hess2012-10-29
|
* convert Watcher thread to Assistant monadGravatar Joey Hess2012-10-29
| | | | | | | | | This is a nice win; much less code runs in Annex, so other threads have more chances to run concurrently. I do notice that renaming a file has gone from 1 to 2 commits. I think this is due to the above improvement letting the committer run more frequently, so it commits the rm first.
* Assistant monad, stage 2.5Gravatar Joey Hess2012-10-29
| | | | | | | | | | Converted several threads to run in the monad. Added a lot of useful combinators for working with the monad. Now the monad includes the name of the thread. Some debugging messages are disabled pending converting other threads.
* use gitRepoGravatar Joey Hess2012-10-12
|
* fix last zombies in the assistantGravatar Joey Hess2012-10-04
| | | | | Made Git.LsFiles return cleanup actions, and everything waits on processes now, except of course for Seek.
* always check with ls-files before adding new filesGravatar Joey Hess2012-10-02
| | | | | | | | | | | | | | | | | | | | | | | Makes it safe to use git annex unlock with the watcher/assistant. And also to mix use of the watcher/assistant with regular files stored in git. Long ago, I had avoided doing this check, except during the startup scan, because it would be slow to run ls-files repeatedly. But then I added the lsof check, and to make that fast, got it to detect batch file adds. So let's move the ls-files check to also occur when it'll have a batch, and can check them all with one call. This does slow down adding a single file by just a bit, but really only a little bit. (The lsof check is probably more expensive.) It also speeds up the startup scan, especially when there are lots of new files found by the scan. Also, fixed the sleep for annex.delayadd to not run while the threadstate lock is held, so it doesn't unnecessarily freeze everything else. Also, --force no longer makes it skip the lsof check, which was not documented, and seems never a good idea.
* add annex.delayadd configurationGravatar Joey Hess2012-09-19
|
* display errors when any named thread crashesGravatar Joey Hess2012-09-06
|
* make old activiy alerts stay visibleGravatar Joey Hess2012-07-30
| | | | | | They're updated to show whether the activity succeeded or failed. This adds several TODOs to the code to fix later.
* moved all alert messages into one fileGravatar Joey Hess2012-07-29
| | | | Makes it easier to edit for consistent voice etc.
* add more alertsGravatar Joey Hess2012-07-29
| | | | Nearly all long-running actions now display an alert.
* move DaemonStatus manipulation out of the Annex monad to IOGravatar Joey Hess2012-07-28
| | | | | | I've convinced myself that nothing in DaemonStatus can deadlock, as it always keepts the TMVar full. That was the only reason it was in the Annex monad.
* debugging improvementsGravatar Joey Hess2012-07-20
| | | | | | add timestamps to debug messages Add lots of debug output in the assistant's threads.
* wait on child transfer processes, and invalidate cacheGravatar Joey Hess2012-07-06
| | | | | | There's still a bug; if the child updates its transfer info file, then the data from it will superscede the TransferInfo, losing the info that we should wait on this child.
* enqueue Downloads when new symlinks appear to content we don't haveGravatar Joey Hess2012-07-05
|
* reorg threadsGravatar Joey Hess2012-06-25