Commit graph

26649 commits

Author SHA1 Message Date
divergentdave@5c17d06f6d67c6f157b76a4cc95ca764b7d2f899
9aaa072d26 Added a comment 2015-12-24 22:44:16 +00:00
divergentdave@5c17d06f6d67c6f157b76a4cc95ca764b7d2f899
b783c481ef 2015-12-24 22:32:23 +00:00
Joey Hess
7c02f070b1
lost some bookkeeping info
I forgot to convert this to use Annex.Ingest, todo later.
2015-12-24 13:15:26 -04:00
Joey Hess
9d3474ef1b
unused import 2015-12-24 13:07:42 -04:00
Joey Hess
c21567dfd3
typo 2015-12-24 13:06:03 -04:00
Joey Hess
f87aaa57b4
Merge branch 'master' of ssh://git-annex.branchable.com 2015-12-23 19:41:11 -04:00
Joey Hess
dcb0ec50fd
devblog 2015-12-23 19:40:39 -04:00
Joey Hess
f839d407e3
flush keys db queue even on exception
Also fixed a bug in makeRunner; run' leaves the mvar empty so have to
refill it.
2015-12-23 19:38:18 -04:00
Joey Hess
4224fae71f
optimise read and write for Keys database (untested)
Writes are optimised by queueing up multiple writes when possible.
The queue is flushed after the Annex monad action finishes. That makes it
happen on program termination, and also whenever a nested Annex monad action
finishes.

Reads are optimised by checking once (per AnnexState) if the database
exists. If the database doesn't exist yet, all reads return mempty.

