SeasideSt / Seaside

The framework for developing sophisticated web applications in Smalltalk.
MIT License
519 stars 71 forks source link

Remove environment restore workaround for partial continuations in Gemstone when possible #1206

Open jbrichau opened 4 years ago

jbrichau commented 4 years ago

In https://github.com/SeasideSt/Seaside/issues/1198, it was discovered that the change in implementation of WADynamicVariable was incorrect because of a missing feature in the implementation of partial continuations in Gemstone: the Process environment of the original continuation is not restored in the Process environment where the continuation is restored into (see https://github.com/SeasideSt/Seaside/issues/1198#issuecomment-632403804).

We implemented a workaround to restore the Process environment in the Seaside code in GRPlatform>>seasideSuspendFlowDo:, WAPartialContinuation>>value: and the class WAGemStoneProcessEnvironmentWrapper (see https://github.com/SeasideSt/Seaside/commit/248af87258b5763817d9e8fe93539fa7141381ed) An alternative was to revert WADynamicVariable to GRNotificationBasedDynamicVariable.

When future versions of GemStone support restoring the Process environment when restoring partial continuations, we should remove this workaround.

jbrichau commented 4 years ago

Dale submitted an internal issue to track: https://github.com/SeasideSt/Seaside/issues/1198#issuecomment-651963761 Once that is solved, we can remove this workaround.