[ 
https://issues.apache.org/jira/browse/AIRAVATA-3679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marcus Christie updated AIRAVATA-3679:
--------------------------------------
    Description: 
When a directory is downloaded in the Django portal, the directory is first 
converted to a zip file and then that zip file is returned in the response. 
Because the zip file has to be created first, as a temporary file, there is a 
limit on how large it can be so it doesn't overfill the temporary storage space 
(usually the same as the root partition). To prevent a disk space overfill 
there is a cap on directory downloads of 1GB.

Whenever a directory zip download file goes above 1GB, the *Zip file size 
exceeds max of 1073741824 bytes* error is generated.

Initially I thought I could do a check first if the directory is larger than 
1GB and then disallow download. But a directory might be larger than 1GB and 
yet compress to much less than 1GB. It's generally hard to know in advance how 
large a zipped directory will be.

Another approach is to eliminate the temporary file creation and just stream 
the zip file. That is, write the zip file directly to the HTTP response instead 
of having a temporary file intermediary. This is light on memory usage and disk 
usage and also benefits the user by starting the download sooner. So I'm going 
to explore this option.


  was:
When a directory is downloaded in the Django portal, the directory is first 
converted to a zip file and then that zip file is returned in the response. 
Because the zip file has to be created first, as a temporary file, there is a 
limit on how large it can be so it doesn't overfill the temporary storage space 
(usually the same as the root partition). To this end there is a cap on 
directory downloads of 1GB.

Whenever a directory zip download file goes above 1GB, the *Zip file size 
exceeds max of 1073741824 bytes* error is generated.



> directory download error: Zip file size exceeds max of 1073741824 bytes
> -----------------------------------------------------------------------
>
>                 Key: AIRAVATA-3679
>                 URL: https://issues.apache.org/jira/browse/AIRAVATA-3679
>             Project: Airavata
>          Issue Type: Bug
>          Components: Django Portal
>            Reporter: Marcus Christie
>            Assignee: Marcus Christie
>            Priority: Major
>
> When a directory is downloaded in the Django portal, the directory is first 
> converted to a zip file and then that zip file is returned in the response. 
> Because the zip file has to be created first, as a temporary file, there is a 
> limit on how large it can be so it doesn't overfill the temporary storage 
> space (usually the same as the root partition). To prevent a disk space 
> overfill there is a cap on directory downloads of 1GB.
> Whenever a directory zip download file goes above 1GB, the *Zip file size 
> exceeds max of 1073741824 bytes* error is generated.
> Initially I thought I could do a check first if the directory is larger than 
> 1GB and then disallow download. But a directory might be larger than 1GB and 
> yet compress to much less than 1GB. It's generally hard to know in advance 
> how large a zipped directory will be.
> Another approach is to eliminate the temporary file creation and just stream 
> the zip file. That is, write the zip file directly to the HTTP response 
> instead of having a temporary file intermediary. This is light on memory 
> usage and disk usage and also benefits the user by starting the download 
> sooner. So I'm going to explore this option.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to