summaryrefslogtreecommitdiff
path: root/Assistant/Threads/Watcher.hs
Commit message (Collapse)AuthorAge
* finished pushing Assistant monad into all relevant filesGravatar Joey Hess2012-10-30
| | | | All temporary and old functions are removed.
* 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
|
* split Changes and liftedGravatar Joey Hess2012-10-29
|
* lift alertWhileGravatar Joey Hess2012-10-29
|
* tweakGravatar Joey Hess2012-10-29
|
* converted 6 more threadsGravatar 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.
* Assistant monad, stage 1Gravatar Joey Hess2012-10-29
| | | | | This adds the Assistant monad, and an AssistantData structure. So far, none of the assistant's threads run in the monad yet.
* check preferred content when a file is moved or createdGravatar Joey Hess2012-10-19
| | | | | | | | | This can result in the file being dropped, or being downloaded, or even being dropped from some other repo. It's even possible to create a file in a directory where content is not wanted, which will make the assistant immediately send it elsewhere, and then drop it.
* 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.
* default annex.delayadd to 1 on OSXGravatar Joey Hess2012-09-21
|
* watch for changes to transfer info files, to update progress bars on uploadGravatar Joey Hess2012-09-20
| | | | | | | | | | | | | | This is handled differently for inotify, which can track modifications of existing files, and kqueue, which cannot (TTBOMK). On the inotify side, the TransferWatcher just waits for the file to be updated and reads the new bytesComplete. On the kqueue side, the TransferPoller has to re-read the file every update (currently 0.5 seconds, might need to increase that). I did think about working around kqueue's limitations by somehow creating a new file each time the size changed. But cleaning up all the files that would result seemed difficult. And really, this is not a lot worse than the TransferWatcher's behavior for downloads, which stats a file every 0.5 seconds. As long as the OS has decent file caching behavior..
* add annex.delayadd configurationGravatar Joey Hess2012-09-19
|
* hlintGravatar Joey Hess2012-09-13
|
* display errors when any named thread crashesGravatar Joey Hess2012-09-06
|
* display alert for inotify/kqueue errorsGravatar Joey Hess2012-09-06
|
* remove the "running" alertGravatar Joey Hess2012-07-30
|
* fix kqueue buildGravatar Joey Hess2012-07-30
|
* 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.
* better ordering of alertsGravatar Joey Hess2012-07-29
|
* moved all alert messages into one fileGravatar Joey Hess2012-07-29
| | | | Makes it easier to edit for consistent voice etc.
* add some alertsGravatar Joey Hess2012-07-29
|
* show alerts in the sidebarGravatar Joey Hess2012-07-29
| | | | | This has a bug -- it seems long polling can only wait on one page at a time. Need to re-unify the notifiers.
* 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.
* better transfer queue managementGravatar Joey Hess2012-07-25
| | | | | | | Allow transfers to be added with blocking until the queue is sufficiently small. Better control over which end of the queue to add a transfer to.
* debugging improvementsGravatar Joey Hess2012-07-20
| | | | | | add timestamps to debug messages Add lots of debug output in the assistant's threads.
* MountWatcher threadGravatar Joey Hess2012-07-19
| | | | Currently only prints mount points when mounts happen.
* 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
|
* improve thread termination handlingGravatar Joey Hess2012-06-28
| | | | | | | | | | The reason the DirWatcher had to wait for program termination was because it used withINotify, so when it finished, its watcher threads were killed. But since I have two DirWatcher threads now, that was not good, and could perhaps explain the MVar problem I saw yesterday. In any case, fixed this part of the code by making the DirWatcher return a handle that can be used to stop it, and now the main Assistant thread is the only one calling waitForTermination.
* reorg threadsGravatar Joey Hess2012-06-25