[jboss-svn-commits] JBL Code SVN: r22744 - in labs/jbossesb/branches/JBESB_4_4_GA_CP/product: rosetta/src/org/jboss/internal/soa/esb/util and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Sep 13 17:01:43 EDT 2008


Author: mark.little at jboss.com
Date: 2008-09-13 17:01:43 -0400 (Sat, 13 Sep 2008)
New Revision: 22744

Modified:
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/docs/AdministrationGuide.odt
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpImpl.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/util/FtpClientUtil.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/util/RemoteFileSystem.java
Log:
https://jira.jboss.org/jira/browse/JBESB-1995

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/docs/AdministrationGuide.odt
===================================================================
(Binary files differ)

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpImpl.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpImpl.java	2008-09-13 19:48:10 UTC (rev 22743)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpImpl.java	2008-09-13 21:01:43 UTC (rev 22744)
@@ -78,6 +78,8 @@
 	private String m_sFtpServer, m_sUser, m_sPasswd;
 
 	private String m_sRemoteDir, m_sLocalDir;
+	
+	private int renameRetry;
 
 	/**
 	 * Checks validity and completeness of parameters, and keeps the info
@@ -235,8 +237,24 @@
 		m_bPassive = false;
 		sAux = m_oParms.getAttribute(PARMS_PASSIVE);
 		m_bPassive = (null != sAux) && Boolean.parseBoolean(sAux);
+		
+		String renameRetryString = ModulePropertyManager.getPropertyManager(
+                        ModulePropertyManager.TRANSPORTS_MODULE).getProperty(
+                        Environment.FTP_RENAME_RETRY, null);
 
-		return;
+		if (renameRetryString != null)
+		{
+		    try
+		    {
+		        renameRetry = Integer.parseInt(renameRetryString);
+		    }
+		    catch (Exception ex)
+		    {
+		        throw new ConfigurationException("Invalid rename retry limit: "+renameRetryString);
+		    }
+		}
+		else
+		    renameRetry = DEFAULT_RENAME_RETRY_NUMBER;
 	}
 
 	protected void configTreeFromEpr () throws RemoteFileSystemException
@@ -586,10 +604,31 @@
                 {
                     throw new RemoteFileSystemException("Failed to upload contents: " + m_oConn.getReplyString()) ;
                 }
-                if (!m_oConn.rename(sRemoteTmp, p_sRemoteName))
+                
+                boolean retryProblem = true;  // https://jira.jboss.org/jira/browse/JBESB-1995
+
+                for (int i = 0; i < renameRetry; i++)
                 {
+                    if (m_oConn.rename(sRemoteTmp, p_sRemoteName))
+                    {
+                        retryProblem = false;
+                        
+                        break;
+                    }
+                    else
+                    {
+                        try
+                        {
+                            Thread.sleep(DEFAULT_RENAME_RETRY_TIMEOUT);
+                        }
+                        catch (final Exception ex)
+                        {
+                        }
+                    }
+                }
+                
+                if (retryProblem)
                     throw new RemoteFileSystemException("Failed to rename file: " + m_oConn.getReplyString());
-                }
             }
             catch (final IOException ioe)
             {

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2008-09-13 19:48:10 UTC (rev 22743)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2008-09-13 21:01:43 UTC (rev 22744)
@@ -51,6 +51,7 @@
 	public static final String FTP_LOCALDIR  = "org.jboss.soa.esb.ftp.localdir";
 	public static final String FTP_REMOTEDIR = "org.jboss.soa.esb.ftp.remotedir";
 	public static final String FTP_SOCKET_TIMEOUT = "org.jboss.soa.esb.ftp.timeout";
+	public static final String FTP_RENAME_RETRY = "org.jboss.soa.esb.ftp.renameretry";
 
 	public static final String JMS_CONNECTION_POOL_SIZE = "org.jboss.soa.esb.jms.connectionPool";
 	public static final String JMS_SESSION_SLEEP        = "org.jboss.soa.esb.jms.sessionSleep";

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/util/FtpClientUtil.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/util/FtpClientUtil.java	2008-09-13 19:48:10 UTC (rev 22743)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/util/FtpClientUtil.java	2008-09-13 21:01:43 UTC (rev 22744)
@@ -35,8 +35,12 @@
 import org.apache.commons.net.ftp.FTPClient;
 import org.jboss.internal.soa.esb.util.FtpUtils;
 import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.common.Environment;
+import org.jboss.soa.esb.common.ModulePropertyManager;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.util.RemoteFileSystem;
+import org.jboss.soa.esb.util.RemoteFileSystemException;
 
 /**
  * Simplified FTP transfers
@@ -45,6 +49,8 @@
  * establish the FTP connection are provided at construction time and cannot
  * change during the lifetime of the object <br/>Hides low level details.
  * </p>
+ * 
+ * TODO why duplicate so much of FtpImpl.java?
  */
 
 public class FtpClientUtil
