summaryrefslogtreecommitdiff
path: root/Assistant/Threads
Commit message (Collapse)AuthorAge
...
* fix transfers of key with no associated fileGravatar Joey Hess2014-01-23
| | | | | | | | | | | | | | | | | Several places assumed this would not happen, and when the AssociatedFile was Nothing, did nothing. As part of this, preferred content checks pass the Key around. Note that checkMatcher is sometimes now called with Just Key and Just File. It currently constructs a FileMatcher, ignoring the Key. However, if it constructed a FileKeyMatcher, which contained both, then it might be possible to speed up parts of Limit, which currently call the somewhat expensive lookupFileKey to get the Key. I have not made this optimisation yet, because I am not sure if the key is always the same. Will need some significant checking to satisfy myself that's the case..
* add webapp UI to manage unused filesGravatar Joey Hess2014-01-23
|
* allow annex.expireunused to be set to false, as well as to a durationGravatar Joey Hess2014-01-22
|
* assistant unused file handlingGravatar Joey Hess2014-01-22
| | | | | | | | | | | | | | | | | | | Make sanity checker run git annex unused daily, and queue up transfers of unused files to any remotes that will have them. The transfer retrying code works for us here, so eg when a backup disk remote is plugged in, any transfers to it are done. Once the unused files reach a remote, they'll be removed locally as unwanted. If the setup does not cause unused files to go to a remote, they'll pile up, and the sanity checker detects this using some heuristics that are pretty good -- 1000 unused files, or 10% of disk used by unused files, or more disk wasted by unused files than is left free. Once it detects this, it pops up an alert in the webapp, with a button to take action. TODO: Webapp UI to configure this, and also the ability to launch an immediate cleanup of all unused files. This commit was sponsored by Simon Michael.
* assistant: Run the periodic git gc in batch mode.Gravatar Joey Hess2014-01-22
|
* reorganize numcopies code (no behavior changes)Gravatar Joey Hess2014-01-21
| | | | | | | Move stuff into Logs.NumCopies. Add a NumCopies newtype. Better names for various serialization classes that are specific to one thing or another.
* global numcopies settingGravatar Joey Hess2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | * numcopies: New command, sets global numcopies value that is seen by all clones of a repository. * The annex.numcopies git config setting is deprecated. Once the numcopies command is used to set the global number of copies, any annex.numcopies git configs will be ignored. * assistant: Make the prefs page set the global numcopies. This global numcopies setting is needed to let preferred content expressions operate on numcopies. It's also convenient, because typically if you want git-annex to preserve N copies of files in a repo, you want it to do that no matter which repo it's running in. Making it global avoids needing to warn the user about gotchas involving inconsistent annex.numcopies settings. (See changes to doc/numcopies.mdwn.) Added a new variety of git-annex branch log file, that holds only 1 value. Will probably be useful for other stuff later. This commit was sponsored by Nicolas Pouillard.
* much better command action handling for sync --contentGravatar Joey Hess2014-01-20
|
* sync --content: New option that makes the content of annexed files be ↵Gravatar Joey Hess2014-01-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | transferred. Similar to the assistant, this honors any configured preferred content expressions. I am not entirely happpy with the implementation. It would be nicer if the seek function returned a list of actions which included the individual file gets and copies and drops, rather than the current list of calls to syncContent. This would allow getting rid of the somewhat reundant display of "sync file [ok|failed]" after the get/put display. But, do that, withFilesInGit would need to somehow be able to construct such a mixed action list. And it would be less efficient than the current implementation, which is able to reuse several values between eg get and drop. Note that currently this does not try to satisfy numcopies when getting/putting files (numcopies are of course checked when dropping files!) This makes it like the assistant, and unlike get --auto and copy --auto, which do duplicate files when numcopies is not yet satisfied. I don't know if this is the right decision; it only seemed to make sense to have this parallel the assistant as far as possible to start with, since I know the assistant works. This commit was sponsored by Øyvind Andersen Holm.
* assistant: Detect if .git/annex/index is corrupt at startup, and recover.Gravatar Joey Hess2014-01-14
|
* assistant: Set StrictHostKeyChecking yes when creating ssh remotes, and add ↵Gravatar Joey Hess2013-12-20
| | | | it to the configuration for any ssh remotes previously created by the assistant. This avoids repeated prompts by ssh if the host key changes, instead syncing with such a remote will fail. Closes: #732602
* flip for clarityGravatar Joey Hess2013-12-16
|
* assistant: Always batch changes found in startup scan.Gravatar Joey Hess2013-12-16
| | | | | | | | | | | | | | | Batch detection is heuristic, so can sometimes fail. I observed one such failure while starting up in a repository with 87000 files. After the first several batches of ~5000 files, it fell out of batch mode, and never re-entered it, and so made many more commits of a few files at a time than necessary. So, let's always use batch mode when in the startup scan. This avoids the heuristic there, at least. There is clearly also room to improve the heuristic. Possibly 10 files is too high a bar to be found during a commit, on a system that can commit quickly.
* Improve repair of git-annex index file.Gravatar Joey Hess2013-12-10
| | | | | | | | | | Fixes a test case I received where a corrupted repo was repaired, but the git-annex branch was not. The root of the problem was that the MissingObject returned by the repair code was not necessarily a complete set of all objects that might have been deleted during the repair. So, stop trying to return that at all, and instead make the index file checking code explicitly verify that each object the index uses is present.
* avoid needing --force on windows despite no lsofGravatar Joey Hess2013-12-09
| | | | | Note that I still need to think this through and make sure handling of open files is safe. This is just for testing purposes.
* close tmp file handleGravatar Joey Hess2013-12-07
| | | | May fix permission problem on windows
* avoid trying to use lsof when it's not in path and --forcedGravatar Joey Hess2013-12-04
|
* avoid repeatedly searching path to make batch command when running transferkeysGravatar Joey Hess2013-12-01
|
* Avoid using git commit in direct mode, since in some situations it will read ↵Gravatar Joey Hess2013-12-01
| | | | | | | | | | | | the full contents of files in the tree. The assistant's commit code also always avoids git commit, for simplicity. Indirect mode sync still does a git commit -a to catch unstaged changes. Note that this means that direct mode sync no longer runs the pre-commit hook or any other hooks git commit might call. The git annex pre-commit hook action for direct mode is however explicitly run. (The assistant already ran git commit with hooks disabled, so no change there.)
* merge improved fsck types from git-repair and some associated changesGravatar Joey Hess2013-11-30
|
* tested multi-daemon upgradeGravatar Joey Hess2013-11-24
|
* show version in upgrade alertGravatar Joey Hess2013-11-24
|
* add support for fully automatic upgradesGravatar Joey Hess2013-11-24
| | | | | | | | | The Upgrader avoids checking for upgrades on startup when it was just upgraded. This avoids an upgrade loop if something goes wrong. One example of something going wrong would be if the upgrade info file and the distribution file get out of sync (or the distribution file is cached in a proxy), so it thinks it has upgraded to a new version, but has really not.
* linux upgrade code debugged and workingGravatar Joey Hess2013-11-24
|
* completely untested linux upgrade codeGravatar Joey Hess2013-11-23
|
* queue and start download of git-annex from web, using git-annex, when ↵Gravatar Joey Hess2013-11-23
| | | | upgrade is started
* global webapp redirects, to finish upgradesGravatar Joey Hess2013-11-23
| | | | | | | | | | | | | | | | | When an automatic upgrade completes, or when the user clicks on the upgrade button in one webapp, but also has it open in another browser window/tab, we have a problem: The current web server is going to stop running in minutes, but there is no way to send a redirect to the web browser to the new url. To solve this, used long polling, so the webapp is always listening for urls it should redirect to. This allows globally redirecting every open webapp. Works great! Tested with 2 web browsers with 2 tabs each. May be useful for other purposes later too, dunno. The overhead is 2 http requests per page load in the webapp. Due to yesod's speed, this does not seem to noticibly delay it. Only 1 of the requests could possibly block the page load, the other is async.
* better UI flow through upgrade processGravatar Joey Hess2013-11-23
| | | | | Move button to enable automatic upgrades to an alert displayed after successful upgrade. Unclutters the UI and makes psychological sense.
* restart on upgrade is working, including automatic restartGravatar Joey Hess2013-11-23
| | | | | | | | | | Made alerts be able to have multiple buttons, so the alerts about upgrading can have a button that enables automatic upgrades. Implemented automatic upgrading when the program file has changed. Note that when an automatic upgrade happens, the webapp displays an alert about it for a few minutes, and then closes. This still needs work.
* got assistant upgrade detection to notice when I build a new version with ↵Gravatar Joey Hess2013-11-22
| | | | cabal build!
* assistant restart on upgradeGravatar Joey Hess2013-11-22
|
* watch git-annex program file to detect upgradesGravatar Joey Hess2013-11-22
| | | | | | | | | | | | | | | | | | | | | | | | Not yet wired up to restart the assistant on upgrade; that needs careful sanity checking to wait until the upgrade is done before restarting. Used the DirWatcher here, so it gets events for any changes to the directory containing the program file. (But not subdirs.) This is necessary in order to detect when the file is renamed as part of the upgrade, which an inotify on a single file would not detect. (Also, I have DirWatcher code, but not FileWatcher code.) Note that upgrades that remove or rename a whole directory tree containing the executable will *not* trigger this code. So eg, deleting and replacing the whole standalone tarball dir tree won't work -- but untarring it over top will. So should dpkg package upgrades. Added programPath, using a new GHC feature to find the full path to the executable. The fallback code for old GHC or unsupported OS is less good; its worst failure mode would be either failing to find the program, and so not checking for upgrades, or finding a git-annex that's in PATH, but is not the one running. This commit was sponsored by John Roepke.
* annex.autoupgrade settingGravatar Joey Hess2013-11-22
|
* remove debug codeGravatar Joey Hess2013-11-22
|
* fix inverted priorityGravatar Joey Hess2013-11-22
|
* use .info, allow multiple info files in same directoryGravatar Joey Hess2013-11-22
|
* upgrade alertsGravatar Joey Hess2013-11-21
| | | | | | | | | | | | | | | | | | The webapp will check twice a day, when the network is connected, to see if it can download a distributon upgrade file. If a newer version is found, display an upgrade alert. This will need the autobuilders to set UPGRADE_LOCATION to the url it can be downloaded from when building git-annex. Only builds with that set need automatic upgrade alerts. Currently, the upgrade page just requests the user manually download and upgrade it. But, all the info is provided to do automated upgrades in the future. Note that urls used will need to all be https. This commit was sponsored by Dirk Kraft.
* webapp: Check annex.version.Gravatar Joey Hess2013-11-17
|
* log missing index at notice priorityGravatar Joey Hess2013-11-13
|
* inverted logicGravatar Joey Hess2013-11-13
|
* better handling of missing index fileGravatar Joey Hess2013-11-13
|
* assistant: Notice on startup when the index file is corrupt, and auto-repair.Gravatar Joey Hess2013-11-13
|
* Improve local pairing behavior when two computers both try to start the ↵Gravatar Joey Hess2013-11-02
| | | | | | | | | | | | | | | | | pairing process separately. I was able to reproduce something very like this bug by starting pairing separately on both computers under poor network conditions (ie, weak wifi on my front porch). Neither computer showed an alert for the PairReq messages it was seeing (intermittently) from the other. So, I've made a new PairReq message that has not been seen before always make the alert pop up, even if the assistant thinks it is in the middle of its own pairing process (or even another pairing process with a different box on the LAN). (This shouldn't cause a rogue PairAck to disrupt a pairing process part way through.)
* better control character sanity checkGravatar Joey Hess2013-11-02
| | | | | | | | | The msg contains a haskell-escaped string, so control characters in it can also be escaped. So this didn't work before, really. Got rid of the \n check, because current pairing messages actually do contain a \n, after the ssh public key. Don't want to break back-compatability.
* webapp: remind user when using repositories that lack consistency checksGravatar Joey Hess2013-10-29
| | | | | | | | | | When starting up the assistant, it'll remind about the current repository, if it doesn't have checks. And when a removable drive is plugged in, it will remind if a repository on it lacks checks. Since that might be annoying, the reminders can be turned off. This commit was sponsored by Nedialko Andreev.
* add post-repair actionsGravatar Joey Hess2013-10-29
|
* fix stale git locks as part of repo repairGravatar Joey Hess2013-10-29
|
* move code around and rename thread; no functional changesGravatar Joey Hess2013-10-29
|
* automatically launch git repository repairGravatar Joey Hess2013-10-27
| | | | | | | | | | | | | | | | | | Added a RemoteChecker thread, that waits for problems to be reported with remotes, and checks if their git repository is in need of repair. Currently, only failures to sync with the remote cause a problem to be reported. This seems enough, but we'll see. Plugging in a removable drive with a repository on it that is corrupted does automatically repair the repository, as long as the corruption causes git push or git pull to fail. Some types of corruption do not, eg missing/corrupt objects for blobs that git push doesn't need to look at. So, this is not really a replacement for scheduled git repository fscking. But it does make the assistant more robust. This commit is sponsored by Fernando Jimenez.
* assistant: Support repairing git remotes that are locally accessibleGravatar Joey Hess2013-10-27
| | | | | | | | (eg, on removable drives) gcrypt remotes are not yet handled. This commit was sponsored by Sören Brunk.