Simon Frei and GitHub
dd39556759
lib: Revert needing invalid files ( fixes #7608 , ref #7476 ) ( #7609 )
2021-04-29 22:01:46 +02:00
Simon Frei and GitHub
1a00ea7c6e
lib: Prevent using protocol method with native path ( fixes #7557 ) ( #7563 )
2021-04-11 15:29:43 +02:00
Simon Frei and GitHub
3f2b584c4e
lib/model: Don't use ignore patterns for recv-enc folders ( fixes #7469 ) ( #7472 )
2021-03-16 15:04:11 +01:00
Simon Frei and GitHub
310fba4c12
lib: Return error from db.FileSet.Snapshot ( fixes #7419 , ref #5907 ) ( #7424 )
2021-03-07 13:43:22 +01:00
Simon Frei and GitHub
c0f353c0e8
lib: Do not set ModifiedBy on meta only changes ( #7345 )
2021-02-08 15:30:39 +01:00
Simon Frei and GitHub
11e9d575c8
lib/model: Refactor folder.scanSubdirs into smaller parts ( #7321 )
2021-02-08 08:40:57 +01:00
Simon Frei and GitHub
249bcb3a01
lib/model: Optimize rename detection in scanner ( #7315 )
2021-01-31 21:02:42 +01:00
Simon Frei and GitHub
b2d82da20d
lib/model: Pull when folder leaves error state ( fixes #7280 ) ( #7281 )
2021-01-14 13:29:01 +01:00
Simon Frei and GitHub
a05dc6cc47
lib/model: Cleanup redundant filesystem variables in folders ( #7237 )
2020-12-27 22:26:25 +01:00
Simon Frei and GitHub
d904dfa191
lib/model: Fix flaky test and add some scanning debug ( #7214 )
2020-12-20 18:13:35 +01:00
Simon Frei and GitHub
9524b51708
all: Implement suture v4-api ( #6947 )
2020-11-17 13:19:04 +01:00
Simon Frei and GitHub
31559e908b
all: Add untrusted folders behind feature flag (ref #62 ) ( #7055 )
2020-11-09 15:33:32 +01:00
Simon Frei and GitHub
1f1729ba43
lib/model: Add done chan to track folder-lifetime ( fixes #6664 ) ( #7094 )
2020-11-09 09:05:48 +01:00
Simon Frei and GitHub
cc9ea9db89
lib/folder: Clear pull errors when nothing is needed anymore ( #7093 )
2020-11-06 14:22:20 +01:00
Simon Frei and GitHub
1a8c10a8d0
lib/model: Use winning version instead of merge on conflict ( #6995 )
2020-10-19 08:53:19 +02:00
Simon Frei and GitHub
9d09fd6af3
all: Add failure reporting ( fixes #7028 ) ( #6925 )
2020-10-07 10:05:13 +02:00
Simon Frei and GitHub
8452fd2ab4
lib/model, lib/scanner: Prevent races aborting scans ( fixes #6994 ) ( #6997 )
2020-09-25 11:27:44 +02:00
Simon Frei and GitHub
3dd13c3994
test, lib/model: Various integration test updates & improvements ( #6956 )
2020-09-07 09:35:37 +02:00
Simon Frei and GitHub
6365e6108f
lib/model: Don't acquire I/O token for send-only pull ( #6951 )
2020-09-03 13:59:45 +02:00
Audrius Butkevicius and GitHub
d507d932b8
all: Use protobuf to generate config structs ( fixes #6734 ) ( #6900 )
2020-08-25 08:11:14 +02:00
Simon Frei and GitHub
a65b46debd
lib/model: Don't mark globally deleted items as recv-only ( fixes #6910 ) ( #6911 )
2020-08-21 12:34:22 +02:00
Simon Frei and GitHub
b628460930
lib/model: Prevent localflag flipflopping on del. item (ref #6865 ) ( #6919 )
2020-08-21 10:09:48 +02:00
Simon Frei and GitHub
cc1f6e4d4a
lib/db, lib/model: Cover exec-paths with debug logging ( #6918 )
2020-08-20 16:11:20 +02:00
Simon Frei and GitHub
a85bc1c3a6
lib/model: Check folder error before sync-waiting ( fixes #6793 ) ( #6847 )
2020-07-31 19:26:09 +02:00
Simon Frei and GitHub
e46c8ab9ee
lib/model: Detect deleted RO items scanning on non-RO ( fixes #6864 ) ( #6865 )
2020-07-30 13:41:45 +02:00
Jakob Borg and GitHub
aedc2d788f
lib/model, lib/versioner: Drive version cleanup from scanner ( fixes #6313 ) ( #6693 )
...
This change adds a separate config for the cleanup interval, and runs that cleanup from the main folder loop.
2020-07-14 10:48:50 +02:00
Simon Frei and GitHub
0648fb0626
lib/model: Don't force rescan already changed items ( #6798 )
2020-06-25 20:23:59 +02:00
Simon Frei and GitHub
f66e57947b
lib/model: Use right db snap when scanning recvonly folder ( #6769 )
2020-06-21 09:28:29 +02:00
Simon Frei and GitHub
22f0077262
lib/model: Don't stay scanning forever on fail ( #6761 )
2020-06-18 14:13:46 +01:00
Simon Frei and GitHub
8cf9d91ed4
lib: Print nicely rounded durations ( #6756 )
2020-06-18 10:55:41 +02:00
Simon Frei and GitHub
a47546a1f1
lib/scanner, lib/model: Improve error handling when scanning ( #6736 )
2020-06-16 09:25:41 +02:00
1f8e6c55f6
lib/db: Refactor to use global list by version ( fixes #6372 ) ( #6638 )
...
Group the global list of files by version, instead of having one flat list for all devices. This removes lots of duplicate protocol.Vectors.
Co-authored-by: Jakob Borg <jakob@kastelo.net >
2020-05-30 09:50:23 +02:00
Simon Frei and GitHub
ed6bfc5417
lib/model: Don't increase pull pause on triggered pull ( #6690 )
2020-05-29 09:52:28 +02:00
Jakob Borg and GitHub
651ee2ce74
lib/model: Partial revert of rename fix ( fixes #6653 ) ( #6656 )
...
We can't just drop the snap because it's in use elsewhere. This should
be equally functional.
2020-05-16 23:05:33 +02:00
Audrius Butkevicius and GitHub
a1c5b44c74
lib/model: Fix rename handling (ref #6650 ) ( #6652 )
2020-05-16 14:39:27 +02:00
Simon Frei and GitHub
974551375e
lib/db: Dont add symlinks to blocks map ( fixes #6637 ) ( #6639 )
2020-05-13 20:38:21 +02:00
Audrius Butkevicius and GitHub
decb967969
all: Reorder sequences for better rename detection ( #6574 )
2020-05-11 20:15:11 +02:00
Jakob Borg and GitHub
744ef0d8ac
lib/protocol: Avoid data loss on database wipe by higher version numbers ( fixes #3876 ) ( #6605 )
...
This makes version vector values clock based instead of just incremented
from zero. The effect is that a vector that is created from scratch
(after database reset) will have a higher value for the local device
than what it could have been previously, causing a conflict. That is, if
we are A and we had
{A: 42, B: 12}
in the old scheme, a reset and rescan would give us
{A: 1}
which is a strict ancestor of the older file (this might be wrong). With
the new scheme we would instead have
{A: someClockTime, b: otherClockTime}
and the new version after reset would become
{A: someClockTime+delta}
which is in conflict with the previous entry (better).
In case the clocks are wrong (current time is less than the value in the
vector) we fall back to just simple increment like today.
This scheme is ineffective if we suffer a database reset while at the
same time setting the clock back far into the past. It's however no
worse than what we already do.
This loses the ability to emit the "added" event, as we can't look for
the magic 1 entry any more. That event was however already broken
(#5541 ).
Another place where we infer meaning from the vector itself is in
receive only folders, but there the only criteria is that the vector is
one item long and includes just ourselves, which remains the case with
this change.
* wip
2020-05-06 08:47:02 +02:00
Simon Frei and GitHub
914eb77ca4
lib/model: Don't include iolimiter wait into sync duration ( #6593 )
2020-05-04 08:43:35 +02:00
Audrius Butkevicius and GitHub
bd0c2bf237
lib/model: Do file recheck in folder loop ( fixes #6583 ) ( #6585 )
2020-05-01 11:08:59 +02:00
Simon Frei and GitHub
6bbd24de12
lib/model: Refactor folder health/error handling ( fixes #6557 ) ( #6558 )
2020-04-21 10:15:59 +02:00
Simon Frei and GitHub
49798552f2
lib/model: Delay watch setup on errors ( fixes #5731 ) ( #6544 )
2020-04-17 17:43:42 +02:00
Simon Frei and GitHub
32245435e2
lib/model: Handle deleted items on RO for remote removes ( fixes #6432 ) ( #6464 )
2020-04-02 16:14:25 +02:00
Simon Frei and GitHub
79a758be3c
lib/model: Do Revert/Override synchronously ( #6460 )
2020-03-27 13:05:09 +01:00
Simon Frei and GitHub
f0e33d052a
lib: More contextification ( #6343 )
2020-02-24 21:57:15 +01:00
Simon Frei and GitHub
fae7425bbf
lib: Modify FileInfos consistently (ref #6321 ) ( #6349 )
2020-02-19 16:58:09 +01:00
Jakob Borg and GitHub
b61da487e4
all: Update metadata modtime on delete (ref #6284 ) ( #6315 )
...
This records the time a file was marked as deleted. It will, in the
future, aid in garbage collecting old files.
2020-02-10 10:48:30 +01:00
Jakob Borg and GitHub
55937b61ca
lib/model: Add global request limiter ( fixes #6302 ) ( #6303 )
...
This adds a new config with the simple and concise name
maxConcurrentIncomingRequestKiB. This limits how many bytes we have "in
the air" in the form of response data being read and processed.
After some testing I think that not having this limiter is seldom a
great idea and thus I propose a default value of 256 MiB for this new
setting.
I also refactored the folder IO limiter to be a model/folder attribute
instead of a package global.
2020-02-01 08:02:18 +01:00
Jakob Borg and GitHub
d91c4b010b
lib/config, lib/model: Limit concurrent pulls ( fixes #5914 ) ( #6290 )
...
Adds a new folder state "Waiting to Sync" in the same vein as the
existing "Waiting to Scan". This vastly improves performances in the
rare cases when there are lots and lots of folders operating.
2020-01-27 17:31:17 +01:00
Simon Frei and Jakob Borg
08f0e125ef
all: Transactionalize db.FileSet ( fixes #5952 ) ( #6239 )
2020-01-21 18:23:08 +01:00