poboiko updated this revision to Diff 50832.
poboiko edited the summary of this revision.
poboiko added a comment.


  Explained the race condition in summary, expanded test to check if watches 
were installed correctly.
  
  I've encountered some pretty weird issue: the watch for the moved folder is 
not installed; but it is installed for all its subfolders.
  The reason is that `it.fileInfo()` returns empty `QFileInfo()` for the moved 
folder. But it works fine for all the subentries.
  That is not the issue with the previous version, because `KInotify::addWatch` 
doesn't check for `fileInfo().isDir()` explicitly: it just relies on `DirsOnly` 
flag for the iterator.
  
  There is a workaround: if I create `QFileInfo` by hand, using `QFileInfo 
fi(it.filePath())` instead of `it.fileInfo()`, everything seems to be working 
fine.
  (the test fails if I use `it.fileInfo()`, but it passes if I use this 
workaround)

REPOSITORY
  R293 Baloo

CHANGES SINCE LAST UPDATE
  https://phabricator.kde.org/D18698?vs=50776&id=50832

BRANCH
  add-watch-moved (branched from master)

REVISION DETAIL
  https://phabricator.kde.org/D18698

AFFECTED FILES
  autotests/unit/file/kinotifytest.cpp
  src/file/kinotify.cpp

To: poboiko, #baloo, #frameworks, ngraham, bruns
Cc: bruns, ngraham, kde-frameworks-devel, #baloo, ashaposhnikov, michaelh, 
astippich, spoorun, abrahams

Reply via email to