1
0
mirror of https://github.com/chylex/Nextcloud-Desktop.git synced 2024-10-31 11:42:48 +01:00
Commit Graph

16366 Commits

Author SHA1 Message Date
Jocelyn Turcotte
efb6b8c2c9 [overlays] Fix folders appearing as OK even though children are still syncing #4797
This would happen if the directory would first need to be created
through an mkdir propagation job. This job's itemCompleted signal
would trigger the directory to show as SYNC even though its children
are still propagating.

Fix the issue by tracking the sync count for each file, affecting
its parents. This allows us to get rid of the O(n) vector lookup
for each status query, and properly track the hierachical sync
status of a directory.

This also removes the itemCompleted signal emission from the
PropagateDirectory job. Since we only needed for overlay icons, and
since this job doesn't do any direct propagation, we can remove it
to ensure that we won't call itemCompleted twice for the item attached
to Propagate*Mkdir jobs (since the PropagateDirectory is backed by
the same SyncFileItem, instruction and status).
2016-08-17 15:40:02 +02:00
Jocelyn Turcotte
e974771796 csync: Use an explicit instruction for should_update_metadata
The current way of tracking the need to update the metadata without
propagation using a separate flag makes it difficult to track
priorities between the local and remote tree. The logic is also
difficult to logically cover since the possibilities matrix isn't
100% covered, leaving the flag only used in a few situations
(mostly involving folders, but not only).

The reason we need to change this is to be able to track the sync
state of files for overlay icons. The instruction alone can't be
used since CSYNC_INSTRUCTION_SYNC is used for folders even though
they won't be propagated. Removing this logic is however not possible
without using something else than CSYNC_INSTRUCTION_NONE since too
many codepath interpret (rightfully) this as meaning "nothing to do".

This patch adds a new CSYNC_INSTRUCTION_UPDATE_METADATA instruction
to let the update and reconcile steps tell the SyncEngine to update
the metadata of a file without any propagation. Other flags are left
to be interpretted by the implementation as implicitly needing
metadata update or not, as this was already the case for most file
propagation jobs. For example, CSYNC_INSTRUCTION_NEW for directories
now also implicitly update the metadata.

Since it's not impossible for folders to emit CSYNC_INSTRUCTION_SYNC
or CSYNC_INSTRUCTION_CONFLICT, the corresponding code paths in the
sync engine have been removed.

Since the reconcile step can now know if the local tree needs metadata
update while the remote side might want propagation, the
localMetadataUpdate logic in SyncEngine::treewalkFile now simply use
a CSYNC_INSTRUCTION_UPDATE_METADATA for the local side, which is now
implemented as a different database query.
2016-08-17 15:39:31 +02:00
Jocelyn Turcotte
82ef1bcfe0 Make sure that we invalidate parents on blacklisted items
Add a missing call that we currently only do in slotItemCompleted.
This would normally only affect the first sync and would have
gotten properly update at the end of the sync anyway.
2016-08-17 15:39:30 +02:00
Jocelyn Turcotte
b7ff4a76e8 Add TestSyncEngine and TestSyncFileStatusTracker auto tests
To be able to test the SyncEngine efficiently, a set of server
mocking classes have been implemented on top of QNetworkAccessManager.

The local disk side hasn't been mocked since this would require adding
a large abstraction layer in csync. The SyncEngine is instead pointed
to a different temporary dir in each test and we test by interacting
with files in this directory instead.

The FakeFolder object wraps the SyncEngine with those abstractions
and allow controlling the local files, and the fake remote state
through the FileModifier interface, using a FileInfo tree structure
for the remote-side implementation as well as feeding and comparing
the states on both side in tests.

Tests run fast and require no setup to be run, but each server feature
that we want to test on the client side needs to be implemented in
this fake objects library. For example, the OC-FileId header isn't
set as of this commit, and we can't test the file move logic properly
without implementing it first.

