summaryrefslogtreecommitdiff
path: root/Assistant/Threads/TransferWatcher.hs
Commit message (Collapse)AuthorAge
* get, move, copy, mirror: Added --failed switch which retries failed copies/movesGravatar Joey Hess2016-08-03
| | | | | | | | | Note that get --from foo --failed will get things that a previous get --from bar tried and failed to get, etc. I considered making --failed only retry transfers from the same remote, but it was easier, and seems more useful, to not have the same remote requirement. Noisy due to some refactoring into Types/
* update my email address and homepage urlGravatar Joey Hess2015-01-21
|
* annex.startupscan can be set to false to disable the assistant's startup scan.Gravatar Joey Hess2014-03-05
|
* linux upgrade code debugged and workingGravatar Joey Hess2013-11-24
|
* queue and start download of git-annex from web, using git-annex, when ↵Gravatar Joey Hess2013-11-23
| | | | upgrade is started
* moved code out of webappGravatar Joey Hess2013-10-26
| | | | | No code changes, aside from some changes to lifting in code that turned out to be able to run in Assistant rather than Handler.
* hlintGravatar Joey Hess2013-10-02
|
* more efficient uuid to remote lookupGravatar Joey Hess2013-04-02
|
* let's put type modules under the parent module, not in a Types directoryGravatar Joey Hess2013-03-10
|
* add additional debug info about reasons for dropsGravatar Joey Hess2013-03-01
|
* add additional debug info about reasons for transfersGravatar Joey Hess2013-03-01
|
* webapp: Now allows restarting any threads that crash.Gravatar Joey Hess2013-01-26
|
* whitespace fixesGravatar Joey Hess2012-12-13
|
* webapp and assistant glacier supportGravatar Joey Hess2012-11-24
|
* where indentationGravatar Joey Hess2012-10-31
|
* 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
* tweakGravatar Joey Hess2012-10-29
|
* converted 2 more threads.. only 2 more to goGravatar Joey Hess2012-10-29
|
* 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.
* nasty race workaroundGravatar Joey Hess2012-10-19
|
* check and drop after uploadsGravatar Joey Hess2012-10-18
|
* check and drop unwanted content from remotes after receiving a transferGravatar Joey Hess2012-10-18
|
* fix display of transfers for remotes not in syncRemotes listGravatar Joey Hess2012-10-14
|
* better variable nameGravatar Joey Hess2012-10-14
|
* use gitRepoGravatar Joey Hess2012-10-12
|
* don't queue uploads for failed downloadsGravatar Joey Hess2012-09-24
|
* 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..
* avoid sending uploads right back to where the download came fromGravatar Joey Hess2012-09-18
| | | | Just an optimisation.
* when a Download finishes, queue UploadsGravatar Joey Hess2012-09-18
| | | | | | | | | | | | | | | | | | | This ensures file propigate takes place in situations such as: Usb drive A is connected to B. A's master branch is already in sync with B, but it is being used to sneakernet some files around, so B downloads those. There is no master branch change, so C does not request these files. B needs to upload the files it just downloaded on to C, etc. My first try at this, I saw loops happen. B uploaded to C, which then tried to upload back to B (because it had not received the updated git-annex branch from B yet). B already had the file, but it still created a transfer info file from the incoming transfer, and its watcher saw that be removed, and tried to upload back to C. These loops should have been fixed by my previous commit. (They never affected ssh remotes, only local ones, it seemed.) While C might still try to upload to B, or to some other remote that already has the file, the extra work dies out there.
* hlintGravatar Joey Hess2012-09-13
|
* display errors when any named thread crashesGravatar Joey Hess2012-09-06
|
* got alterTransferInfo and updateTransferInfo mixed upGravatar Joey Hess2012-08-29
| | | | | The poller only alters, to avoid re-adding transfers that get removed. The watcher updates, to add new transfers.
* avoid possibly re-adding a removed transfer when updating its infoGravatar Joey Hess2012-08-28
| | | | Doesn't fix the bug I thought it'd fix, but is clearly correct.
* look up Remote when a transfer appearsGravatar Joey Hess2012-08-27
| | | | Fixes display of the remote name in the dashboard.
* process group killingGravatar Joey Hess2012-08-10
| | | | | | | | | | | | | | | | | | | | This seems to work pretty well. Handled the process groups like this: - git-annex processes started by the assistant for transfers are run in their own process groups. - otherwise, rely on the shell to allocate a process group for git-annex There is potentially a problem if some other program runs git-annex directly (not using sh -c) The program and git-annex would then be in the same process group. If that git-annex starts a transfer and it's canceled, the program would also get killed. May or may not be a desired result. Also, the new updateTransferInfo probably closes a race where it was possible for the thread id to not be recorded in the transfer info, if the transfer info file from the transfer process is read first.
* 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.
* run file transfers in threads, not processesGravatar Joey Hess2012-07-18
| | | | | | This should fix OSX/BSD issues with not noticing transfer information files with kqueue. Now that threads are used, the thread can manage the transfer slot allocation and deallocation by itself; much cleaner.
* add missing importsGravatar Joey Hess2012-07-18
|
* bugfixGravatar Joey Hess2012-07-07
|
* fix transfer slots blocking and refilling when transfers are stoppedGravatar Joey Hess2012-07-06
| | | | | There's a bug, if a transfer process notices it needs to do nothing, it never starts the transfer, so the slot is never freed.
* 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.
* fixGravatar Joey Hess2012-07-06
|
* wrote transfer threadGravatar Joey Hess2012-07-05
| | | | finally!
* add transfer watching threadGravatar Joey Hess2012-07-03
Worked the 1st try!