Author: bago
Date: Thu Apr 27 02:43:34 2006
New Revision: 397494

URL: http://svn.apache.org/viewcvs?rev=397494&view=rev
Log:
Temp workaround for JAMES-466. Default size for in-memory bytearray usage 
instead of new streaming code is now 400MB.
The streaming support can be "re-enabled" by adding a config.xml property to 
the repositories (inMemorySizeLimit)

Modified:
    
james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java
    
james/server/trunk/src/java/org/apache/james/mailrepository/MessageInputStream.java

Modified: 
james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java
URL: 
http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java?rev=397494&r1=397493&r2=397494&view=diff
==============================================================================
--- 
james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java
 (original)
+++ 
james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java
 Thu Apr 27 02:43:34 2006
@@ -162,6 +162,11 @@
     protected boolean jdbcMailAttributesReady = false;
 
     /**
+     * The size threshold for in memory handling of storing operations
+     */
+    private int inMemorySizeLimit;
+
+    /**
      * @see 
org.apache.avalon.framework.context.Contextualizable#contextualize(Context)
      */
     public void contextualize(final Context context)
@@ -252,6 +257,8 @@
                         .append("'");
             getLogger().debug(logBuffer.toString());
         }
+        
+        inMemorySizeLimit = 
conf.getChild("inMemorySizeLimit").getValueAsInteger(409600000); 
 
         String filestore = conf.getChild("filestore").getValue(null);
         sqlFileName = conf.getChild("sqlFile").getValue();
@@ -665,7 +672,7 @@
                     PreparedStatement updateMessageBody = 
                         
conn.prepareStatement(sqlQueries.getSqlString("updateMessageBodySQL", true));
                     try {
-                        MessageInputStream is = new MessageInputStream(mc,sr);
+                        MessageInputStream is = new 
MessageInputStream(mc,sr,inMemorySizeLimit);
                         updateMessageBody.setBinaryStream(1,is,(int) 
is.getSize());
                         updateMessageBody.setString(2, mc.getName());
                         updateMessageBody.setString(3, repositoryName);
@@ -706,7 +713,7 @@
                     insertMessage.setString(8, mc.getRemoteAddr());
                     insertMessage.setTimestamp(9, new 
java.sql.Timestamp(mc.getLastUpdated().getTime()));
 
-                    MessageInputStream is = new MessageInputStream(mc,sr);
+                    MessageInputStream is = new MessageInputStream(mc, sr, 
inMemorySizeLimit);
 
                     insertMessage.setBinaryStream(10, is, (int) is.getSize());
                     

Modified: 
james/server/trunk/src/java/org/apache/james/mailrepository/MessageInputStream.java
URL: 
http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/mailrepository/MessageInputStream.java?rev=397494&r1=397493&r2=397494&view=diff
==============================================================================
--- 
james/server/trunk/src/java/org/apache/james/mailrepository/MessageInputStream.java
 (original)
+++ 
james/server/trunk/src/java/org/apache/james/mailrepository/MessageInputStream.java
 Thu Apr 27 02:43:34 2006
@@ -46,14 +46,14 @@
      * Main constructor. If srep is not null than we are using dbfiles and we 
stream
      * the body to file and only the header to db.
      */
-    public MessageInputStream(Mail mc, StreamRepository srep) throws 
IOException, MessagingException {
+    public MessageInputStream(Mail mc, StreamRepository srep, int sizeLimit) 
throws IOException, MessagingException {
         super();
         caughtException = null;
         streamRep = srep;
         size = mc.getMessageSize();
         // we use the pipes only when streamRep is null and the message size 
is greater than 4096
         // Otherwise we should calculate the header size and not the message 
size when streamRep is not null (JAMES-475)
-        if (streamRep == null && size > 4096) {
+        if (streamRep == null && size > sizeLimit) {
             PipedOutputStream headerOut = new PipedOutputStream();
             new Thread() {
                 private Mail mail;



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to