Merge lp:~michael-sheldon/ubuntu-download-manager/fix-1411866 into lp:ubuntu-download-manager

Proposed by Michael Sheldon
Status: Merged
Approved by: Bill Filler
Approved revision: 375
Merged at revision: 372
Proposed branch: lp:~michael-sheldon/ubuntu-download-manager/fix-1411866
Merge into: lp:ubuntu-download-manager
Prerequisite: lp:~michael-sheldon/ubuntu-download-manager/translation-support
Diff against target: 120 lines (+34/-8)
3 files modified
po/ubuntu-download-manager.pot (+14/-1)
src/downloads/priv/ubuntu/downloads/file_download.cpp (+19/-7)
src/downloads/priv/ubuntu/downloads/file_download.h (+1/-0)
To merge this branch: bzr merge lp:~michael-sheldon/ubuntu-download-manager/fix-1411866
Reviewer Review Type Date Requested Status
system-apps-ci-bot continuous-integration Approve
Ubuntu Phablet Team Pending
Review via email: mp+305104@code.launchpad.net

Commit message

Fix queue blocking and error reporting when file path is unwritable

Description of the change

Fix queue blocking and error reporting when file path is unwritable

To post a comment you must log in.
Revision history for this message
system-apps-ci-bot (system-apps-ci-bot) wrote :

FAILED: Continuous integration, rev:374
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-download-manager-ci/14/
Executed test runs:
    FAILURE: https://jenkins.canonical.com/system-apps/job/build/1436/console
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-0-fetch/1436
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1287
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1287/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1287
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1287/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/1287
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/1287/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1287
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1287/artifact/output/*zip*/output.zip
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1287/console
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/1287
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/1287/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/1287
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/1287/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/1287
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/1287/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/1287
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/1287/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-download-manager-ci/14/rebuild

review: Needs Fixing (continuous-integration)
375. By Michael Sheldon

Don't send start/queued signal when we're about to go to an error state

Revision history for this message
system-apps-ci-bot (system-apps-ci-bot) wrote :

PASSED: Continuous integration, rev:375
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-download-manager-ci/19/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build/1461
    SUCCESS: https://jenkins.canonical.com/system-apps/job/test-0-autopkgtest/label=phone-armhf,release=vivid+overlay,testname=default/343
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-0-fetch/1461
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1311
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1311/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1311
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1311/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/1311
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/1311/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1311
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1311/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1311
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1311/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/1311
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/1311/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/1311
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/1311/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/1311
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/1311/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/1311
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/1311/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-download-manager-ci/19/rebuild