@@ -66,7 +72,7 @@
 	public static final String PARMS_PASSIVE = "ftpPassive";
 
 	private static final String TMP_SUFFIX = ".rosettaPart";
-
+	        
 	public enum XFER_TYPE
 	{
 		ascii, binary
@@ -85,6 +91,8 @@
         private FTPClient m_oConn = new FTPClient();
 
         private boolean m_bAsciiTransferType ; 
+        
+        private int renameRetry;
 
 	public String getRemoteDir ()
 	{
@@ -361,10 +369,31 @@
 			{
 			    throw new RemoteFileSystemException("Failed to upload contents: " + m_oConn.getReplyString()) ;
 			}
-			if (!m_oConn.rename(sRemoteTmp, p_sRemoteName))
+			
+			boolean retryProblem = true;  // https://jira.jboss.org/jira/browse/JBESB-1995
+
+			for (int i = 0; i < renameRetry; i++)
 			{
+			    if (m_oConn.rename(sRemoteTmp, p_sRemoteName))
+			    {
+			        retryProblem = false;
+
+			        break;
+			    }
+			    else
+			    {
+			        try
+			        {
+			            Thread.sleep(RemoteFileSystem.DEFAULT_RENAME_RETRY_TIMEOUT);
+			        }
+			        catch (final Exception ex)
+			        {
+			        }
+			    }
+			}
+
+			if (retryProblem)
 			    throw new RemoteFileSystemException("Failed to rename file: " + m_oConn.getReplyString());
-			}
 		}
 		catch (IOException ex)
 		{
@@ -476,6 +505,24 @@
 		m_bPassive = false;
 		sAux = m_oParms.getAttribute(PARMS_PASSIVE);
 		m_bPassive = (null != sAux) && Boolean.parseBoolean(sAux);
+		
+		String renameRetryString = ModulePropertyManager.getPropertyManager(
+                        ModulePropertyManager.TRANSPORTS_MODULE).getProperty(
+                        Environment.FTP_RENAME_RETRY, null);
+
+                if (renameRetryString != null)
+                {
+                    try
+                    {
+                        renameRetry = Integer.parseInt(renameRetryString);
+                    }
+                    catch (Exception ex)
+                    {
+                        throw new ConfigurationException("Invalid rename retry limit: "+renameRetryString);
+                    }
+                }
+                else
+                    renameRetry = RemoteFileSystem.DEFAULT_RENAME_RETRY_NUMBER;
 	} // __________________________________
 
 	public static String fileToFtpString (File p_oF)

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/util/RemoteFileSystem.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/util/RemoteFileSystem.java	2008-09-13 19:48:10 UTC (rev 22743)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/util/RemoteFileSystem.java	2008-09-13 21:01:43 UTC (rev 22744)
@@ -58,6 +58,10 @@
 
 	public static final String PARMS_PASSPHRASE = "passphrase";
 	
+	public static final int DEFAULT_RENAME_RETRY_NUMBER = 10; // default retries
+	
+	public static final int DEFAULT_RENAME_RETRY_TIMEOUT = 1000;  // 1 second
+	
 	public String getRemoteDir ();
 
 	/**




More information about the jboss-svn-commits mailing list