Christian Oldiges created WICKET-4661:
-----------------------------------------
Summary: Ajax channel busy flag not properly cleared upon
SUCCESSFUL callback executions
Key: WICKET-4661
URL: https://issues.apache.org/jira/browse/WICKET-4661
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 6.0.0-beta3
Reporter: Christian Oldiges
The error is triggered if a custom AjaxChannel is defined using code like this
in an AjaxEventbehavior:
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.setChannel(new AjaxChannel("mychannel", Type.DROP));
}
Note: The channel type does NOT matter. Neither DROP nor QUEUE work.
My guess is, the fact the a named ajax channel is used results in the client
side re-using the JavaScript Wicket.Channel instances.
In a re-used instance, the busy flag needs to be properly cleared after
successfully executing an ajax call and its callback which is NOT done in the
currently implemented code:
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...");
A better, working solution would be:
schedule: function (callback) {
if (this.busy === false) {
this.busy = true;
try {
var callbackResult = callback();
this.busy = false;
return callbackResult;
} catch (exception) {
this.busy = false;
Wicket.Log.error("An error occurred
while executing Ajax request:" + exception);
}
} else {
Wicket.Log.info("Channel busy - postponing...");
--
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