Closed Bug 799334 Opened 8 years ago Closed 5 years ago

Intermittent Android DMError: DeviceManager: pull unsuccessful: could not get all file data

Categories

(Testing :: General, defect)

ARM
Android
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: philor, Assigned: wlach)

References

Details

(Keywords: intermittent-failure)

Attachments

(1 file, 1 obsolete file)

https://tbpl.mozilla.org/php/getParsedLog.php?id=15882488&tree=Mozilla-Inbound
Android no-ionmonkey Tegra 250 mozilla-inbound opt test mochitest-8 on 2012-10-06 11:55:18 PDT for push 7fc54528af64
slave: tegra-187

INFO | runtests.py | Running tests: end.
DeviceManager: pull unsuccessful: could not get all file data
TEST-UNEXPECTED-FAIL | DeviceManager: pull unsuccessful: could not get all file data | Exception caught while running tests.
program finished with exit code 1

https://tbpl.mozilla.org/php/getParsedLog.php?id=15923953&tree=Firefox
Android no-ionmonkey Tegra 250 mozilla-central opt test mochitest-2 on 2012-10-08 07:35:37 PDT for push e7f2e2c944b7
slave: tegra-313

INFO | runtests.py | Running tests: end.
DeviceManager: pull unsuccessful: could not get all file data
TEST-UNEXPECTED-FAIL | DeviceManager: pull unsuccessful: could not get all file data | Exception caught while running tests.
program finished with exit code 1
This is a side effect of the exceptions in mozdevice.  It is hard to tell if we would have other errors in this situation or not before the exceptions were added to mozdevice.  This most likely helped surface the real issue.

My gut tells me we should find a better method for pulling files back to account for errors and if we receive enough of the data we can go forward.
As Joel hinted, the problem is that we don't retry properly if pulling the file fails right now. So if the connection gets reset while the test is running (this is known to happen), we'll just fail:

http://mxr.mozilla.org/mozilla-central/source/build/mobile/remoteautomation.py#175

The proper fix for this is in devicemanagerSUT. My preferred solution would be to remove the special case we have for pulling files and using (roughly) the same error-handling logic that we have for other commands.
wlach, I like your proposed solution, except we might hit a corner case on the file pull as we could lose data somewhere along the lines (agent doesn't read it all, sdcard issues, etc...).

If we acknowledge the failure here, we could retry up to 5 times (including the reconnection if that is the root cause).
https://tbpl.mozilla.org/php/getParsedLog.php?id=16805332&tree=Mozilla-Inbound
Summary: Intermittent TEST-UNEXPECTED-FAIL | DeviceManager: pull unsuccessful: could not get all file data | Exception caught while running tests. → Intermittent TEST-UNEXPECTED-FAIL | DeviceManager: pull unsuccessful: could not get all file data | Automation Error: Exception caught while running tests.
Whiteboard: [orange]
(Ready for bug 816581)
Summary: Intermittent TEST-UNEXPECTED-FAIL | DeviceManager: pull unsuccessful: could not get all file data | Automation Error: Exception caught while running tests. → Intermittent Android DMError: DeviceManager: pull unsuccessful: could not get all file data | Automation Error: Exception caught while running tests.