ActionQueue does not reset tempfile
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Ubuntu One Client | Status tracked in Trunk | |||||
Stable-2-0 |
Fix Released
|
Critical
|
Natalia Bidart | |||
Trunk |
Fix Released
|
Critical
|
Facundo Batista | |||
ubuntuone-client (Ubuntu) |
Fix Released
|
Critical
|
Ubuntu One Client Engineering team | |||
Oneiric |
Fix Released
|
Critical
|
Ubuntu One Client Engineering team | |||
Precise |
Fix Released
|
Critical
|
Ubuntu One Client Engineering team |
Bug Description
The tempfile, now that it's not closed, it must be reset to 0 on every _run(), as the storageprotocol's client only seeks into the tempfile if it's a resumable one.
So, if we don't reset it to the start, on normal files, in the case of retries, we'll start the upload from the middle of the file, which will fail because of "corrupt data" (which will generate a retry... yes, a loop).
TEST CASE:
1. Grab a file of substantial size (100Mb is ok) which is not yet on Ubuntu One
2. Put it to ~/Ubuntu One folder
3. Wait until upload starts by looking at u1sdtool --current-transfers
4. Simulate server disconnect/network issue by shutting down network.
5. SD will enter READY state, upload is still queued
6. Connect to network again
Expected results:
SD starts to upload the remaining part of the file
Actual results:
Upload fails completely - AQ_UPLOAD_ERROR, syncdaemon returns to IDLE state. File is not uploaded to personal storage.
Related branches
- Facundo Batista (community): Approve
- Natalia Bidart (community): Approve
-
Diff: 97 lines (+21/-13)2 files modifiedtests/syncdaemon/test_action_queue.py (+20/-8)
ubuntuone/syncdaemon/action_queue.py (+1/-5)
- Facundo Batista (community): Approve
- Joshua Hoover (community): Approve (tested)
-
Diff: 946 lines (+165/-87)14 files modifiedtests/platform/linux/eventlog/test_zglog.py (+3/-2)
tests/platform/linux/test_dbus.py (+2/-1)
tests/platform/linux/test_messaging.py (+1/-9)
tests/platform/linux/test_notification.py (+1/-9)
tests/platform/linux/test_unity.py (+3/-0)
tests/platform/linux/test_vm.py (+6/-2)
tests/platform/test_interaction_interfaces.py (+18/-8)
tests/status/test_aggregator.py (+20/-2)
tests/syncdaemon/test_action_queue.py (+58/-13)
tests/syncdaemon/test_logger.py (+11/-0)
tests/syncdaemon/test_pathlockingtree.py (+8/-0)
tests/syncdaemon/test_states.py (+16/-5)
tests/syncdaemon/test_status_listener.py (+2/-1)
ubuntuone/syncdaemon/action_queue.py (+16/-35)
- Ubuntu One hackers: Pending requested
-
Diff: 2080 lines (+1928/-0) (has conflicts)4 files modifiedtests/platform/linux/test_dbus.py (+1685/-0)
tests/platform/linux/test_notification.py (+7/-0)
tests/status/test_aggregator.py (+5/-0)
tests/syncdaemon/test_interaction_interfaces.py (+231/-0)
tags: | added: support |
Changed in ubuntuone-client (Ubuntu): | |
status: | New → Confirmed |
milestone: | none → oneiric-updates |
importance: | Undecided → Critical |
assignee: | nobody → Ubuntu One Desktop+ team (ubuntuone-desktop+) |
tags: | added: u1-oneiric-sru |
Changed in ubuntuone-client (Ubuntu Oneiric): | |
milestone: | none → oneiric-updates |
Changed in ubuntuone-client (Ubuntu Precise): | |
milestone: | oneiric-updates → precise-alpha-1 |
Changed in ubuntuone-client (Ubuntu Oneiric): | |
assignee: | nobody → Ubuntu One Desktop+ team (ubuntuone-desktop+) |
importance: | Undecided → Critical |
status: | New → Confirmed |
tags: |
added: verification-done removed: verification-needed |
Changed in ubuntuone-client: | |
status: | Fix Committed → Fix Released |
tags: | removed: u1-oneiric-sru |
This bug was fixed in the package ubuntuone-client - 2.0.0-0ubuntu3
---------------
ubuntuone-client (2.0.0-0ubuntu3) precise; urgency=low
* debian/ patches/ 02_value_ io_error_ fix.patch:
- Make the Upload process do not close the tempfile until is finished
(LP: #872924).
- Reset the tempfile on every Upload _run() (LP: #884959).
-- Natalia Bidart (nessita) <email address hidden> Mon, 14 Nov 2011 11:16:03 -0300