Copy link to clipboard
Copied
Essentially the issue is long running RemoteObject requests timeout on Windows and setting requestTimeOut on the remoteObject or setting URLRequestDefaults.idleTimeOut to a high number are ignored and the request times out after 30 seconds.
There's been quite a number of posts on this subject and at times the issue was reportedly addressed or worked around, but I'm still seeing this issue on Flex SDK 4.1 (AIR 2.02). The request times out no matter what I do (on Windows).
A brute force approach would be to break down what I'm trying to retrieve into smaller chunks and assemble the results on the client, but that doesn't give complete confidence that some request may exceed 30 seconds when the servers are under load.
Any advice would be appreciated.
Here are a few posts/JIRA entries that reference the issue:
https://bugs.adobe.com/jira/browse/SDK-15403
https://bugs.adobe.com/jira/browse/SDK-22016
http://blogs.adobe.com/cantrell/2009/10/introducing_urlrequest_idletimeout.html
Thanks,
Jeff
Copy link to clipboard
Copied
OK, so this is a Flash Player bug as described here:
http://bugs.adobe.com/jira/browse/FP-4934 Please take a moment and vote for this issue.
The workaround works but is obviously unacceptable for public deployment of an app. I'm looking for another workaround that can control the behavior.
Is there ANYTHING that can be done at the framework level?
Jeff
Copy link to clipboard
Copied
One possible workaround - until the Flex SDK is updated - is to publish your AIR application using a pre 2.0 namespace in your application descriptor.
Using a 1.0, 1.1, or 1.5.x namespace will cause the old network timeout behavior to be used.
Hope this helps.
Chris Thilgen
AIR Engineering
Copy link to clipboard
Copied
Chris,
That's a good suggestion - I'm assuming I cannot compile the app using Flex
4.1 right? I'm getting "VerifyError: Error #1014: Class IIMEClient could not
be found.". I'd have to do it using Flex 4 with AIR 1.5.x as an overlay -
correct?
Jeff
Copy link to clipboard
Copied
Chris,
I can't seem to publish to the 1.5.3 namespace - I keep getting the verify
error described below. Is there something I'm doing wrong?
Jeff
On Mon, Aug 9, 2010 at 8:39 PM, Jeffrey Battershall
Copy link to clipboard
Copied
Overlaying the Flex 4.1 SDK with an AIR 1.5.3 SDK should get the job done...unless we missed something along the way. I think there was an issue with the TLF component not versioning very well around the AIR 2.0 namespace - could that be the cause of the issue you are seeing?
Chris Thilgen
AIR Engineering
Copy link to clipboard
Copied
Chris,
The error I'm seeing is consistent with needing to have the namespace set to
2.0.
Flex 4.1 SDK comes with AIR 2.0 bundled, right? My app is written in Flex 4
- can Flex 4 SDK play nice with AIR SDK 1.5.3? If I do an overlay on Flex
4.1 - does that completely replace AIR 2.0?
Jeff
Copy link to clipboard
Copied
You should not need to overlay the old AIR SDK to get this to work - changing the namespace should be sufficient.
Here is what I did on my end:
1. Download "Flex 4.1 Update"
http://opensource.adobe.com/wiki/display/flexsdk/download?build=4.1.0.16076&pkgtype=1
Extract to "C:\Program Files\Adobe\Adobe Flash Builder 4\sdks\4.1.0.16076-AIR-2"
2. Download "AIR 2.0 SDK"
http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk
Extract and overlay "C:\Program Files\Adobe\Adobe Flash Builder 4\sdks\4.1.0.16076-AIR-2"
3. Create new project in Flex Builder 4 - select the 4.1.0.16076-AIR-2 SDK in the compiler options.
4. Change the application namespace to 1.5.3 in the app descriptor.
5. Clean project - republish - run.
Works for me...can you confirm a clean project works in your setup?
As I mentioned before, there was a versioning issue that came up with using the TLF text component in the AIR 2 timeframe (when created in either Flash Professional or Flash Builder) - so if it is not that - perhaps there is another incompatibility we need to investigate.
Thanks,
Chris Thilgen
AIR Engineering
Copy link to clipboard
Copied
Hi Chris,
I can create a project using the 1.5.3 namespace/Flex 4.1 without issue but
in my application (which has a lot of UI elements) there's conflict
with VerifyError: Error #1014: Class IIMEClient could not be found. I
haven't been able to track down which component is at issue. What ever
component that requires that interface isn't backward compatible with the
1.5.3 namespace.
I hope the original issue is getting the attention it deserves - this is
getting darned frustrating.
Jeff
Copy link to clipboard
Copied
Both of the issues you are experiencing are Flex SDK issues - and the best way to get the Flex team to take a look at this is to log it in their bugbase: http://bugs.adobe.com/flex/
Chris Thilgen
AIR Engineering
Copy link to clipboard
Copied
Thanks Chris,
The item is in JIRA already but has a wrong severity and is the wrong SDK
version and is listed as a minor enhancement when in fact is affecting
systems in production as we speak.
https://bugs.adobe.com/jira/browse/SDK-22016
<https://bugs.adobe.com/jira/browse/SDK-22016>It is also in there as a Flash
Player bug:
https://bugs.adobe.com/jira/browse/FP-4934
I'm frankly confused about this - Is it an AIR bug, or an SDK bug? In any
case, can we get this escalated? Working around the problem would involve a
substantial re-architecturing of my RPC layer and functionality.
Jeff
Copy link to clipboard
Copied
Moved discussion to the Problems & Bugs forum
Copy link to clipboard
Copied
Jeff
Well since I am on the AIR team I am going to say that this is obviously a Flex bug. ![]()
But seriously - I think the real issue that needs to be addressed is the inability to publish AIR 1.5.3 applications using the Flex 4 SDK.
Speaking of that, have you considered publishing your application using the 3.5 version of the Flex SDK and using the AIR 1.5.3 namespace?
That would probably work.
I have forwarded this thread to the Flex Team internally - but since they use the JIRA bugbase for everything - I suggest you add some notes to the issues you are aware of - and possible add a new issue about the inability to target AIR 1.5 in the Flex 4.1 SDK.
Chris Thilgen
AIR Engineering
Copy link to clipboard
Copied
Chris,
The project is Flex 4 - can't back down to Flex 3.5. I'm using Spark extensively. What about extending RemoteObject and overriding the necessary internal logic so the time out works properly?
Jeff
Copy link to clipboard
Copied
You could do that - or if you are feeling particularily adventurous - the Flex SDK is opensource and you can download and tweak it as you see fit:
http://opensource.adobe.com/wiki/display/flexsdk/Get+Source+Code
Heck you can even submit code to the SDK if you like.
http://opensource.adobe.com/wiki/display/flexsdk/Submitting+a+Patch
Chris Thilgen
AIR Engineering
Copy link to clipboard
Copied
Since my app is using some of the new 2.0 features, I can't publish it as a lower version =(
I must also say that the registry "workaround" doesn't seem to work, Windows clients still timeout (where MacOS clients are just fine).
This really seems like a serious bug, but doesn't seem to be taken seriously.
(I did "vote" for this...yet there are very few votes.)
So I guess the only real solution (until it's fixed) is to break-up any large request into many smaller ones.
Copy link to clipboard
Copied
Unfortunately it seems this isn't going to be addressed soon - it may be under the radar because it deals with a minority scenario - long running requests. Some requests are going to take time - such as my use case where a large spreadsheet is being composited on the fly. I can optimize all I want, but the reality is that it may well and probably could take longer than 30 seconds to execute, depending the source data from the database. And then there are load conditions or during application bootstrap where the request could exceed 30 seconds.
I am working around it by using DataServices messaging and having the spreadsheet get generated in its own thread on the server and notify the application when it's complete.
I am able to get the workaround to work by setting the DWORD entry to a high decimal value but that won't cut it for external deployment.
Jeff
Copy link to clipboard
Copied
RemoteObject requests usually do not happen via a URLRequest. By default, RemoteObject uses AMF over HTTP using flash.net.NetConnection, which is not the same as flash.net.URLRequest.
Chris, can you please confirm whether AIR's flash.net.NetConnection implementation honors URLRequestDefaults.idleTimeout for AMF over HTTP requests or whether there is an equivalent but separate mechanism?
Copy link to clipboard
Copied
I just ran into this bug (RemoteObject timeout after 30 seconds for AIR 2.0 application on Windows XP) this week and have tried many workarounds, all to no avail. After discovering that it's a known bug in the SDK, I tried to vote for it in the referenced posts on bugs.adobe.com, but the system doesn't let me register as I haven't received a confirmation email after waiting for one day or resetting my password. The sys admin link also doesn't list anyone to contact to resolve my registration issue.
Since the application I'm developing is severely hampered by this restriction (yes, I'm biased), I also think this bug should be given a higher priority. I do, however, appreciate the time and effort allocated to this issue by Chris and Peter from Adobe. Thanks, guys.
-Jose
Copy link to clipboard
Copied
There was a change introduced to the networking sub-system in AIR 2 which will cause RemoteObjects (which make use of NetConnection for their communication) to have a shorter idleTimeout on Windows when using the AIR 2.0 namespace (usually around 30 seconds but varies depending on which version of msinet.dll is installed).
We are working on a resolution for this issue to be included in the next release of the AIR Runtime.
Please refer to the following item in the Flex public bugbase for additional information:
https://bugs.adobe.com/jira/browse/SDK-22016
At this time, the only known workaround for RemoteObjects is to publish your AIR application with a namespace less than 2.0.
Chris Thilgen
AIR Engineering
Copy link to clipboard
Copied
FWIW, I downloaded the AIR 2.5 runtime that was released yesterday (and also updated Flash Builder with the AIR 2.5 SDK) and happily confirm that this issue has been resolved; no more timeouts.
Thanks AIR team!
-Jose
Copy link to clipboard
Copied
Hi,
I am using AIR SDK 2.7 version and my namespace in AIR application xml is 2.0 (<application xmlns="http://ns.adobe.com/air/application/2.0">) .
in my .actionScriptProperties,I have htmlPlayerVersion="10.0.0".
If I give 2.7 as namespace,it gives error.I am using FileReference.download method for downloading one file from the server.The same issue exists for me. After 30 seconds,IOError pops out which stops my download process.Did anyone find a solution for this ?
Copy link to clipboard
Copied
It sounds like you might have run into an SDK overlay problem. Are you using Flash Builder or Pro? Would you mind trying to reinstall the SDK using the following instructions?
Flash Pro:
Document: Overlay AIR SDK | Flash Professional CS5.5
Video: Flash CS5.5: How to overlay AIR 2.7 SDK on Windows
Flash Builder:
Document: How to Overlay the AIR SDK for Use With the Flex SDK
Video: Adobe AIR SDK Windows Overylay Tutorial
Thanks,
Chris
Copy link to clipboard
Copied
I am using eclipse with Flex Builder plugin.I have pointed eclipse to use my sdk (3.4.0.9271) which is updated with 2.7 AIR SDK. If I use 1.5 namespace,that timeout IO error doesnt occur.But if I use 2.0 namespace that issue occuring.Also,I am not able to change my namespace to 2.7 since it gives an error
' invalid application descriptor: versionNumber must have a non-empty value.' .What is the issue here ? So please provide me a solution for fixing this timeout issue and Why am I not able to give 2.7 namespace ?
Copy link to clipboard
Copied
The error is saying that you are missing versionNumber, which was added since 2.0. (I think it was 2.5)
So stop using version (if you are), and switch to versionNumber...which can only be numeric, so it's different from how version functioned.
Get ready! An upgraded Adobe Community experience is coming in January.
Learn more