-
Notifications
You must be signed in to change notification settings - Fork 8
GRGemStonePlatform>>saveLogEntry:shouldCommit: not always safe #64
Description
See this post by @obi068 where a mechanism for The object aGsSocket that has some associated session state has lost that transient state. Examples of classes that use session state are GsSocket and GsFile. was described ...
Basically it seems that the call in GRGemStonePlatform>>seasideProcessRequestWithRetry:resultBlock: on commit conflict:
self doCommitTransaction
ifFalse: [
| conflicts |
conflicts := System transactionConflicts.
self doAbortTransaction.
self
saveLogEntry:
(WAObjectLogEntry
warn: 'Commit failure - retrying'
request: aNativeRequest
object: conflicts)
shouldCommit: true.
^ nil "retry request" ].may persist a GsSocket instance ... it looks like the aNativeRequest for FastCGI does have an instance variable that can reference the GsSocket instance (several layers in ) ...
@obi068 fix was to unconditionally skip the commit, which is a valid workaround, but it would be nice if we could commit the object log entry and make the commit conflict information available in the object log ... best to not HAVE to scan gem logs for errors ...