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) {