You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Grigorov (JIRA)" <ji...@apache.org> on 2012/07/23 15:00:46 UTC
[jira] [Assigned] (WICKET-4665) AjaxChannel.Type.DROP actually
allows 2 requests in the "total queue"
[ https://issues.apache.org/jira/browse/WICKET-4665?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Grigorov reassigned WICKET-4665:
---------------------------------------
Assignee: Martin Grigorov
> AjaxChannel.Type.DROP actually allows 2 requests in the "total queue"
> ---------------------------------------------------------------------
>
> Key: WICKET-4665
> URL: https://issues.apache.org/jira/browse/WICKET-4665
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 6.0.0-beta3
> Reporter: Christian Oldiges
> Assignee: Martin Grigorov
>
> The schedule JavaScript function of the ajax channel uses a BUSY flag and a request queue in a callbacks array.
> If the channel is marked as busy because there is a request currently being executed, the second part of the function is executed and for channel type DROP, the newly scheduled request is put into the callbacks queue.
> Using this approach, the dropping channel type actually allows 2 requests in the "total queue".
> The one that triggers the busy = true which is still running and the one that is stored into the callbacks array.
> Reading the documentation of AjaxChannel.DROP says:
> dropping - only the last Ajax request is processed, the others are discarded
> schedule: function (callback) {
> if (this.busy === false) {
> this.busy = true;
> try {
> return callback();
> } catch (exception) {
> this.busy = false;
> Wicket.Log.error("An error occurred while executing Ajax request:" + exception);
> }
> } else {
> Wicket.Log.info("Channel busy - postponing...");
> if (this.type === 's') { // stack
> this.callbacks.push(callback);
> }
> else { /* drop */
> this.callbacks = [];
> // THIS IS WRONG this.callbacks[0] = callback;
> }
> return null;
> }
> },
> To make it work, the dropping channel should NOT store the currently scheduled request, but simply clear the callbacks array.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira