Author: hiranya
Date: Thu Jul 18 18:25:03 2013
New Revision: 1504582

URL: http://svn.apache.org/r1504582
Log:
Applying the patch to SYNAPSE-907. This will make sure that the VFS listener 
never tries to lock a file that doesn't match the configured file pattern 
regex. Also it will make sure that each acquired lock is eventually released.

Modified:
    
synapse/trunk/java/modules/transports/core/vfs/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java

Modified: 
synapse/trunk/java/modules/transports/core/vfs/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/vfs/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java?rev=1504582&r1=1504581&r2=1504582&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/vfs/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/vfs/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java
 Thu Jul 18 18:25:03 2013
@@ -288,35 +288,40 @@ public class VFSTransportListener extend
                         if (entry.getMoveAfterMoveFailure() != null) {
                             isFailedRecord = isFailedRecord(child, entry);
                         }
-                        if (log.isDebugEnabled()) {
-                            log.debug("Matching file : " + 
child.getName().getBaseName());
-                        }
-                        if ((entry.getFileNamePattern() != null) && (
-                                
child.getName().getBaseName().matches(entry.getFileNamePattern()))
-                                && (!entry.isFileLockingEnabled() || 
(entry.isFileLockingEnabled()
-                                && VFSUtils.acquireLock(fsManager, child))) &&
-                                !isFailedRecord) {
-                            try {
-                                if (log.isDebugEnabled()) {
-                                    log.debug("Processing file :" + child);
-                                }
-                                processFile(entry, child);
-                                successCount++;
-                                // tell moveOrDeleteAfterProcessing() file was 
success
-                                
entry.setLastPollState(PollTableEntry.SUCCSESSFUL);
-                                metrics.incrementMessagesReceived();
-
-                            } catch (Exception e) {
-                                logException("Error processing File URI : " + 
child.getName(), e);
-                                failCount++;
-                                // tell moveOrDeleteAfterProcessing() file 
failed
-                                entry.setLastPollState(PollTableEntry.FAILED);
-                                metrics.incrementFaultsReceiving();
+
+                        if (entry.getFileNamePattern() != null &&
+                                
child.getName().getBaseName().matches(entry.getFileNamePattern())){
+                            //child's file name matches the file name pattern
+                            //now we try to get the lock and process
+                            if (log.isDebugEnabled()) {
+                                log.debug("Matching file : " + 
child.getName().getBaseName());
                             }
 
-                              try {
+                            if ((!entry.isFileLockingEnabled()
+                                    || (entry.isFileLockingEnabled() && 
VFSUtils.acquireLock(fsManager, child)))
+                                    && !isFailedRecord){
+                                //process the file
+                                try {
+                                    if (log.isDebugEnabled()) {
+                                        log.debug("Processing file :" + child);
+                                    }
+                                    processFile(entry, child);
+                                    successCount++;
+                                    // tell moveOrDeleteAfterProcessing() file 
was success
+                                    
entry.setLastPollState(PollTableEntry.SUCCSESSFUL);
+                                    metrics.incrementMessagesReceived();
+
+                                } catch (Exception e) {
+                                    logException("Error processing File URI : 
" + child.getName(), e);
+                                    failCount++;
+                                    // tell moveOrDeleteAfterProcessing() file 
failed
+                                    
entry.setLastPollState(PollTableEntry.FAILED);
+                                    metrics.incrementFaultsReceiving();
+                                }
+
+                                try {
                                     moveOrDeleteAfterProcessing(entry, child);
-                              } catch (AxisFault axisFault) {
+                                } catch (AxisFault axisFault) {
                                     logException("File object '" + 
child.getURL().toString() +
                                             "'cloud not be moved", axisFault);
                                     failCount++;
@@ -324,17 +329,22 @@ public class VFSTransportListener extend
                                     String timeStamp =
                                             
VFSUtils.getSystemTime(entry.getFailedRecordTimestampFormat());
                                     addFailedRecord(entry, child, timeStamp);
-                              }
-                              if (entry.isFileLockingEnabled()) {
-                                VFSUtils.releaseLock(fsManager, child);
+                                } finally {
+                                    // if there is a failure or not we'll try 
to release the lock
+                                    if (entry.isFileLockingEnabled()) {
+                                        VFSUtils.releaseLock(fsManager, child);
+                                    }
+                                }
+                            }
+                        } else if (entry.getFileNamePattern()!= null &&
+                                
!child.getName().getBaseName().matches(entry.getFileNamePattern())){
+                            //child's file name does not match the file name 
pattern
+                            if (log.isDebugEnabled()) {
+                                log.debug("Non-Matching file : " + 
child.getName().getBaseName());
                             }
-                        } else if (!(!entry.isFileLockingEnabled() || 
(entry.isFileLockingEnabled()
-                                && VFSUtils.acquireLock(fsManager, 
fileObject))) &&
-                                log.isDebugEnabled()) {
-                            log.debug("Couldn't get the lock for processing 
the file : "
-                                    + child.getName());
                         } else if(isFailedRecord){
-                              if (entry.isFileLockingEnabled()) {
+                            //it is a failed record
+                            if (entry.isFileLockingEnabled()) {
                                 VFSUtils.releaseLock(fsManager, child);
                                 VFSUtils.releaseLock(fsManager, fileObject);
                             }
@@ -348,7 +358,6 @@ public class VFSTransportListener extend
                                         "process");
                             }
                         }
-
                     }
 
                     if (failCount == 0 && successCount > 0) {


Reply via email to