Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
die_coolen_jungs
our_own_cloud_project
Commits
fa3b6192
Commit
fa3b6192
authored
Nov 07, 2014
by
Robin Appelman
Browse files
Merge pull request #11575 from owncloud/cache-watcher-propagate
Propagate etag changes when the watcher finds a changed file
parents
e345697c
d26a427f
Changes
3
Hide whitespace changes
Inline
Side-by-side
lib/private/files/cache/updater.php
View file @
fa3b6192
...
...
@@ -30,6 +30,11 @@ class Updater {
$this
->
propagator
=
new
ChangePropagator
(
$view
);
}
public
function
propagate
(
$path
,
$time
=
null
)
{
$this
->
propagator
->
addChange
(
$path
);
$this
->
propagator
->
propagateChanges
(
$time
);
}
/**
* Update the cache for $path
*
...
...
lib/private/files/view.php
View file @
fa3b6192
...
...
@@ -903,6 +903,7 @@ class View {
$scanner
->
scan
(
$internalPath
,
Cache\Scanner
::
SCAN_SHALLOW
);
$data
=
$cache
->
get
(
$internalPath
);
}
else
if
(
$watcher
->
checkUpdate
(
$internalPath
,
$data
))
{
$this
->
updater
->
propagate
(
$path
);
$data
=
$cache
->
get
(
$internalPath
);
}
...
...
@@ -974,6 +975,7 @@ class View {
$scanner
->
scan
(
$internalPath
,
Cache\Scanner
::
SCAN_SHALLOW
);
$data
=
$cache
->
get
(
$internalPath
);
}
else
if
(
$watcher
->
checkUpdate
(
$internalPath
,
$data
))
{
$this
->
updater
->
propagate
(
$path
);
$data
=
$cache
->
get
(
$internalPath
);
}
...
...
tests/lib/files/view.php
View file @
fa3b6192
...
...
@@ -8,6 +8,7 @@
namespace
Test\Files
;
use
OC\Files\Cache\Watcher
;
use
OC\Files\Storage\Temporary
;
class
TemporaryNoTouch
extends
\
OC\Files\Storage\Temporary
{
public
function
touch
(
$path
,
$mtime
=
null
)
{
...
...
@@ -652,6 +653,36 @@ class View extends \PHPUnit_Framework_TestCase {
$this
->
assertSame
(
$info
[
'etag'
],
$info2
[
'etag'
]);
}
public
function
testWatcherEtagCrossStorage
()
{
$storage1
=
new
Temporary
(
array
());
$storage2
=
new
Temporary
(
array
());
$scanner1
=
$storage1
->
getScanner
();
$scanner2
=
$storage2
->
getScanner
();
$storage1
->
mkdir
(
'sub'
);
\
OC\Files\Filesystem
::
mount
(
$storage1
,
array
(),
'/test/'
);
\
OC\Files\Filesystem
::
mount
(
$storage2
,
array
(),
'/test/sub/storage'
);
$past
=
time
()
-
100
;
$storage2
->
file_put_contents
(
'test.txt'
,
'foobar'
);
$scanner1
->
scan
(
''
);
$scanner2
->
scan
(
''
);
$view
=
new
\
OC\Files\View
(
''
);
$storage2
->
getWatcher
(
''
)
->
setPolicy
(
Watcher
::
CHECK_ALWAYS
);
$oldFileInfo
=
$view
->
getFileInfo
(
'/test/sub/storage/test.txt'
);
$oldFolderInfo
=
$view
->
getFileInfo
(
'/test'
);
$storage2
->
getCache
()
->
update
(
$oldFileInfo
->
getId
(),
array
(
'storage_mtime'
=>
$past
));
$view
->
getFileInfo
(
'/test/sub/storage/test.txt'
);
$newFolderInfo
=
$view
->
getFileInfo
(
'/test'
);
$this
->
assertNotEquals
(
$newFolderInfo
->
getEtag
(),
$oldFolderInfo
->
getEtag
());
}
/**
* @dataProvider absolutePathProvider
*/
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment