Commit graph

11655 commits

Author SHA1 Message Date
Joey Hess
e29bc2b7d7
comment 2022-12-09 12:18:37 -04:00
Joey Hess
65f9e7a3c7
fix deadlock in restagePointerFiles
Fix a hang that occasionally occurred during commands such as move.
(A bug introduced in 10.20220927, in
commit 6a3bd283b8)

The restage.log was kept locked while running a complex index refresh
action. In an unusual situation, that action could need to write to the
restage log, which caused a deadlock.

The solution is a two-stage process. First the restage.log is moved to a
work file, which is done with the lock held. Then the content of the work
file is read and processed, which happens without the lock being held.
This is all done in a crash-safe manner.

Note that streamRestageLog may not be fully safe to run concurrently
with itself. That's ok, because restagePointerFiles uses it with the
index lock held, so only one can be run at a time.

streamRestageLog does delete the restage.old file at the end without
locking. If a calcRestageLog is run concurrently, it will either see the
file content before it was deleted, or will see it's missing. Either is
ok, because at most this will cause calcRestageLog to report more
work remains to be done than there is.

Sponsored-by: Dartmouth College's Datalad project
2022-12-08 14:36:11 -04:00
Joey Hess
a7554f1a6a
analysis 2022-12-07 17:36:01 -04:00
Joey Hess
56699a7747
comment 2022-12-07 14:30:33 -04:00
Joey Hess
ac77aa40e7
speed up --pattern
The splitting of the tests into parts for parallelism made --pattern
do extra work, because init tests have to be run for each part, but
many of the parts are empty.

For example, git-annex test --pattern '/move (ssh remote)/'
took 12 seconds to run before. This improves the runtime to 4 seconds.

Sponsored-by: Dartmouth College's Datalad project
2022-12-07 13:51:22 -04:00
Joey Hess
b7ba6dfe48
comment 2022-12-07 13:00:29 -04:00
Joey Hess
8c89057006
comment 2022-12-07 12:36:58 -04:00
dckc@4f72e5f6436280fd19a91a9805af71b9921a4f9b
afa29c63c8 2022-12-07 14:46:39 +00:00
dckc@4f72e5f6436280fd19a91a9805af71b9921a4f9b
4316de0f7c line breaks 2022-12-07 14:45:36 +00:00
dckc@4f72e5f6436280fd19a91a9805af71b9921a4f9b
815db25181 Added a comment: keep me posted by email please 2022-12-07 14:40:52 +00:00
dckc@4f72e5f6436280fd19a91a9805af71b9921a4f9b
3aeb15c18b 2022-12-07 14:39:29 +00:00
yarikoptic
30d8056c26 Added a comment 2022-12-05 18:08:03 +00:00
Joey Hess
45f9c66b63
comment 2022-12-05 13:54:18 -04:00
Joey Hess
6eb0943d95
Merge branch 'master' of ssh://git-annex.branchable.com 2022-12-05 13:48:40 -04:00
Joey Hess
dddf7c7daa
comment 2022-12-05 13:30:05 -04:00
kanak@3c4f6e7d832d88751c617b25bdbac896417eb93b
31fc11771d Added a comment 2022-12-04 17:40:38 +00:00
kanak@3c4f6e7d832d88751c617b25bdbac896417eb93b
342da53d2d 2022-12-04 17:35:45 +00:00
edef
c732dc9c42 bugs/blake3_hash_support: *not* familiar enough, oops 2022-12-02 12:58:58 +00:00
edef
69dd3dcc89 submit BLAKE3 patch 2022-12-02 12:57:48 +00:00
yarikoptic
4f4234797e Added a comment 2022-11-29 22:25:43 +00:00
Joey Hess
184b8e70d3
comment 2022-11-29 17:58:59 -04:00
cnjr2
c900f3c1b5 Added a comment 2022-11-29 16:53:39 +00:00
cnjr2
a92a07b03e Added a comment: found related bug 2022-11-29 16:51:44 +00:00
Joey Hess
c29e2ed916
comment 2022-11-29 12:49:09 -04:00
Joey Hess
e7e7007e0c
explanss and close 2022-11-29 12:46:59 -04:00
cnjr2
3edc86ffe1 2022-11-29 12:29:42 +00:00
Joey Hess
2b5e6ff20a
test: Add --test-debug option
This work is supported by the NIH-funded NICEMAN (ReproNim TR&D3) project.
2022-11-28 15:12:53 -04:00
Joey Hess
022c14ec02
comment 2022-11-28 14:07:35 -04:00
beryllium@5bc3c32eb8156390f96e363e4ba38976567425ec
85ea582e2b 2022-11-24 07:11:26 +00:00
yarikoptic
e140b36fd5 initial report on stalled test 2022-11-23 03:15:51 +00:00
Joey Hess
63b33d4181
update 2022-11-18 16:23:20 -04:00
Joey Hess
3e20daccdd
more benchmarking work 2022-11-18 15:54:06 -04:00
Joey Hess
2b014f1a8b
don't frontload reconcileStaged in git-annex init
init: Avoid scanning for annexed files, which can be lengthy in a
large repository. Instead that scan is done on demand. This lets git-annex
init be run and some query commands be used in a repository without
waiting.

