You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2012/11/08 09:48:26 UTC

svn commit: r1406957 - in /camel/branches/camel-2.10.x: ./ camel-core/src/main/java/org/apache/camel/ camel-core/src/main/java/org/apache/camel/component/file/strategy/ camel-core/src/test/java/org/apache/camel/component/file/strategy/

Author: ningjiang
Date: Thu Nov  8 08:48:26 2012
New Revision: 1406957

URL: http://svn.apache.org/viewvc?rev=1406957&view=rev
Log:
CAMEL-5776 Fixed the issue that .camelLock is deleted by another camel instance

Merged revisions 1406948,1406952 via svnmerge from 
https://svn.apache.org/repos/asf/camel/trunk

........
  r1406948 | ningjiang | 2012-11-08 16:22:38 +0800 (Thu, 08 Nov 2012) | 1 line
  
  CAMEL-5776 Fixed the issue that .camelLock is deleted by another camel instance
........
  r1406952 | ningjiang | 2012-11-08 16:36:27 +0800 (Thu, 08 Nov 2012) | 1 line
  
  CAMEL-5776 Polished the exchange property name as Claus suggested
........

Added:
    camel/branches/camel-2.10.x/camel-core/src/test/java/org/apache/camel/component/file/strategy/MarkerFileExclusiveReadLockStrategyReadLockFailedTest.java
      - copied unchanged from r1406952, camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/strategy/MarkerFileExclusiveReadLockStrategyReadLockFailedTest.java
Modified:
    camel/branches/camel-2.10.x/   (props changed)
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/Exchange.java
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/strategy/MarkerFileExclusiveReadLockStrategy.java

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1406948-1406952

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/Exchange.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/Exchange.java?rev=1406957&r1=1406956&r2=1406957&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/Exchange.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/Exchange.java Thu Nov  8 08:48:26 2012
@@ -120,6 +120,7 @@ public interface Exchange {
     String FILE_PARENT          = "CamelFileParent";
     String FILE_LAST_MODIFIED   = "CamelFileLastModified";
     String FILTER_MATCHED       = "CamelFilterMatched";
+    String FILE_LOCK_FILE_ACQUIRED   = "CamelFileLockFileAcquired"; 
 
     String GROUPED_EXCHANGE = "CamelGroupedExchange";
     

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/strategy/MarkerFileExclusiveReadLockStrategy.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/strategy/MarkerFileExclusiveReadLockStrategy.java?rev=1406957&r1=1406956&r2=1406957&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/strategy/MarkerFileExclusiveReadLockStrategy.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/strategy/MarkerFileExclusiveReadLockStrategy.java Thu Nov  8 08:48:26 2012
@@ -52,6 +52,7 @@ public class MarkerFileExclusiveReadLock
         // create a plain file as marker filer for locking (do not use FileLock)
         File lock = new File(lockFileName);
         boolean acquired = lock.createNewFile();
+        exchange.setProperty(Exchange.FILE_LOCK_FILE_ACQUIRED, acquired);
 
         return acquired;
     }
@@ -60,11 +61,14 @@ public class MarkerFileExclusiveReadLock
                                          GenericFile<File> file, Exchange exchange) throws Exception {
         String lockFileName = getLockFileName(file);
         File lock = new File(lockFileName);
-
-        LOG.trace("Unlocking file: {}", lockFileName);
-
-        boolean deleted = FileUtil.deleteFile(lock);
-        LOG.trace("Lock file: {} was deleted: {}", lockFileName, deleted);
+        // only release the file if camel get the lock before
+        if (exchange.getProperty(Exchange.FILE_LOCK_FILE_ACQUIRED, false, Boolean.class)) {
+            LOG.trace("Unlocking file: {}", lockFileName);
+            boolean deleted = FileUtil.deleteFile(lock);
+            LOG.trace("Lock file: {} was deleted: {}", lockFileName, deleted);
+        } else {
+            LOG.trace("Don't try to delete the Lock file: {} as camel doesn't get to lock before.", lockFileName);
+        }
     }
 
     public void setTimeout(long timeout) {