geldata / geldata/gel-python

Forking process with edgedb connection is dangerous

Open
#144 4 comments 0 reactions 1 assignee Claimed by @tailhook View on GitHub
bug high priority
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.