[Glass] WAGsZincStreamingServerAdaptor starts a new session on every request

PAUL DEBRUICKER pdebruic at gmail.com
Mon Jun 20 21:39:44 PDT 2022


Hi Dale, 

In order to be more compliant with HTTP/2 and HTTP/3 I'm messing around with streaming HTTP/1.1 responses from Seaside.  There are some classes there to do it and it works in Pharo but not GemStone because a new session is made with each request.  

I made an issue (https://github.com/SeasideSt/Seaside/issues/1317) and am trying to understand whats happening.  

It looks like the code is identical between the streaming and non-streaming (WAGsZincServerAdaptor) adaptors.  The non-streaming adaptor works great/normally.  The streaming adaptor definitely streams the responses

But for the streaming adaptor, the response "exits" the transaction mutex's #critical: block in GRGemStonePlatform>>#seasideProcessRequestWithRetry:resultBlock: before actually processing the request so the majority of the work is done outside a transaction.  

The streaming adaptor uses a ZnDeferredResponse to hold a block processes the request when the reponse begins being written by the WAComboResponse.  I think thats when the request is processed at least.

Anyway,  any ideas how to get the request processed inside a transaction using the zinc streaming adaptor?  


Thanks

Paul


More information about the Glass mailing list