Thanks for explaining the issue. For our CI, we could continue using Android 
4.4.2 for our emulator image as that's what most devs care about currently. 

I have updated the JIRA https://issues.apache.org/jira/browse/CB-8431 with more 
details and changed the title. This should serve as documentation.

The tests that triggers it almost every time, does a file transfer request for 
a non-existent URL and does an abort as well. Request and abort happen on 
different threadpool threads and they trigger a race in Android's 
implementation of OKHttp. There are two workarounds for this issue:
- Upgrade to Android 5.1.1
- Use the plugin suggested by Andrew below to move to an updated version of 
OkHttp.

Thanks,
Nikhil


-----Original Message-----
From: Joe Bowser [mailto:bows...@gmail.com] 
Sent: Wednesday, April 8, 2015 9:21 AM
To: dev@cordova.apache.org
Subject: Re: Jira CB-831: File transfer tests crash on Android L

I was about to say the same thing about API 22.  We should do that before 
release.

On Tue, Apr 7, 2015 at 6:31 PM Andrew Grieve <agri...@chromium.org> wrote:

> - In 4.0.0, we remove OkHttp from our code, but Android L starts 
> including it for its own network stack (crazy coincidence!)
> - We're not sure how frequent the crash happens - just that 
> MobileSpec's use of FileTransfer triggers it every time
> - It is fixed by replacing the network stack with a newer version of 
> OkHttp
> - I've published cordova-plugin-okhttp to npm, so it's installable via 
> cordova-cli@master
> - Bug says it's fixed in Android 5.1.1 (API level 22). (thanks for 
> finding that okio issue!)
>
> On a side note - should we switch our targetSdk to 22? Probably...?
>
>
>
> On Tue, Apr 7, 2015 at 9:14 PM, Nikhil Khandelwal 
> <nikhi...@microsoft.com>
> wrote:
>
> > Why am I seeing this crash with the latest master on the BuildBot CI?
> >
> > I understand that we're not bundling OkHttp, but it's being used 
> > with the File Transfer plugin on an emulator for Android 5.0.1 (API 21).
> >
> > The crash is happening with the stack at
> > com.android.okio.OkBuffer.write(OkBuffer.java:574) and not 
> > com.squareup.okhttp which Android 3.7.1 platform used to package.
> >
> > Does Android ship with a version okhttp? Here's the issue 
> > description and a fix for it in Okio: 
> > https://github.com/square/okio/issues/79. It does not look like this 
> > fix is part of Android 5.0.1 - the emulator that was being used to run 
> > tests on our CI server.
> >
> > (I'm quite new to Android development - bear with me if I'm missing 
> > something obvious here).
> >
> > Thanks,
> > Nikhil
> >
> >
> > -----Original Message-----
> > From: Joe Bowser [mailto:bows...@gmail.com]
> > Sent: Tuesday, April 7, 2015 5:29 PM
> > To: dev@cordova.apache.org
> > Subject: Re: Jira CB-831: File transfer tests crash on Android L
> >
> > This is a Won't Fix because we're not bundling OkHttp anymore.  This 
> > will be resolved when we release Cordova-Android 4.0.0
> >
> > On Tue, Apr 7, 2015 at 5:27 PM Nikhil Khandelwal 
> > <nikhi...@microsoft.com
> >
> > wrote:
> >
> > > The JIRA which was marked as 'Won't fix' is currently blocking 
> > > Android test runs on http://ci.cordova.io:  
> > > https://issues.apache.org/ jira/browse/CB-8431.
> > >
> > > It looks like Android L's implementation of OkHttp has a race 
> > > condition which hits quite consistently with our current file 
> > > transfer tests. There is a comment by Andrew in the bug that 
> > > points to using this plugin on Android L:
> > https://github.com/MobileChromeApps/cordova-plugin-okhttp.
> > >
> > > Should this plugin be a dependency to the file transfer plugin? Or 
> > > the code for it be rolled in as part of file transfer plugin itself?
> > >
> > > For the short term I'm leaning towards working around this issue, 
> > > by using an older AVD (instead of Android L) on our CI setup. 
> > > However, there is a chance developers running Cordova apps on 
> > > Android L will run into this and would expect some guidance here.
> > >
> > > Thanks,
> > > Nikhil
> > >
> > >
> > >
> >
>

Reply via email to