summaryrefslogtreecommitdiff
path: root/Assistant/Types
Commit message (Collapse)AuthorAge
* webapp: Better display of added files.Gravatar Joey Hess2013-07-10
|
* moved AssociatedFile definitionGravatar Joey Hess2013-07-04
|
* fix minor memory leak caused by recent CanPush changeGravatar Joey Hess2013-05-22
| | | | Putting the UUID in meant that equivilant CanPush messages no longer are ==
* add two long-running XMPP push threads, no more inversion of controlGravatar Joey Hess2013-05-22
| | | | | | | | | I hope this will be easier to reason about, and less buggy. It was certianly easier to write! An immediate benefit is that with a traversable queue of push requests to select from, the threads can be a lot fairer about choosing which client to service next.
* avoid building up a lot of threads all waiting for their chance to run a pushGravatar Joey Hess2013-05-22
| | | | | Only 2 threads are needed, one running, and one waiting to push something new. Any more is redundant and wasteful.
* XMPP: Avoid redundant and unncessary pushes. Note that this breaks ↵Gravatar Joey Hess2013-05-21
| | | | compatibility with previous versions of git-annex, which will refuse to accept any XMPP pushes from this version.
* per-client inboxes for push messagesGravatar Joey Hess2013-05-21
| | | | | | | | | | | This will avoid losing any messages received from 1 client when a push involving another client is running. Additionally, the handling of push initiation is improved, it's no longer allowed to run multiples of the same type of push to the same client. Still stalls sometimes :(
* XMPP: Be better at responding to CanPush messages when busy with something else.Gravatar Joey Hess2013-05-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Observed: With 2 xmpp clients, one would sometimes stop responding to CanPush messages. Often it was in the middle of a receive-pack of its own (or was waiting for a failed one to time out). Now these are always immediately responded to, which is fine; the point of CanPush is to find out if there's another client out there that's interested in our push. Also, in queueNetPushMessage, queue push initiation messages when we're already running the side of the push they would initiate. Before, these messages were sent into the netMessagesPush channel, which was wrong. The xmpp send-pack and receive-pack code discarded such messages. This still doesn't make XMPP push 100% robust. In testing, I am seeing it sometimes try to run two send-packs, or two receive-packs at once to the same client (probably because the client sent two requests). Also, I'm seeing rather a lot of cases where it stalls out until it runs into the 120 second timeout and cancels a push. And finally, there seems to be a bug in runPush. I have logs that show it running its setup action, but never its cleanup action. How is this possible given its use of E.bracket? Either some exception is finding its way through, or the action somehow stalls forever. When this happens, one of the 2 clients stops syncing.
* add uuid to all xmpp messagesGravatar Joey Hess2013-04-30
| | | | | | | | | | | | | | | | | | (Except for the actual streaming of receive-pack through XMPP, which can only run once we've gotten an appropriate uuid in a push initiation message.) Pushes are now only initiated when the initiation message comes from a known uuid. This allows multiple distinct repositories to use the same xmpp address. Note: This probably breaks initial push after xmpp pairing, because at that point we may not know about the paired uuid, and so reject the push from it. It won't break in simple cases, because the annex-uuid of the remote is checked. However, when there are multiple clients behind a single xmpp address, only uuid of the first is recorded in annex-uuid, and so any pushes from the others will be rejected (unless the first remote pushes their uuids to us beforehand.
* use DList for the transfer queueGravatar Joey Hess2013-04-25
| | | | | Some nice efficiency gains here for list appending, although mostly the small size of the transfer queue makes them irrelivant.
* use a DList for the deferred downloads queueGravatar Joey Hess2013-04-25
|
* assistant: Sanitize XMPP presence information logged for debugging.Gravatar Joey Hess2013-04-24
|
* fix 5244ab7656e2269676cf6296718c8e5243c5b919Gravatar Joey Hess2013-04-24
| | | | Converted back to the wrong type, oops.
* remove last use of TSetGravatar Joey Hess2013-04-24
|
* convert PendingAddChange back to Change when an add failsGravatar Joey Hess2013-04-24
| | | | | | | If an add failed, we should lose the KeySource, since it, presumably, differs due to a change that was made to the file. (The locked down file is already deleted.)
* use TList for ChangePoolGravatar Joey Hess2013-04-24
|
* more efficient data type for ChangeChanGravatar Joey Hess2013-04-23
| | | | | | | | | | Making this a tset of lists of Changes, rather than a tset of Changes makes refilling it, in batch mode, much more efficient. Rather than needing to add every Change it's collected one at a time, it can add them in one fast batch operation. It would be more efficient yet to use a Set, but that would need an Eq instance for InodeCache.
* assistant: Added sequence numbers to XMPP git push packets. (Not yet used.)Gravatar Joey Hess2013-04-10
| | | | | | | For backwards compatability, "" is treated as "0" sequence number. --debug will show xmpp sequence numbers now, but they are not otherwise used.
* animate syncing and other activity iconsGravatar Joey Hess2013-04-08
|
* refactor alert button creation codeGravatar Joey Hess2013-04-04
|
* clean up urlrenderer handling when the webapp is not builtGravatar Joey Hess2013-04-03
|
* hlintGravatar Joey Hess2013-04-03
|
* assistant: Check small files into git directly.Gravatar Joey Hess2013-03-29
|
* maintain pools of running transferkeys processes (untested)Gravatar Joey Hess2013-03-19
|
* move display of transfer scan in progress to transfers section of dashboardGravatar Joey Hess2013-03-19
| | | | | This way it's only visible when transfers are not running, which is about what a user would expect.
* xmpp: --debug now enables a sanitized dump of the XMPP protocolGravatar Joey Hess2013-03-16
| | | | So I can debug these damn google talk presence issues.
* webapp: Display an alert when there are XMPP remotes, and a cloud transfer ↵Gravatar Joey Hess2013-03-15
| | | | repository needs to be configured.
* split cost out into its own moduleGravatar Joey Hess2013-03-13
| | | | | Added a function to insert a new cost into a list, which could be used to asjust costs after a drag and drop.
* synthesize RmChange when a directory is deletedGravatar Joey Hess2013-03-11
| | | | | This gets directory renames closer to being fully detected. There's close to no extra overhead to doing it this way.
* fix changeFile to not be partialGravatar Joey Hess2013-03-11
| | | | That led to runtime crashes, without even a warning from -Wall. Yipes!
* assistant: generate better commits for renamesGravatar Joey Hess2013-03-10
|
* moved transfer queueing out of watcher and into committerGravatar Joey Hess2013-03-10
| | | | | | | | | | | | | This cleaned up the code quite a bit; now the committer just looks at the Change to see if it's a change that needs to have a transfer queued for it. If I later want to add dropping keys for files that were removed, or something like that, this should make it straightforward. This also fixes a bug. In direct mode, moving a file out of an archive directory failed to start a transfer to get its content. The problem was that the file had not been committed to git yet, and so the transfer code didn't want to touch it, since fileKey failed to get its key. Only starting transfers after a commit avoids this problem.
* show when not connected to xmpp serverGravatar Joey Hess2013-03-06
|
* assistant: XMPP git pull and push requests are cached and sent when presence ↵Gravatar Joey Hess2013-03-06
| | | | | | | | | | | | | | | of a new client is detected. Noticed that, At startup or network reconnect, git push messages were sent, often before presence info has been gathered, so were not sent to any buddies. To fix this, keep track of which buddies have seen such messages, and when new presence is received from a buddy that has not yet seen it, resend. This is done only for push initiation messages, so very little data needs to be stored.
* tag xmpp pushes with jidGravatar Joey Hess2013-03-06
| | | | | | | | | | This fixes the issue mentioned in the last commit. Turns out just collecting UUID of clients behind a XMPP remote is insufficient (although I should probably still do it for other reasons), because a single remote repo might be connected via both XMPP and local pairing. So a way is needed to know when a push was received from any client using a given XMPP remote over XMPP, as opposed to via ssh.
* assistant: Get back in sync with XMPP remotes after network reconnection, ↵Gravatar Joey Hess2013-03-06
| | | | | | | | | | | | | | | | | | | | | and on startup. Make manualPull send push requests over XMPP. When reconnecting with remotes, those that are XMPP remotes cannot immediately be pulled from and scanned, so instead maintain a set of (probably) desynced remotes, and put XMPP remotes on it. (This set could be used in other ways later, if we can detect we're out of sync with other types of remotes.) The merger handles detecting when a XMPP push is received from a desynced remote, and triggers a scan then, if they have in fact diverged. This has one known bug: A single XMPP remote can have multiple clients behind it. When this happens, only the UUID of one client is recorded as the UUID of the XMPP remote. Pushes from the other XMPP clients will not trigger a scan. If the client whose UUID is expected responds to the push request, it'll work, but when that client is offline, we're SOL.
* webapp: Now allows restarting any threads that crash.Gravatar Joey Hess2013-01-26
|
* use async to track and manage threadsGravatar Joey Hess2013-01-26
|
* log alerts in notice mode, which is enabled by defaultGravatar Joey Hess2013-01-15
|
* automatic repolist updatingGravatar Joey Hess2012-11-13
|
* don't try to transfer data to/from XMPP remotesGravatar Joey Hess2012-11-11
| | | | | Partition syncRemotes into ones needing git sync (ie, non-special remotes), and ones needing data sync (ie, non-XMPP remotes).
* allow both one push and one receive-pack to run at the same timeGravatar Joey Hess2012-11-11
| | | | | | Noticed that when pairing, sometimes both sides start to push, and the other side sends a PushRequest, and the two deadlock, neither doing anything. (Timeout eventually breaks this.) So, let both run at the same time.
* separate data type for push stagesGravatar Joey Hess2012-11-10
| | | | This improves type safety.
* on second thought, do allow deferring StartingPushGravatar Joey Hess2012-11-10
| | | | | | My reasoning is that StartingPush could be received after another push starts being received, and it would be better to respond to it afterwards than not.
* fix deferring of CanPush, and stop deferring StartingPushGravatar Joey Hess2012-11-10
|
* add canpush xmpp commandGravatar Joey Hess2012-11-09
|
* xmpp push control flowGravatar Joey Hess2012-11-08
| | | | | | | | | It might even work, although nothing yet triggers XMPP pushes. Also added a set of deferred push messages. Only one push can run at a time, and unrelated push messages get deferred. The set will never grow very large, because it only puts two types of messages in there, that can only vary in the client doing the push.
* renameGravatar Joey Hess2012-11-08
|
* hooked up XMPP git push send/receive (but not yet control flow)Gravatar Joey Hess2012-11-08
|
* data types and xml generation/parsing for xmpp pushGravatar Joey Hess2012-11-07
|