Skip to content

Commit

Permalink
Fix for issue SeasideSt#71
Browse files Browse the repository at this point in the history
  • Loading branch information
jbrichau committed Jun 6, 2015
1 parent 356860e commit 0d33d2c
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 2 deletions.
Expand Up @@ -15,6 +15,7 @@ seasideProcessRequestWithRetry: aNativeRequest resultBlock: resultBlock
do: [ :ex |
retryRequest := true.
retryException := ex ].
self transactionMutex privateLockingProcess: Processor activeProcess.
retryRequest
ifTrue: [
(retryException isKindOf: SafelyPerformBlockRequiringAbort)
Expand Down
Expand Up @@ -5,4 +5,4 @@
"retryDelays" : "JohanBrichau 04/04/2015 02:48",
"seasideLogServerStart:port:" : "dkh 12/23/2009 14:40",
"seasideProcessRequest:adaptor:resultBlock:" : "JohanBrichau 04/04/2015 03:12",
"seasideProcessRequestWithRetry:resultBlock:" : "dkh 05/31/2011 13:59" } }
"seasideProcessRequestWithRetry:resultBlock:" : "JohanBrichau 06/06/2015 02:48" } }
@@ -0,0 +1,6 @@
*seaside-gemstone-core
privateLockingProcess: aProcess
"This method is private to the Seaside core implementation.
It exists only because Seaside's call/answer implementation in Gemstone manipulates processes, eventually leading to a change in the reified process object for the process, even though the process itself is the same. In such a case, when a recursive entry is made to critical section protected by the lock, the entry will be blocked (because the Process instance in the lockingProcess instvar is no longer the same as the reified Process instance for the active process) and a deadlock occurs. See more info at https://github.com/GsDevKit/Seaside31/issues/71"
lockingProcess := aProcess
@@ -0,0 +1,5 @@
{
"class" : {
},
"instance" : {
"privateLockingProcess:" : "JohanBrichau 06/06/2015 02:37" } }
@@ -0,0 +1,2 @@
{
"name" : "TransientRecursionLock" }

Large diffs are not rendered by default.

0 comments on commit 0d33d2c

Please sign in to comment.