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
Loading
Please sign in to comment