Reading scope models sometimes produces lots of criticals

Bug #1255180 reported by Michal Hruby
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Unity
Invalid
Undecided
Unassigned
dee
Invalid
Undecided
Unassigned
unity (Ubuntu)
Invalid
Undecided
Unassigned
unity8 (Ubuntu)
Invalid
High
Nick Dedekind

Bug Description

In some cases shell gets into a situation where the results in the dee model are not properly synchronized with the qt model, which can cause the qt wrapper to try reading (now) invalid rows.

This was identified to be caused because of the way the scope results model works and how its qt wrapper deals with changesets. Basically we have a single DeeSharedModel that contains all the results for a particular search, that model gets split up by category id into multiple DeeFilterModels, which contain results for a specific category. Now the problem is that when there's a transaction (ie multiple row additions/removals) on the master shared model, the transaction is mirrored in the per-category filter models, but it introduces a problem cause we don't serialize the changes, which means that multiple filter models can have an active transaction at the same time, and when one the filter models synchronizes with the qt wrapper, a visibility change can cause a different model to be shown, and since that model is still processing the transaction, the qt wrapper won't be properly synchronized, and can ask for rows that are about to be removed.

A solution to this problem is making sure that there's always just one active transaction on the filter models.

Related branches

Revision history for this message
Michal Hruby (mhr3) wrote :

Affecting unity (because the splitting up into filter models is in unity-core library) + dee which should support demultiplexing.

Revision history for this message
kevin gunn (kgunn72) wrote :

dednick - putting to you as you seem to have the mp's...feel free to change if that's not right

Changed in unity8:
assignee: nobody → Nick Dedekind (nick-dedekind)
importance: Undecided → High
status: New → Triaged
Michał Sawicz (saviq)
Changed in unity8 (Ubuntu):
assignee: nobody → Nick Dedekind (nick-dedekind)
importance: Undecided → High
status: New → Triaged
Michał Sawicz (saviq)
no longer affects: unity8
Revision history for this message
Albert Astals Cid (aacid) wrote :

Unity8 doesn't use dee anymore.

Changed in unity8 (Ubuntu):
status: Triaged → Invalid
Andrea Azzarone (azzar1)
Changed in unity:
status: New → Invalid
Changed in unity (Ubuntu):
status: New → Invalid
Changed in dee:
status: New → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.