actions out of limbos lose path info and deadlock

Bug #707576 reported by Lucio Torre
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Ubuntu One Client
Fix Released
High
Facundo Batista

Bug Description

syncdaemon.log.2011-01-24_12-05-45:2011-01-24 12:06:13,885 - ubuntuone.SyncDaemon.ActionQueue - DEBUG - Move share:'0e0a3c0d-ddb8-4926-ad71-c33fd6079e6a' node:'4882a59e-d4bc-427a-9d1e-780724742f7b' Move(new_name="u'nataliabidart'", path_from="''", share_id="'0e0a3c0d-ddb8-4926-ad71-c33fd6079e6a'", new_parent_id="'54be8095-7c68-4e65-ad98-d287a855b336'", old_parent_id="'f240382d-b02b-4e1d-b232-02835f5517ae'", path_to="''", node_id="'4882a59e-d4bc-427a-9d1e-780724742f7b'") pathlock acquiring on ('',) (on_parent=True, on_children=True); wait for: 1791
syncdaemon.log.2011-01-24_12-05-45:2011-01-24 12:06:13,896 - ubuntuone.SyncDaemon.ActionQueue - DEBUG - Move share:'0e0a3c0d-ddb8-4926-ad71-c33fd6079e6a' node:'4882a59e-d4bc-427a-9d1e-780724742f7b' Move(new_name="u'nataliabidart'", path_from="''", share_id="'0e0a3c0d-ddb8-4926-ad71-c33fd6079e6a'", new_parent_id="'54be8095-7c68-4e65-ad98-d287a855b336'", old_parent_id="'f240382d-b02b-4e1d-b232-02835f5517ae'", path_to="''", node_id="'4882a59e-d4bc-427a-9d1e-780724742f7b'") pathlock acquiring on ('',) (on_parent=True, on_children=False); wait for: 1792

When a move tries to grab a pathlock it locks on ('',), so al moves block each other and you get queues of thousands of moves (~1800 in this case)

Related branches

Changed in ubuntuone-client:
status: New → Confirmed
importance: Undecided → High
tags: added: chicharra chicharra-natty
Revision history for this message
Lucio Torre (lucio.torre) wrote :

when actions are moven out of limbo the path property is lost, so the lock is on ('',)

Revision history for this message
Lucio Torre (lucio.torre) wrote :

and as move will take two locks (source, dest) it will deadlock as the two will be the same.

Revision history for this message
Lucio Torre (lucio.torre) wrote :

to reproduce:
$ cd ~/Ubuntu One/
$ for i in `seq 100`; do > $i; done
<wait for IDLE>
$ for i in `seq 100`; do move $i $i.moved; done
<wait a couple of seconds>
$ u1sdtool -q
<until syncdaemon exits>
$ u1sdtool -s

the queue should now move until reaching the deadlocked moves and freeze there.

summary: - pathlock for Move grabs everything.
+ actions out of limbos lose path info and deadlock
Changed in ubuntuone-client:
status: Confirmed → In Progress
Changed in ubuntuone-client:
status: In Progress → Fix Committed
tags: added: u1-natty-beta
dobey (dobey)
Changed in ubuntuone-client:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

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