Forking process with edgedb connection is dangerous
- Dominant language
- Python
- Stars
- 415
- Forks
- 50
- PR merge metrics
- No merged PRs in 30d
Description
In particular, if connection is used in both forks, it looks like this:
```
Error on request:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/werkzeug/serving.py", line 323, in run_wsgi
execute(self.server.app)
File "/usr/local/lib/python3.6/dist-packages/werkzeug/serving.py", line 312, in execute
application_iter = app(environ, start_response)
File "/usr/local/lib/python3.6/dist-packages/werkzeug/wrappers/base_request.py", line 238, in application
resp = f(*args[:-2] + (request,))
File "/work/serve_py_sync/main.py", line 48, in application
return ROUTES[endpoint](request, **values)
File "/work/serve_py_sync/main.py", line 39, in increment
""", name=name)
File "/usr/local/lib/python3.6/dist-packages/edgedb/blocking_con.py", line 117, in query_one
io_format=protocol.IoFormat.BINARY,
File "edgedb/protocol/blocking_proto.pyx", line 91, in edgedb.protocol.blocking_proto.BlockingIOProtocol.sync_execute_anonymous
File "edgedb/protocol/blocking_proto.pyx", line 77, in edgedb.protocol.blocking_proto.BlockingIOProtocol._iter_coroutine
File "edgedb/protocol/protocol.pyx", line 588, in execute_anonymous
File "edgedb/protocol/protocol.pyx", line 269, in _parse
File "edgedb/protocol/protocol.pyx", line 1057, in edgedb.protocol.protocol.SansIOProtocol.fallthrough
edgedb.errors.ProtocolError: unexpected message type 'T'Error on request:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/werkzeug/serving.py", line 323, in run_wsgi
execute(self.server.app)
File "/usr/local/lib/python3.6/dist-packages/werkzeug/serving.py", line 312, in execute
application_iter = app(environ, start_response)
File "/usr/local/lib/python3.6/dist-packages/werkzeug/wrappers/base_request.py", line 238, in application
resp = f(*args[:-2] + (request,))
File "/work/serve_py_sync/main.py", line 48, in application
return ROUTES[endpoint](request, **values)
File "/work/serve_py_sync/main.py", line 39, in increment
""", name=name)
File "/usr/local/lib/python3.6/dist-packages/edgedb/blocking_con.py", line 117, in query_one
io_format=protocol.IoFormat.BINARY,
File "edgedb/protocol/blocking_proto.pyx", line 91, in edgedb.protocol.blocking_proto.BlockingIOProtocol.sync_execute_anonymous
File "edgedb/protocol/blocking_proto.pyx", line 77, in edgedb.protocol.blocking_proto.BlockingIOProtocol._iter_coroutine
File "edgedb/protocol/protocol.pyx", line 588, in execute_anonymous
File "edgedb/protocol/protocol.pyx", line 310, in _parse
File "edgedb/protocol/protocol.pyx", line 1057, in edgedb.protocol.protocol.SansIOProtocol.fallthrough
edgedb.errors.ProtocolError: unexpected message type '1'
```
So the issue is similar to #130.
We may use `os.register_at_fork` to fix this in python3.7.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.