[Kde-pim] Review Request 111885: Avoid starting a database transaction in CollectionSync when no updates are needed

Alessandro Pignotti a.pignotti at sssup.it
Mon Aug 5 14:12:19 BST 2013



> On Aug. 5, 2013, 12:29 p.m., Dan Vrátil wrote:
> > akonadi/collectionsync.cpp, line 396
> > <http://git.reviewboard.kde.org/r/111885/diff/1/?file=176245#file176245line396>
> >
> >     You can immediately "return true" here, there's no need for further checks: no matter what their result will be, you will return "true" anyway at the end


> On Aug. 5, 2013, 12:29 p.m., Dan Vrátil wrote:
> > akonadi/collectionsync.cpp, line 815
> > <http://git.reviewboard.kde.org/r/111885/diff/1/?file=176245#file176245line815>
> >
> >     CollectionFetchJob takes QObject* as the last argument, so no need to cast it to Job*

The compiler requires both side of the conditional expression to be of the same pointer type. Since a cast is needed I could as well cast both to QObject*, but it would actually be more verbose


> On Aug. 5, 2013, 12:29 p.m., Dan Vrátil wrote:
> > akonadi/collectionsync.cpp, line 410
> > <http://git.reviewboard.kde.org/r/111885/diff/1/?file=176245#file176245line410>
> >
> >     I would change this (and the following few statements) into
> >     
> >     if ( localCollection.property() != removeCollection.property() ) {
> >       return true;
> >     }
> >

I can't find the .property method documented anywhere:
http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1Collection.html


- Alessandro


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/111885/#review37115
-----------------------------------------------------------


On Aug. 5, 2013, 11:48 a.m., Alessandro Pignotti wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/111885/
> -----------------------------------------------------------
> 
> (Updated Aug. 5, 2013, 11:48 a.m.)
> 
> 
> Review request for Akonadi.
> 
> 
> Description
> -------
> 
> Rationale: Unconditionally starting a transaction on every collection
> sync has an high overhead on disk activity since transaction bookkeping
> on the database requires writing to disk. Most often collection sync are
> unnecessary since collection are rarely modified, so we end up causing a
> write to disk on an operation which would be read-only.
> 
> The proposed solution is two run the collection sync in 2 phases:
> 
> 1) Without starting a transaction, the currently known local collections
> are loaded and are compared against the received remote ones. If no
> difference is found update is stopped right away
> 
> 2) If there are differences a transaction is started, local collections
> are loaded again to guarantee consistency and the update is applied
> inside the transaction
> 
> 
> This addresses bug 322083.
>     http://bugs.kde.org/show_bug.cgi?id=322083
> 
> 
> Diffs
> -----
> 
>   akonadi/collectionsync.cpp 0b85c2be168511486b484c7fcf8de3d157e876d4 
>   akonadi/collectionsync_p.h 2ea53c5e0f2d2ce8e1a684b8f685ab6683cd1493 
> 
> Diff: http://git.reviewboard.kde.org/r/111885/diff/
> 
> 
> Testing
> -------
> 
> Code builds and collection fetching seems to be working correctly
> 
> 
> Thanks,
> 
> Alessandro Pignotti
> 
>

_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list