Reads also cause queued writes to be flushed, so reads will always be
consistent with writes (as long as they're made inside the same Annex monad).
A future optimisation path would be to determine when that's not necessary,
which is probably most of the time, and avoid flushing unncessarily.

Design notes for this commit:

- separate reads from writes
- reuse a handle which is left open until program
  exit or until the MVar goes out of scope (and autoclosed then)
- writes are queued
  - queue is flushed periodically
  - immediate queue flush before any read
  - auto-flush queue when database handle is garbage collected
  - flush queue on exit from Annex monad
    (Note that this may happen repeatedly for a single database connection;
    or a connection may be reused for multiple Annex monad actions,
    possibly even concurrent ones.)
- if database does not exist (or is empty) the handle
  is not opened by reads; reads instead return empty results
- writes open the handle if it was not open previously
2015-12-23 19:18:52 -04:00
Joey Hess
959b060e26
allow flushDbQueue to be run repeatedly 2015-12-23 16:36:08 -04:00
Joey Hess
d43ac8056b
auto-close database connections when MVar is GCed 2015-12-23 16:11:36 -04:00
Joey Hess
6d38f54db4
split out Database.Queue from Database.Handle
Fsck can use the queue for efficiency since it is write-heavy, and only
reads a value before writing it. But, the queue is not suited to the Keys
database.
2015-12-23 14:59:58 -04:00
mark@6b90344cdab3158eacb94a3944460d138afc9bef
6b394a5b36 Added a comment: Centralized server with separate remote 2015-12-23 17:59:49 +00:00
CandyAngel
b0518fe3ce Added a comment 2015-12-23 12:46:37 +00:00
Joey Hess
1f6c0be2b2
devblog 2015-12-22 18:22:24 -04:00
Joey Hess
b3690c4499
update 2015-12-22 18:19:32 -04:00
Joey Hess
39048e4568
Merge branch 'master' into smudge 2015-12-22 18:10:40 -04:00
Joey Hess
a82b7d0044
update 2015-12-22 18:04:43 -04:00
Joey Hess
0c03629173
clean up cruft in assistant fast rename code path 2015-12-22 18:03:47 -04:00
Joey Hess
c4152654d2
combine PendingAddChanges for the same file into one
In v6 unlocked mode, this fixes a problem that was making eg,
echo > file cause the assistant to copy the file to the annex object,
instead of hard linking it. That because 2 change events were seen
(one for opening the file and one for closing) and processed together
the file was then locked down twice. Which meant it had mutiple hard links,
and so prevented linkAnnex from hard linking it.

There might be scenarios where multiple events come in, but staggered such
that a file gets locked down repeatedly, and it would still be copied to
the annex object in that case.
2015-12-22 17:52:39 -04:00
Joey Hess
d8a8c77a8f
move cleanOldKey into ingest 2015-12-22 16:55:49 -04:00
Joey Hess
cfaac52b88
populate unlocked files with newly available content when ingesting
This can happen when ingesting a new file in either locked or unlocked
mode, when some unlocked files in the repo use the same key, and the
content was not locally available before.
2015-12-22 16:22:28 -04:00
Joey Hess
4f60234690
finish v6 support for assistant
Seems to basically work now!
2015-12-22 15:23:27 -04:00
Joey Hess
4392140946
make linkAnnex detect when the file changes as it's being copied/linked in
This fixes a race where the modified file ended up in annex/objects, and
the InodeCache stored in the database was for the modified version, so
git-annex didn't know it had gotten modified.

The race could occur when the smudge filter was running; now it gets the
InodeCache before generating the Key, which avoids the race.
2015-12-22 15:20:03 -04:00
Joey Hess
8e9608d7f0
refactoring
no behavior changes
2015-12-22 13:42:58 -04:00
Joey Hess
95971475c7
link to neurodebian standalone deb 2015-12-22 12:34:28 -04:00
Joey Hess
9eb96e8e84
remove obsolte note about sid package being out of date 2015-12-22 12:31:58 -04:00
Joey Hess
19f78dc76b
Merge branch 'master' of ssh://git-annex.branchable.com 2015-12-22 12:22:03 -04:00
Joey Hess
2dce8081a6
addurl: Added --with-files option. 2015-12-22 12:20:39 -04:00
Joey Hess
03f2ae0423
refactor 2015-12-22 11:58:59 -04:00
Joey Hess
ca2c977704
wip v6 support for assistant
Files are not yet added to v6 repos in unlocked mode.
2015-12-21 18:41:15 -04:00
Joey Hess
4cf9efb51a
remove (v6) associated file in unannex 2015-12-21 18:00:48 -04:00
Joey Hess
d82b110da8
Merge branch 'master' into smudge 2015-12-21 17:12:46 -04:00
https://me.yahoo.com/a/EbvxpTI_xP9Aod7Mg4cwGhgjrCrdM5s-#7c0f4
24419103f3 2015-12-21 19:50:38 +00:00
frost.kristian@75a6b6a25121f985cd8708f98c691d41716ac720
082ae2083c Added a comment 2015-12-21 17:47:13 +00:00
Joey Hess
d3240f4622
Merge branch 'master' of ssh://git-annex.branchable.com 2015-12-21 12:57:20 -04:00
Joey Hess
a8b398c1fa
addurl: Added --batch option. 2015-12-21 12:57:13 -04:00
https://me.yahoo.com/a/EbvxpTI_xP9Aod7Mg4cwGhgjrCrdM5s-#7c0f4
7505f0970a Added a comment 2015-12-21 15:46:53 +00:00
Joey Hess
a1927c6adb
Merge branch 'master' of ssh://git-annex.branchable.com 2015-12-21 11:34:51 -04:00
cbaines
b032015f57 Added a comment 2015-12-21 13:33:34 +00:00
frost.kristian@75a6b6a25121f985cd8708f98c691d41716ac720
f67862644b Added a comment 2015-12-21 13:08:49 +00:00
cbaines
6eedcc3a3e Added a comment 2015-12-21 12:40:52 +00:00
cbaines
8def2688c4 Added a comment 2015-12-21 12:32:55 +00:00
https://openid.stackexchange.com/user/e65e6d0e-58ba-41de-84cc-1f2ba54cf574
bbfa501f4a Added a comment 2015-12-21 06:02:21 +00:00
jhannwong@c9c7a67b5632a4bbc0c959cfeb3d340e02f28565
466a249291 Added a comment: A problem with SmartGit then? 2015-12-21 03:21:59 +00:00
frost.kristian@75a6b6a25121f985cd8708f98c691d41716ac720
29ea9f3782 2015-12-20 21:43:57 +00:00
sts
3bd5cbc131 Added a comment 2015-12-20 19:49:27 +00:00
Joey Hess
b6ac443b60
fix build warnings under ghc 7.10
Caused by AMP.. Since I've finally upgraded my dev laptop to 7.10,
I may start missing imports that are not needed with it but are with older
versions..
2015-12-19 17:42:45 -04:00
Joey Hess
4e226d2cd2
update 2015-12-19 14:33:10 -04:00
Joey Hess
02dc62e2d3
reuse comment 2015-12-19 14:29:40 -04:00