Skip to content

GRGemStonePlatform>>saveLogEntry:shouldCommit: not always safe #64

@dalehenrich

Description

@dalehenrich

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 ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions