Skip to content
Commit 56365a33 authored by michael.berlin.xtreemfs@gmail.com's avatar michael.berlin.xtreemfs@gmail.com
Browse files

server: OSD Stage: Do not drop internal requests in case the stage is...

server: OSD Stage: Do not drop internal requests in case the stage is overloaded. Otherwise the stages may run into a deadlock in case they put another request in the stage's queue. The put would block due to the full stage while the processing of the current request waits for the return of the put().

Here's an excerpt from the stack trace dump which shows this issue:

thread: OSD PreProcSt
org.xtreemfs.osd.stages.PreprocStage.run(PreprocStage.java:324)
org.xtreemfs.osd.stages.PreprocStage.checkOpenFileTable(PreprocStage.java:372)
org.xtreemfs.osd.operations.EventCloseFile.startInternalEvent(EventCloseFile.java:61)
org.xtreemfs.osd.stages.StorageStage.flushCaches(StorageStage.java:139)
org.xtreemfs.osd.stages.StorageStage.enqueueOperation(StorageStage.java:221)
org.xtreemfs.osd.stages.StorageStage.enqueueOperation(StorageStage.java:237)
org.xtreemfs.osd.stages.Stage.enqueueOperation(Stage.java:87)
java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:254)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
sun.misc.Unsafe.park(Native Method)

thread: OSD StThr 0
org.xtreemfs.osd.stages.Stage.run(Stage.java:134)
org.xtreemfs.osd.storage.StorageThread.processMethod(StorageThread.java:125)
org.xtreemfs.osd.storage.StorageThread.processFlushCaches(StorageThread.java:247)
org.xtreemfs.osd.operations.EventCloseFile$1.cachesFlushed(EventCloseFile.java:71)
org.xtreemfs.osd.operations.EventCloseFile.createNewVersion(EventCloseFile.java:124)
org.xtreemfs.osd.stages.StorageStage.createFileVersion(StorageStage.java:191)
org.xtreemfs.osd.stages.StorageStage.enqueueOperation(StorageStage.java:221)
org.xtreemfs.osd.stages.StorageStage.enqueueOperation(StorageStage.java:237)
org.xtreemfs.osd.stages.Stage.enqueueOperation(Stage.java:87)
java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:254)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
sun.misc.Unsafe.park(Native Method)

git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@3333 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534
parent 2b0be26a
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment