You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2016/03/08 22:35:40 UTC
[jira] [Commented] (CB-7862) FileReader reads large files in a
single chunk causing OOM exceptions
[ https://issues.apache.org/jira/browse/CB-7862?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15185867#comment-15185867 ]
ASF GitHub Bot commented on CB-7862:
------------------------------------
GitHub user jasongin opened a pull request:
https://github.com/apache/cordova-plugin-file/pull/168
CB-7862: FileReader reads large files in chunks with progress
I added support in FileReader for reading large files in chunks and reporting progress for each chunk. Previously, the Cordova FileReader would always read files as a single chunk (resulting in OOM exceptions for files > 10 MB or so), and would NEVER invoke the onprogress callback. With this change, it's possible to read files with sizes up to the actual available application memory: I have verified with files over 500 MB.
The default chunk size of 256 KB is based on some non-scientific timing tests I did: it yields only minor overhead from multiple exec() calls while still providing frequent-enough progress reports for large files. Much smaller chunk sizes could cause large file reads to take significantly longer due to the numerous exec() calls (and progress callbacks).
The FileReader.READ_CHUNK_SIZE value is exposed and may be adjusted by app code, though I don't expect that is something that would need to be changed normally so I didn't add it to the plugin documentation. The added test case however does use that capability so that it can verify chunking and progress behavior without having to generate a very large file.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/jasongin/cordova-plugin-file CB-7862
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/cordova-plugin-file/pull/168.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #168
----
commit 30f4a8810586dd048e17311f991a9b29315e7fde
Author: Jason Ginchereau <ja...@microsoft.com>
Date: 2016-03-08T21:11:21Z
CB-7862: FileReader reads large files in chunks with progress
----
> FileReader reads large files in a single chunk causing OOM exceptions
> ---------------------------------------------------------------------
>
> Key: CB-7862
> URL: https://issues.apache.org/jira/browse/CB-7862
> Project: Apache Cordova
> Issue Type: Bug
> Components: Plugin File
> Affects Versions: 4.0.0
> Environment: Android
> Reporter: shenzhuxi
> Assignee: Jason Ginchereau
> Priority: Critical
>
> In Android, I tried to copy a 14MB file from html file input with org.apache.cordova.file 1.3.1. The App crashed and a 0 byte file was copied.
> I use http://ngcordova.com/ and here is my code https://github.com/shenzhuxi/readiator/blob/master/src/js/cordova-index.js.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org