The TestSyncFileStatusTracker tests already contain a few QEXPECT_FAIL
for what I esteem being issues that need to be fixed in order to catch
up on our test coverage without making this patch too huge.
2016-08-17 15:39:30 +02:00
Jenkins for ownCloud
465639af82 [tx-robot] updated from transifex 2016-08-17 02:18:31 +02:00
Jenkins for ownCloud
7f59dec0bb [tx-robot] updated from transifex 2016-08-17 01:15:16 +02:00
Jenkins for ownCloud
583f9586aa [tx-robot] updated from transifex 2016-08-16 02:18:31 +02:00
Jocelyn Turcotte
2507ba9818 tx.pl: Fix each put_to_dir taking 10 seconds
The open function expects a URL, passing only the directory name would
lead HTTP::DAV to try looking it as an hostname on the network and
only return after it timed out.
2016-08-15 15:35:53 +02:00
ckamm
88cd5421bf Tray menu: Update only on demand #4990 #4985 (#5072)
The tray menu is now only updated when it becomes visible or while
it is visible.
2016-08-15 13:42:56 +02:00
ckamm
7b26e6b8f9 Progress: Don't display unlikely estimates #5046 (#5066) 2016-08-15 13:36:53 +02:00
Jenkins for ownCloud
573d942969 [tx-robot] updated from transifex 2016-08-15 02:18:30 +02:00
Jenkins for ownCloud
1a454ec6b2 [tx-robot] updated from transifex 2016-08-15 01:15:15 +02:00
Jenkins for ownCloud
02df088843 [tx-robot] updated from transifex 2016-08-14 02:18:30 +02:00
Jenkins for ownCloud
ce4daaaae2 [tx-robot] updated from transifex 2016-08-13 01:15:24 +02:00
Jenkins for ownCloud
cd9335e043 [tx-robot] updated from transifex 2016-08-12 02:18:30 +02:00
Jenkins for ownCloud
775ad25be3 [tx-robot] updated from transifex 2016-08-12 01:16:28 +02:00
Jenkins for ownCloud
7e43fe599c [tx-robot] updated from transifex 2016-08-12 01:15:20 +02:00
Jenkins for ownCloud
20531e57a8 [tx-robot] updated from transifex 2016-08-11 02:18:39 +02:00
Jenkins for ownCloud
3e64840e33 [tx-robot] updated from transifex 2016-08-11 01:16:34 +02:00
Jenkins for ownCloud
e6db2ee960 [tx-robot] updated from transifex 2016-08-11 01:15:18 +02:00
Markus Goetz
be34bfb276 issue_template.md: Clarifying comment 2016-08-10 14:44:19 +02:00
Jenkins for ownCloud
e2e16aeaaa [tx-robot] updated from transifex 2016-08-10 02:18:38 +02:00
Jenkins for ownCloud
6fbeb60d86 [tx-robot] updated from transifex 2016-08-10 01:16:38 +02:00
Thomas Müller
a46a69f250 [2.2] Jenkinsfile: Add win32 build (#5091) (#5115) 2016-08-09 16:20:32 +02:00
Daniel Molkentin
bb5c2cbfa5 Always follow redirects in network jobs (#4905)
This is a move away from the original policy where jobs
would only follow redirects in special cases.

Two restrictions are in place:

1. We do not allow protocol downgrades (https -> http)
2. We stop redirects after we find them looping (e.g. old = new url, or
indirectly when looping 10 times).

This is closer to RFC conforming behavior, although currently
we will treat 301 replies like they were 302. This is for a separate
commit.

Error handling (and display) also needs improvement.

Addresses #2791
2016-08-09 16:01:29 +02:00
Jenkins for ownCloud
60904496d2 [tx-robot] updated from transifex 2016-08-09 15:12:31 +02:00
Thomas Müller
94c9a2cca1 Jenkinsfile: Add win32 build (#5091) 2016-08-09 15:06:17 +02:00
Jenkins for ownCloud
3187a22300 [tx-robot] updated from transifex 2016-08-09 02:18:41 +02:00
Markus Goetz
9626021a63 Update ChangeLog for 2.2.3 final 2016-08-08 15:39:49 +02:00
Jenkins for ownCloud
b72a19ad64 [tx-robot] updated from transifex 2016-08-08 02:18:35 +02:00
Markus Goetz
2ae37c6beb Update ChangeLog 2016-08-07 22:51:16 +02:00
Jenkins for ownCloud
f8f376ac03 [tx-robot] updated from transifex 2016-08-07 02:18:30 +02:00
Jenkins for ownCloud
632d231435 [tx-robot] updated from transifex 2016-08-06 02:18:34 +02:00
Markus Goetz
fc868d89f3 Merge pull request #5108 from owncloud/limit_library_path
Limit Qt and OpenSSL Library pathes to the install directory
2016-08-05 16:39:04 +02:00
Daniel Molkentin
5a57e4a7a6 Ensure OpenSSL config file is only read from app dir 2016-08-05 16:38:08 +02:00
Jenkins for ownCloud
70a1671dc1 [tx-robot] updated from transifex 2016-08-05 14:23:25 +02:00
Daniel Molkentin
7de70516f1 Fix module loading 2016-08-05 12:35:52 +02:00
Jenkins for ownCloud
50bd4b8f4f [tx-robot] updated from transifex 2016-08-05 02:18:30 +02:00
Olivier Goffart
4a7f3cb486 SyncEngine: Fix detection of backup (#5104)
Once upon a time, the SyncEngine was instantiated once per sync. But now that
the SyncEngine is kept between sync, we need to reset all these variable between
syncs.
2016-08-04 16:06:10 +02:00
Jenkins for ownCloud
b7663d00b9 [tx-robot] updated from transifex 2016-08-04 02:18:35 +02:00
Jocelyn Turcotte
b307f2b65c Revert "Fix a deadlock when shutting down during discovery" (#5100)
Reverts commit 622017adcf

Could be the cause of #5092 and the cost is higher than the benefit if this is the case.
A network request taking more than 30 seconds isn't something unlikely in this world
and shouldn't be a good reason to abort. We should try to untangle the threads
dependencies to properly fix this if possible instead.
2016-08-03 16:35:24 +02:00
Jenkins for ownCloud
6c94d56b53 [tx-robot] updated from transifex 2016-08-03 02:18:37 +02:00
Olivier Goffart
73a6939b70 ownsql: handle QByteArray without converting to QString (#5097)
QByteArray is used for checksum
2016-08-02 11:39:08 +02:00
Olivier Goffart
88e5a9411a SyncEngine: Reads the data-fingerprint property (#5056)
When it changes, assume a backup was recovered, and keep conflict files.

Issues: #2325 and https://github.com/owncloud/enterprise/issues/966
2016-08-02 10:30:49 +02:00
Jenkins for ownCloud
c51a80bffa [tx-robot] updated from transifex 2016-08-02 02:18:35 +02:00
Thomas Müller
87f4f70abb Merge pull request #5069 from owncloud/Jenkinsfile-2.2
[2.2] Add Jenkinsfile (#5041)
2016-08-01 12:41:04 +02:00
Olivier Goffart
19a52b9e6b Qt4: don't require a X server in the tests
Issue #5069

(cherry picked from commit 927a8b5071 and
a4310f0f5c)
2016-08-01 11:57:21 +02:00
Jenkins for ownCloud
4ea70ebd18 [tx-robot] updated from transifex 2016-08-01 02:48:18 +02:00
Jenkins for ownCloud
d58c392d93 [tx-robot] updated from transifex 2016-08-01 01:16:19 +02:00
Jenkins for ownCloud
b9a6970282 [tx-robot] updated from transifex 2016-07-31 02:50:05 +02:00