Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't lock if we're only reading cache metadata #20053

Merged
merged 6 commits into from
Nov 4, 2015

Conversation

icewind1991
Copy link
Contributor

Since the db ensures we get a proper metadata snapshot we don't need to lock if we're only reading from the database.

Made possible by splitting checkUpdate so we can still lock correctly if we need to re-scan

Makes PROPFIND a non-locking operation (comparison)

cc @DeepDiver1975 @PVince81 @LukasReschke

@ghost ghost added the in progress label Oct 26, 2015
@icewind1991 icewind1991 added this to the 9.0-current milestone Oct 26, 2015
@PVince81
Copy link
Contributor

Since the db ensures we get a proper metadata snapshot

@icewind1991 can you elaborate on this ? Are we using transactions that make that snapshot possible ?

@icewind1991
Copy link
Contributor Author

Yes, when scanning we use transactions to keep things consistent

@PVince81
Copy link
Contributor

Is this guaranteed to work for all databases like for example SQlite ?
There's also a scanner code path that purposefully disables transactions (maybe occ files:scan)

@icewind1991
Copy link
Contributor Author

The behavior in relation to files:scan is unchanged since that doesn't write lock the files anyway so the read-lock in the getFileInfo wouldn't have triggered a lock excpetion

@PVince81
Copy link
Contributor

I don't see a transaction start at the beginning of getDirectoryContents(), where is it happening ?

I'm still worried that this risks bringing back the worst of the race conditions (#13391). It could happen that what's on the cache already doesn't match any more what's on disk. A concurrent process might have updated the cache + disk already, but what we observe in the new locked portion in this PR is that the disk contents doesn't match the old cached $data any more.
Basically, before this PR the lock protected the data + disk consistency but in this PR it doesn't. Or am I getting this wrong ?

How did you test this concurrently ?

@icewind1991
Copy link
Contributor Author

It could happen that what's on the cache already doesn't match any more what's on disk.

In that case it tries to update the cache, for which it does try to get a lock

While doing getFileInfo/getDirectoryContent we don't care about anyone writing to the file/folder we're getting the meta from as long as the cache data we get is in a consistent state.

I noticed one place in the cache code where we can have an inconsistent state outside a transaction (moveFromCache doesn't include the last update in the transaction for a folder) but that's an easy fix (will make PR)

@icewind1991
Copy link
Contributor Author

will make PR

#20060

@PVince81
Copy link
Contributor

What about the case where a folder rename is pending and all the DB entries for the children are still being renamed ? Say we have half of the entries renamed. At this point we don't want a "cache->get()" to be able to read either the old parent entry nor the new parent entry nor the children.

@icewind1991
Copy link
Contributor Author

We rename the childs in a folder in a transaction

@PVince81
Copy link
Contributor

Right, but the renaming on disk is done before that transaction.

Also I see here https://github.com/owncloud/core/pull/20053/files?w=1#diff-d9747e68e80ce288dcea911cb8607546R1207 needsUpdate is also outside the lock, but is accessing the disk for hasUpdated(). Could anything go wrong there too if the cache entry doesn't match what's on disk ?

@icewind1991
Copy link
Contributor Author

Right, but the renaming on disk is done before that transaction.

Which doesn't matter, we dont care about any on-disk state

@karlitschek
Copy link
Contributor

👍

@PVince81
Copy link
Contributor

@karlitschek so you too think there is no big risk with this PR ?

@karlitschek
Copy link
Contributor

@PVince81 This is risky but I think we should do this because of the big performance problems. What do yuo think?

@PVince81
Copy link
Contributor

Ok then, let's go ahead 👍

I'll assume that @icewind1991 carefully tested the concurrency cases in a way that proves his statements.

@PVince81
Copy link
Contributor

@icewind1991 can you rebase to unstuck CI ?

@PVince81
Copy link
Contributor

PVince81 commented Nov 3, 2015

Looks like there's trouble again in CI-land ?

@PVince81
Copy link
Contributor

PVince81 commented Nov 4, 2015

@icewind1991 please fix the tests:

 1) OCA\DAV\Tests\Unit\Connector\Sabre\RequestTest\EncryptionUploadTest::testUploadOverWrite
