Author: jleroux
Date: Fri Jan 12 22:19:22 2018 New Revision: 1821038 URL: http://svn.apache.org/viewvc?rev=1821038&view=rev Log: "Applied fix from trunk framework for revision: 1821036" ------------------------------------------------------------------------ r1821036 | jleroux | 2018-01-12 22:59:22 +0100 (ven., 12 janv. 2018) | 11 lines Fixed: streaming large content cause out of memory exception. (OFBIZ-10133) When ofbiz streams a large content (eg. video file), get out of memory exception. To reproduce the issue see the Jira jleroux: I just removed final for bufferSize, I see no needs for that local variable Thanks: Wai for the patch Michael for the discussion ------------------------------------------------------------------------ Modified: ofbiz/branches/release16.11/ (props changed) ofbiz/branches/release16.11/applications/content/config/content.properties ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java ofbiz/branches/release16.11/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java Propchange: ofbiz/branches/release16.11/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Fri Jan 12 22:19:22 2018 @@ -10,5 +10,5 @@ /ofbiz/branches/json-integration-refactoring:1634077-1635900 /ofbiz/branches/multitenant20100310:921280-927264 /ofbiz/branches/release13.07:1547657 -/ofbiz/ofbiz-framework/trunk:1783202,1783388,1784549,1784558,1784708,1785882,1785925,1786079,1786214,1786525,1787047,1787133,1787176,1787535,1787906-1787911,1787949,1789665,1789863,1789874,1790396,1790810,1791277,1791288,1791342,1791346,1791490,1791496,1791625,1791634,1791791,1791804,1792270,1792272,1792275,1792432,1792609,1792638,1794008,1794132,1796047,1796262,1797733,1798668,1798682,1798796,1798803,1798808,1799088,1799183,1799327,1799417,1799687,1799767,1799793,1799859,1800250,1800780,1800832,1800853,1801094,1801262-1801263,1801273-1801274,1801303,1801318-1801319,1801336,1801340,1801346,1801349-1801350,1801359,1801742,1802657,1802766,1803525,1804656,1804843,1804847,1804859,1805143,1805558,1805880,1806036,1806220,1806266,1806269,1806951,1807597,1807890,1808834,1809399,1809429,1809594,1809741,1810102,1811794,1812387,1813600,1813617,1813647,1813833,1814277,1814319,1814349,1814501,1814591,1814642,1814644,1814709,1814873,1814928,1814934,1815059,1816264,1816273,1816289,1816291,1816297, 1816369,1816373,1816461,1816635,1816795,1818101,1818269,1818273,1818402,1819122,1819136,1819144,1819811,1820823,1820949,1820966,1821012 +/ofbiz/ofbiz-framework/trunk:1783202,1783388,1784549,1784558,1784708,1785882,1785925,1786079,1786214,1786525,1787047,1787133,1787176,1787535,1787906-1787911,1787949,1789665,1789863,1789874,1790396,1790810,1791277,1791288,1791342,1791346,1791490,1791496,1791625,1791634,1791791,1791804,1792270,1792272,1792275,1792432,1792609,1792638,1794008,1794132,1796047,1796262,1797733,1798668,1798682,1798796,1798803,1798808,1799088,1799183,1799327,1799417,1799687,1799767,1799793,1799859,1800250,1800780,1800832,1800853,1801094,1801262-1801263,1801273-1801274,1801303,1801318-1801319,1801336,1801340,1801346,1801349-1801350,1801359,1801742,1802657,1802766,1803525,1804656,1804843,1804847,1804859,1805143,1805558,1805880,1806036,1806220,1806266,1806269,1806951,1807597,1807890,1808834,1809399,1809429,1809594,1809741,1810102,1811794,1812387,1813600,1813617,1813647,1813833,1814277,1814319,1814349,1814501,1814591,1814642,1814644,1814709,1814873,1814928,1814934,1815059,1816264,1816273,1816289,1816291,1816297, 1816369,1816373,1816461,1816635,1816795,1818101,1818269,1818273,1818402,1819122,1819136,1819144,1819811,1820823,1820949,1820966,1821012,1821036 /ofbiz/trunk:1770481,1770490,1770540,1771440,1771448,1771516,1771935,1772346,1772880,1774772,1775441,1779724,1780659,1781109,1781125,1781979,1782498,1782520 Modified: ofbiz/branches/release16.11/applications/content/config/content.properties URL: http://svn.apache.org/viewvc/ofbiz/branches/release16.11/applications/content/config/content.properties?rev=1821038&r1=1821037&r2=1821038&view=diff ============================================================================== --- ofbiz/branches/release16.11/applications/content/config/content.properties (original) +++ ofbiz/branches/release16.11/applications/content/config/content.properties Fri Jan 12 22:19:22 2018 @@ -21,6 +21,7 @@ img.request=/content/control/img/ img.request.param.name=imgId stream.permission.service=genericContentPermission +stream.buffersize=8192 baseUrl=https://localhost:8443 disable.ftl.template.cache=true @@ -37,4 +38,6 @@ content.upload.always.local.file=true content.output.path=runtime/output # default mime type used in *ContentWrapper classes -defaultMimeType=text/html; charset=utf-8 \ No newline at end of file +defaultMimeType=text/html; charset=utf-8 + + Modified: ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java?rev=1821038&r1=1821037&r2=1821038&view=diff ============================================================================== --- ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java (original) +++ ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java Fri Jan 12 22:19:22 2018 @@ -169,7 +169,7 @@ public class DataEvents { String mimeType = DataResourceWorker.getMimeType(dataResource); // hack for IE and mime types - if (userAgent.indexOf("MSIE") > -1) { + if (UtilValidate.isNotEmpty(userAgent) && userAgent.indexOf("MSIE") > -1) { Debug.logInfo("Found MSIE changing mime type from - " + mimeType, module); mimeType = "application/octet-stream"; } Modified: ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java?rev=1821038&r1=1821037&r2=1821038&view=diff ============================================================================== --- ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java (original) +++ ofbiz/branches/release16.11/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java Fri Jan 12 22:19:22 2018 @@ -29,6 +29,8 @@ import java.io.Writer; import java.net.URL; import java.net.URLConnection; import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; import java.sql.Timestamp; import java.util.Comparator; import java.util.HashMap; @@ -47,7 +49,6 @@ import org.apache.commons.fileupload.Fil import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; -import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.tika.Tika; import org.apache.ofbiz.base.location.FlexibleLocation; @@ -1043,7 +1044,7 @@ public class DataResourceWorker impleme String objectInfo = dataResource.getString("objectInfo"); if (UtilValidate.isNotEmpty(objectInfo)) { File file = DataResourceWorker.getContentFile(dataResourceTypeId, objectInfo, contextRoot); - return UtilMisc.toMap("stream", new ByteArrayInputStream(FileUtils.readFileToByteArray(file)), "length", Long.valueOf(file.length())); + return UtilMisc.toMap("stream", Files.newInputStream(file.toPath(), StandardOpenOption.READ), "length", Long.valueOf(file.length())); } else { throw new GeneralException("No objectInfo found for FILE type [" + dataResourceTypeId + "]; cannot stream"); } Modified: ofbiz/branches/release16.11/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release16.11/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java?rev=1821038&r1=1821037&r2=1821038&view=diff ============================================================================== --- ofbiz/branches/release16.11/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java (original) +++ ofbiz/branches/release16.11/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java Fri Jan 12 22:19:22 2018 @@ -56,6 +56,7 @@ import org.apache.http.conn.ssl.TrustSel import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContexts; +import org.apache.ofbiz.entity.util.EntityUtilProperties; import org.apache.oro.text.regex.MalformedPatternException; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcher; @@ -1047,8 +1048,6 @@ public final class UtilHttp { * @throws IOException */ public static void streamContent(OutputStream out, InputStream in, int length) throws IOException { - int bufferSize = 512; // same as the default buffer size; change as needed - // make sure we have something to write to if (out == null) { throw new IOException("Attempt to write to null output stream"); @@ -1065,6 +1064,9 @@ public final class UtilHttp { } // initialize the buffered streams + + int bufferSize = EntityUtilProperties.getPropertyAsInteger("content", "stream.buffersize", 8192); + BufferedOutputStream bos = new BufferedOutputStream(out, bufferSize); BufferedInputStream bis = new BufferedInputStream(in, bufferSize); |
Free forum by Nabble | Edit this page |