review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'po/ubuntu-download-manager.pot'
--- po/ubuntu-download-manager.pot 2016-09-09 11:06:56 +0000
+++ po/ubuntu-download-manager.pot 2016-09-09 11:06:56 +0000
@@ -8,7 +8,7 @@
8msgstr ""8msgstr ""
9"Project-Id-Version: ubuntu-download-manager\n"9"Project-Id-Version: ubuntu-download-manager\n"
10"Report-Msgid-Bugs-To: \n"10"Report-Msgid-Bugs-To: \n"
11"POT-Creation-Date: 2016-08-31 12:57+0100\n"11"POT-Creation-Date: 2016-09-07 14:08+0100\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -23,35 +23,48 @@
2323
24#: src/downloads/priv/ubuntu/downloads/file_download.cpp:21024#: src/downloads/priv/ubuntu/downloads/file_download.cpp:210
25#: src/downloads/priv/ubuntu/downloads/group_download.cpp:12325#: src/downloads/priv/ubuntu/downloads/group_download.cpp:123
26#: src/downloads/priv/ubuntu/downloads/file_download.cpp:211
27#: src/downloads/priv/ubuntu/downloads/group_download.cpp:124
26#, qt-format28#, qt-format
27msgid "Invalid hash algorithm: '%1'"29msgid "Invalid hash algorithm: '%1'"
28msgstr ""30msgstr ""
2931
30#: src/downloads/priv/ubuntu/downloads/file_download.cpp:86332#: src/downloads/priv/ubuntu/downloads/file_download.cpp:863
33#: src/downloads/priv/ubuntu/downloads/file_download.cpp:872
31#, qt-format34#, qt-format
32msgid "Invalid URL: '%1'"35msgid "Invalid URL: '%1'"
33msgstr ""36msgstr ""
3437
35#: src/downloads/priv/ubuntu/downloads/file_download.cpp:87338#: src/downloads/priv/ubuntu/downloads/file_download.cpp:873
39#: src/downloads/priv/ubuntu/downloads/file_download.cpp:882
36#, qt-format40#, qt-format
37msgid "Downloads that are set to be deflated cannot have a hash: '%1'"41msgid "Downloads that are set to be deflated cannot have a hash: '%1'"
38msgstr ""42msgstr ""
3943
40#: src/downloads/priv/ubuntu/downloads/file_download.cpp:96444#: src/downloads/priv/ubuntu/downloads/file_download.cpp:964
45#: src/downloads/priv/ubuntu/downloads/file_download.cpp:973
41#, qt-format46#, qt-format
42msgid "File already exists at: '%2'"47msgid "File already exists at: '%2'"
43msgstr ""48msgstr ""
4449
45#: src/downloads/priv/ubuntu/downloads/group_download.cpp:13950#: src/downloads/priv/ubuntu/downloads/group_download.cpp:139
51#: src/downloads/priv/ubuntu/downloads/group_download.cpp:140
46msgid "Duplicated local path passed: "52msgid "Duplicated local path passed: "
47msgstr ""53msgstr ""
4854
49#: src/uploads/priv/ubuntu/uploads/file_upload.cpp:16055#: src/uploads/priv/ubuntu/uploads/file_upload.cpp:160
56#: src/uploads/priv/ubuntu/uploads/file_upload.cpp:161
50#, qt-format57#, qt-format
51msgid "Path is not absolute: '%1'"58msgid "Path is not absolute: '%1'"
52msgstr ""59msgstr ""
5360
54#: src/uploads/priv/ubuntu/uploads/file_upload.cpp:16661#: src/uploads/priv/ubuntu/uploads/file_upload.cpp:166
62#: src/uploads/priv/ubuntu/uploads/file_upload.cpp:167
55#, qt-format63#, qt-format
56msgid "Path does not exist: '%1'"64msgid "Path does not exist: '%1'"
57msgstr ""65msgstr ""
66
67#: src/downloads/priv/ubuntu/downloads/file_download.cpp:344
68#, qt-format
69msgid "Destination file path is not writable: '%2'"
70msgstr ""
5871
=== modified file 'src/downloads/priv/ubuntu/downloads/file_download.cpp'
--- src/downloads/priv/ubuntu/downloads/file_download.cpp 2016-09-09 11:06:56 +0000
+++ src/downloads/priv/ubuntu/downloads/file_download.cpp 2016-09-09 11:06:56 +0000
@@ -337,7 +337,14 @@
337 bool canWrite = _currentData->open(QIODevice::ReadWrite | QFile::Append);337 bool canWrite = _currentData->open(QIODevice::ReadWrite | QFile::Append);
338338
339 if (!canWrite) {339 if (!canWrite) {
340 emit started(false);340 DOWN_LOG(ERROR) << "Destination file path is not writable: " << _filePath;
341 setIsValid(false);
342 if (calledFromDBus()) {
343 sendErrorReply(QDBusError::AccessDenied, QString(_("Destination file path is not writable: '%2'")).arg(
344 _filePath));
345 errorCleanup();
346 setState(Transfer::ERROR);
347 }
341 return;348 return;
342 }349 }
343350
@@ -1206,15 +1213,20 @@
1206 return request;1213 return request;
1207}1214}
12081215
1216void
1217FileDownload::errorCleanup() {
1218 disconnectFromReplySignals();
1219 _reply->deleteLater();
1220 _reply = nullptr;
1221 cleanUpCurrentData();
1222 // let other downloads use the same file name
1223 unlockFilePath();
1224}
1225
1209void1226void
1210FileDownload::emitError(const QString& error) {1227FileDownload::emitError(const QString& error) {
1211 TRACE << error;1228 TRACE << error;
1212 disconnectFromReplySignals();1229 errorCleanup();
1213 _reply->deleteLater();
1214 _reply = nullptr;
1215 cleanUpCurrentData();
1216 // let other downloads use the same file name
1217 unlockFilePath();
1218 Download::emitError(error);1230 Download::emitError(error);
1219}1231}
12201232
12211233
=== modified file 'src/downloads/priv/ubuntu/downloads/file_download.h'
--- src/downloads/priv/ubuntu/downloads/file_download.h 2015-11-13 14:40:50 +0000
+++ src/downloads/priv/ubuntu/downloads/file_download.h 2016-09-09 11:06:56 +0000
@@ -126,6 +126,7 @@
126 void unlockFilePath();126 void unlockFilePath();
127 void updateFileNamePerContentDisposition();127 void updateFileNamePerContentDisposition();
128 void writeDataUri();128 void writeDataUri();
129 void errorCleanup();
129130
130 // slots used to react to signals131 // slots used to react to signals
131 void onDownloadProgress(qint64 currentProgress, qint64);132 void onDownloadProgress(qint64 currentProgress, qint64);

Subscribers

People subscribed via source and target branches