13:00:58 OCP\Lock\LockedException: "foo.txt" is locked
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1807
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1899
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1199
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/share/share.php:139
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/public/share.php:89
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/encryption/file.php:57
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:247
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:188
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:170
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:417
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:198
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1025
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:588
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/uploadtest.php:36
13:00:58 
13:00:58 Caused by
13:00:58 OCP\Lock\LockedException: "files/4ba4d90803e3ac73259f588b4213c666" is locked
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/lock/memcachelockingprovider.php:64
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/common.php:633
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/wrapper.php:572
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1804
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1899
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1199
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/share/share.php:139
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/public/share.php:89
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/encryption/file.php:57
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:247
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:188
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:170
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:417
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:198
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1025
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:588
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/uploadtest.php:36
13:00:58 
13:00:58 2) OCA\DAV\Tests\Unit\Connector\Sabre\RequestTest\EncryptionUploadTest::testUploadOverWriteReadLocked
13:00:58 stream_wrapper_register(): Protocol ocencryption:// is already defined.
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:186
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:170
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:417
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1025
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:874
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/file.php:91
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:320
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:298
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/root.php:347
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/server.php:617
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/tests/lib/traits/encryptiontrait.php:54
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/encryptionuploadtest.php:22
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/uploadtest.php:53
13:00:58 
13:00:58 3) OCA\DAV\Tests\Unit\Connector\Sabre\RequestTest\EncryptionUploadTest::testUploadOverWriteWriteLocked
13:00:58 stream_wrapper_register(): Protocol ocencryption:// is already defined.
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:186
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:170
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:417
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1025
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:874
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/file.php:91
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:320
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:298
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/root.php:347
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/server.php:617
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/tests/lib/traits/encryptiontrait.php:54
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/encryptionuploadtest.php:22
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/uploadtest.php:67
13:00:58 
13:00:58 4) OCA\DAV\Tests\Unit\Connector\Sabre\RequestTest\EncryptionUploadTest::testChunkedUpload
13:00:58 stream_wrapper_register(): Protocol ocencryption:// is already defined.
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:186
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:170
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:417
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1025
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:874
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/file.php:91
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:320
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:298
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/root.php:347
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/server.php:617
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/tests/lib/traits/encryptiontrait.php:54
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/encryptionuploadtest.php:22
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/uploadtest.php:78
13:00:58 
13:00:58 5) OCA\DAV\Tests\Unit\Connector\Sabre\RequestTest\EncryptionUploadTest::testChunkedUploadOverWrite
13:00:58 stream_wrapper_register(): Protocol ocencryption:// is already defined.
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:186
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:170
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:417
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1025
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:874
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/file.php:91
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:320
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:298
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/root.php:347
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/server.php:617
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/tests/lib/traits/encryptiontrait.php:54
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/encryptionuploadtest.php:22
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/uploadtest.php:100
13:00:58 
13:00:58 6) OCA\DAV\Tests\Unit\Connector\Sabre\RequestTest\EncryptionUploadTest::testChunkedUploadOutOfOrder
13:00:58 stream_wrapper_register(): Protocol ocencryption:// is already defined.
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:186
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:170
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:417
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1025
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:874
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/file.php:91
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:320
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:298
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/root.php:347
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/server.php:617
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/tests/lib/traits/encryptiontrait.php:54
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/encryptionuploadtest.php:22
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/uploadtest.php:121
13:00:58 
13:00:58 7) OCA\DAV\Tests\Unit\Connector\Sabre\RequestTest\EncryptionUploadTest::testChunkedUploadOutOfOrderReadLocked
13:00:58 stream_wrapper_register(): Protocol ocencryption:// is already defined.
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:186
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:170
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:417
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1025
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:874
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/file.php:91
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:320
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:298
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/root.php:347
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/server.php:617
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/tests/lib/traits/encryptiontrait.php:54
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/encryptionuploadtest.php:22
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/uploadtest.php:146
13:00:58 
13:00:58 8) OCA\DAV\Tests\Unit\Connector\Sabre\RequestTest\EncryptionUploadTest::testChunkedUploadOutOfOrderWriteLocked
13:00:58 stream_wrapper_register(): Protocol ocencryption:// is already defined.
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:186
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/stream/encryption.php:170
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/storage/wrapper/encryption.php:417
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:1025
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/view.php:874
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/file.php:91
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:320
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/util.php:298
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/files/node/root.php:347
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/lib/private/server.php:617
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/tests/lib/traits/encryptiontrait.php:54
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/encryptionuploadtest.php:22
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/apps/dav/tests/unit/connector/sabre/requesttest/uploadtest.php:171
13:00:58 
13:00:58 --
13:00:58 
13:00:58 There was 1 failure:
13:00:58 
13:00:58 1) Test\Files\Cache\Watcher::testPolicyOnce
13:00:58 Failed asserting that true is false.
13:00:58 
13:00:58 /ssd/jenkins/workspace/core-ci-linux@4/database/sqlite/label/SLAVE/tests/lib/files/cache/watcher.php:147

@icewind1991
Copy link
Contributor Author

All fixed

@PVince81
Copy link
Contributor

PVince81 commented Nov 4, 2015

Farntastic! Let's move forward with this 👍
=> "To release" @DeepDiver1975

DeepDiver1975 added a commit that referenced this pull request Nov 4, 2015
Don't lock if we're only reading cache metadata
@DeepDiver1975 DeepDiver1975 merged commit ba02a37 into master Nov 4, 2015
@DeepDiver1975 DeepDiver1975 deleted the getfileinfo-locking branch November 4, 2015 21:40
@PVince81
Copy link
Contributor

PVince81 commented Nov 5, 2015

From my understanding this perf improvement was intended for #19888 for 8.2.1.

@karlitschek we should backport this ?
@icewind1991 can you prepare the PR ?

@icewind1991
Copy link
Contributor Author

8.2: #20326

@karlitschek
Copy link
Contributor

yes. please backport 👍

@lock lock bot locked as resolved and limited conversation to collaborators Aug 8, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants