[
https://issues.apache.org/jira/browse/CB-3927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13692039#comment-13692039
]
ASF subversion and git services commented on CB-3927:
-----------------------------------------------------
Commit b02ec10bcee21a84f2568bb7615f835f38fc1662 in branch refs/heads/master
from [~jbwillms]
[ https://git-wip-us.apache.org/repos/asf?p=cordova-js.git;h=b02ec10 ]
[android] CB-3927 Fix start-up race condition that could cause exec() responses
to be dropped.
> Exec Can Fail to Issue Callback Immediately After onCordovaReady
> ----------------------------------------------------------------
>
> Key: CB-3927
> URL: https://issues.apache.org/jira/browse/CB-3927
> Project: Apache Cordova
> Issue Type: Bug
> Components: Android, CordovaJS
> Reporter: Jeffrey Willms
> Assignee: Andrew Grieve
> Attachments: 0001-Exec-bug-reproducing.patch
>
>
> If javascript issues an exec to native after waiting for onCordovaReady the
> exec can possibly fail to issue any callback. The bug is caused when
> CordovaWebViewClient.onPageStarted, which resets the NativeToJsMessageQueue,
> is called between native queuing the response message and the javascript
> polling for that response. While webView.loadUrl is called near the entry
> point of the app, the onPageStarted event can happen very far in the future,
> after cordova-ready.
> These are the order of events that typically need to happen for this bug to
> manifest:
> - webView.loadUrl is called near entry point of app
> - At some point in the future after cordova-ready, exec is called by
> javascript
> - Native handler processes exec but gets blocked before the response message
> can be added to the queue because another thread is currently accessing the
> queue
> - Native exec returns without response
> - Handler gets unblocked and adds the response message to the queue and
> signals to javascript that there are messages to be read
> - CordovaWebViewClient.onPageStarted is called which resets the message queue
> - javascript receives signal from native and polls for messages, but gets
> none in response because the queue was reset
> The end result is that neither the success or failure callback of the exec
> ever gets issued.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira