Hi,
We encounter an error with Flash multi file upload on Mac machine's and this happens only when we have multiple nodes in a load balancer. Your response is much appreciated as this issue holds us of in turning this component in production....
Multi file upload works fine in Windows and in all browsers
Environment Setup:
- 3 web servers through a load balancer (IIS 6.0)
-
Test Case that failed:
When we have 3 servers in the load balancer and when we try to upload multiple files (flash mode) using Safari/Firefox from a MAC machine the upload fails abruptly after uploading 1 or 2 files (there were 5 files in the queue, sizes ranging from 300KB to 600KB).
Test cases that works:
But the flash multi upload works fine in all OS (windows&mac)/ all browsers when there is only one server in the load balancer.
We initially thought it was a problem in the swfuploader component but when we created a test page that uploads multiple files to the server using the swf uploader (js & swf files under file vista) it worked fine and we were able to upload multiple files in all OS(windows&mac)/all browsers.
****************
Earlier we had a call with our load balancer vendor regarding the same issue and after looking at the log they see that cookies are being passed for the first 2 requests (for which upload works) and the cookie was not passed for the next request (for which upload failed). I don't know if this has anything to do with this issue but just passing along our findings...
Also, below is the error details we see in the event log:
Event Type: Warning
Event Source: ASP.NET 2.0.50727.0
Event Category: Web Event
Event ID: 1309
Date: 7/13/2010
Time: 4:44:28 PM
User: N/A
Computer:
Description:
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 7/13/2010 4:44:28 PM
Event time (UTC): 7/13/2010 9:44:28 PM
Event ID: 77882a6159bc4dd0860a2295c5135b43
Event sequence: 31055
Event occurrence: 69
Event detail code: 0
Application information:
Application domain:
Trust level: Full
Application Virtual Path: /
Application Path:
Machine name:
Process information:
Process ID: 4992
Process name: w3wp.exe
Account name:
Exception information:
Exception type: NullReferenceException
Exception message: Object reference not set to an instance of an object.
Request information:
Request URL: http://testserver.com/SharedObjects/FileVistaControl/upload.aspx?rootFolderID=0&relativePath=&ASP.NET_SessionId=veb0ttfkrhgauunqw2ojax55&FT.Active=1&FT.OverrideProvider=1&
FT.UploadID=&groupID=12790574530755770
Request path:
User host address:
User:
Is authenticated: False
Authentication Type:
Thread account name:
Thread information:
Thread ID: 11
Thread account name:
Is impersonating: True
Stack trace: at GleamTech.Web.Controls.FileVistaUploadStorageProvider.CompleteUpload()
at GleamTech.Web.FileTransfer.UploadHttpModule.OnPreRequestHandlerExecute(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Satish
7/27/2010 12:14 PM
we have the same exact issue , swfupload flash on mac has issues when requests go through a load balancer fronting 2 servers .
if I kill one server , it works fine.
red here http://code.google.com/p/swfupload/issues/detail?id=123 that flash on mac does nt send certain headers which may be causign the issue
moa
8/7/2010 3:28 AM
it worked fine after we chnaged the way we were sending the jsessionid from flash. we had used /uploadservlet;jsessionid=hhyy5555 url which the ELB(load balancer did not know how to decipher ) . It worked fine after changing it to uploadservlet?jsessionid=hhyy5555
Still wonder why it occured only on mac , not on any other browsers/platforms.
moa
8/26/2010 6:26 AM
Satish,
Your problem seems to be about a bug in Mac Flash plugin version 9. Your test page with swfupload worked because probably you did not use sessions.
According to the link moa posted:
"On every other OS and release of Flash, Connection header is defaulted to "Keep-Alive" (as it should be). On Mac Flash 9, Connection defaults to "close". The bug here is in Flash, and fixed in Flash 10."
Your issue seems to occur like this:
1. You add files in the upload dialog and start upload
2. The first file is uploaded with session id (it's in the URL) for example: ASP.NET_SessionId=veb0ttfkrhgauunqw2ojax55
3. During posting the first file, Flash player used "Connection: close" header. That's why your load balancer closed the connection and for the next file, it may redirect to the second server.
4. The second file is uploaded with the same session id (ASP.NET_SessionId=veb0ttfkrhgauunqw2ojax55), however this time to the second server and not the first server. The second server does not know the same session id because the session was stored in the first server. That's why, you are getting the error.
I would recommend you to change <sessionState> mode in web.config to StateServer or SQLServer to store the session on a common location but I am not sure it would work in this case.
As this bug said to be fixed in Flash 10 which is already common, I think you should test again after you update the flash plugin.
Cem Alacayir
9/1/2010 4:19 AM
FYI, please see this topic for the fix of this issue in v2.1:
Fix 1 for FileUltimate 2.1
Cem Alacayir
11/12/2010 6:38 PM