[QGIS-Developer] QGIS Server plugins and thread safety
Alessandro Pasotti
apasotti at gmail.com
Sun Nov 19 01:34:16 PST 2017
Hi,
mi recent experiments with multi-threaded python wrappers for QGIS server
showed a critical flaw in my original implementation of the server plugins.
First, I want to stress that this is not a problem in FCGI server
implementation but only if the server is used directly from python in a
multi threaded server implementation.
The problem is that the server interface that exposes the request handler
is a static property of the interface, that is changed on every request.
This means that there is a race condition in setting/accessing the handler
from a plugin filter, and that a plugin filter might access to the handler
for a wrong request.
The solution is to pass the request handler (or the request and/or response
objects depending on the filter) to the plugin filters and leave the
interface for static properties only.
This would be a big API change for the server interface and filters and I'm
not sure we have time/resources to do that now.
As an alternative we could simply document the issue and change the testing
code to create a new server instance to server every request (to be
verified, and with consitent performance degradation).
What's your opinion about this issue?
BTW, tomorrow I'll file a ticket for this problem.
--
Alessandro Pasotti
w3: www.itopen.it
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20171119/ab99410f/attachment.html>
More information about the QGIS-Developer
mailing list