Note that autoinit already behaved this way, so while this will mean some
commands like git-annex get/unlock/add will do the scan the first time run,
that is not really a significant behavior change.

And, it's really better to have a consistent behavior. The reason for
the inconsistency was a strange bug discussed in
b3c4579c79. Avoiding reconcileStaged in
init will keep avoiding whatever that was.

Sponsored-by: Dartmouth College's DANDI project
2022-11-18 13:58:47 -04:00
Joey Hess
c834d2025a
queue more changes to keys db
Increasing the size of the queue 10x makes git-annex init 7% faster in a
repository with 86000 annexed files.

The memory use goes up, from 70876 kb to 85376 kb.
2022-11-18 13:29:34 -04:00
Joey Hess
8fcee4ac9d
Sped up the initial scanning for annexed files by 15%
Avoids database querying overhead when the database is newly created.

In the large repository where git-annex init took 24 seconds, this sped it
up to 20.47 seconds, a speedup of around 15%.

Sponsored-by: Dartmouth College's DANDI project
2022-11-18 13:16:57 -04:00
Joey Hess
814bb3a270
profiling and performance 2022-11-17 16:47:51 -04:00
Joey Hess
a91bf72684
Merge branch 'master' of ssh://git-annex.branchable.com 2022-11-09 16:29:16 -04:00
Joey Hess
b2cc63d5bf
export: fix multi-file delete bug
export: Fix a bug that left a file on a special remote when two files with
the same content were both deleted in the exported tree.

Case of the wrong data structure leading to the wrong result.
The DiffMap now contains all the old filenames, and all the new filenames.

Note that, when 2 files with the same content are both renamed,
it only renames the first, but deletes and re-exports the second.
Improving that is possible, but it would need to use a different temporary
filename. Anyway, that is an unusual case, and there are known to be other
unusual cases where export does not rename with maximum efficiency, IIRC.
(Or maybe this is the case that I remember?)

Sponsored-by: Dartmouth College's OpenNeuro project
2022-11-09 16:24:37 -04:00
nell@7201fe78ade251118ef3441f4e509b37cd836503
ca0c62f289 Added a comment 2022-11-09 19:51:20 +00:00
Joey Hess
56d563577f
analysis 2022-11-09 15:46:14 -04:00
Joey Hess
cdbee87a05
comment and retitle 2022-11-09 15:18:28 -04:00
Joey Hess
94ee608b2e
comment 2022-11-09 15:14:28 -04:00
Joey Hess
5409b0c5c4
close 2022-11-09 14:32:14 -04:00
nell@7201fe78ade251118ef3441f4e509b37cd836503
a219d24c8c Adding S3 special remote export bug report 2022-11-08 22:37:14 +00:00
jkniiv
9414eb0745 report on troubles with aws-0.23 and stack builds 2022-11-08 11:36:21 +00:00
Joey Hess
4f6c6114fb
avoid splitting repo tests into too small parts around -J16
The initTests have to be run once per part, and a point of diminishing
returns can be reached where more work is being done to set up for 1 or
2 tests than to run them.

This is better than a hard cap of -J8 or so, because it lets other
things than these particular tests still be parallelized at -J16.

Sponsored-by: Dartmouth College's Datalad project
2022-11-07 14:44:51 -04:00
Joey Hess
5e6cb47bd8
coment 2022-11-07 14:28:55 -04:00
Joey Hess
38e67e169d
followup 2022-11-07 12:26:04 -04:00
yarikoptic
7698e25f6f initial report on stalling test 2022-11-07 14:31:55 +00:00
xloem
8b5b078df3 2022-11-07 10:33:22 +00:00