You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2007/12/06 20:59:51 UTC
svn commit: r601836 -
/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java
Author: vgritsenko
Date: Thu Dec 6 11:59:47 2007
New Revision: 601836
URL: http://svn.apache.org/viewvc?rev=601836&view=rev
Log:
better, more informative debug messages.
returned boolean value was not used, switching to void return value.
Modified:
cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java
Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java?rev=601836&r1=601835&r2=601836&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java (original)
+++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java Thu Dec 6 11:59:47 2007
@@ -168,8 +168,9 @@
protected boolean waitForLock(Object key) {
if (transientStore != null) {
+ final String lockKey = PIPELOCK_PREFIX + key;
+
// Get a lock object from the store
- String lockKey = PIPELOCK_PREFIX + key;
Object lock;
synchronized (transientStore) {
lock = transientStore.get(lockKey);
@@ -177,20 +178,22 @@
// Avoid deadlock with self (see JIRA COCOON-1985).
if (lock != null && lock != Thread.currentThread()) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Waiting on Lock '" + lockKey + "'");
+ }
+
try {
- // become owner of monitor
synchronized (lock) {
lock.wait();
}
- } catch (InterruptedException e) {
+
if (getLogger().isDebugEnabled()) {
- getLogger().debug("Interrupted waiting for other pipeline to finish processing, retrying...", e);
+ getLogger().debug("Notified on Lock '" + lockKey + "'");
}
- return false;
- }
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Other pipeline finished processing, retrying to get cached response.");
+ } catch (InterruptedException e) {
+ /* ignored */
}
+
return false;
}
}
@@ -199,75 +202,61 @@
}
/**
- * makes the lock (instantiates a new object and puts it into the store)
+ * Makes the lock (instantiates a new object and puts it into the store)
*/
- protected boolean generateLock(Object key) {
- boolean succeeded = true;
-
+ protected void generateLock(Object key) {
if (transientStore != null && key != null) {
- String lockKey = PIPELOCK_PREFIX + key;
+ final String lockKey = PIPELOCK_PREFIX + key;
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Adding Lock '" + lockKey + "'");
+ }
synchronized (transientStore) {
if (transientStore.containsKey(lockKey)) {
- succeeded = false;
if (getLogger().isDebugEnabled()) {
- getLogger().debug("Lock already present in the store!");
+ getLogger().debug("Lock EXISTS: '" + lockKey + "'");
}
} else {
Object lock = Thread.currentThread();
try {
transientStore.store(lockKey, lock);
} catch (IOException e) {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Could not put lock in the store!", e);
- }
- succeeded = false;
+ /* should not happen */
}
}
}
}
-
- return succeeded;
}
/**
- * releases the lock (notifies it and removes it from the store)
+ * Releases the lock (notifies it and removes it from the store)
*/
- protected boolean releaseLock(Object key) {
- boolean succeeded = true;
-
+ protected void releaseLock(Object key) {
if (transientStore != null && key != null) {
- String lockKey = PIPELOCK_PREFIX + key;
+ final String lockKey = PIPELOCK_PREFIX + key;
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Releasing Lock '" + lockKey + "'");
+ }
Object lock = null;
synchronized (transientStore) {
if (!transientStore.containsKey(lockKey)) {
- succeeded = false;
if (getLogger().isDebugEnabled()) {
- getLogger().debug("Lock not present in the store!");
+ getLogger().debug("Lock MISSING: '" + lockKey + "'");
}
} else {
- try {
- lock = transientStore.get(lockKey);
- transientStore.remove(lockKey);
- } catch (Exception e) {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Could not get lock from the store!", e);
- }
- succeeded = false;
- }
+ lock = transientStore.get(lockKey);
+ transientStore.remove(lockKey);
}
}
- if (succeeded && lock != null) {
- // become monitor owner
+ if (lock != null) {
+ // Notify everybody who's waiting
synchronized (lock) {
lock.notifyAll();
}
}
}
-
- return succeeded;
}
/**