igorcoding / asynctnt

A fast Tarantool Database connector for Python/asyncio.

Home Page:https://igorcoding.github.io/asynctnt

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Space '281' does not exist

bofm opened this issue · comments

commented

This happens when trying to connect to a Tarantool instance, which has not finished replication initialisation but has already started listening the socket.

# Python 3.7
# MacOS + Docker for Mac 18.06.0-ce-mac70 (26399)
# pip isntall asynctnt

import asynctnt
import asyncio
import threading
import os
import time


def t():
    time.sleep(0.2)
    os.system(
        'docker run --rm --name tt -d -p 3301:3301 -e "TARANTOOL_REPLICATION=localhost:3301,x:1" tarantool/tarantool:1.10.0'
    )


async def main():
    threading.Thread(target=t, daemon=True).start()
    c = asynctnt.Connection(reconnect_timeout=1, connect_timeout=10, request_timeout=1)
    await c.connect()


try:
    asyncio.run(main())
finally:
    os.system('docker logs tt')
    os.system('docker rm -fv tt')
$ python test.py
Connect to Tarantool[127.0.0.1:3301] failed: ConnectionRefusedError(61, "Connect call failed ('127.0.0.1', 3301)"). Retrying in 1.000000 seconds
455328f55d06caa8bcc85b4d07b0755c3af252d483f6295b0607ef9c6cdfe1d6
Tarantool[127.0.0.1:3301] Schema fetch failed: (36, "Space '281' does not exist")
Creating configuration file: /etc/tarantool/config.yml
Config:
---
pid_file: /var/run/tarantool/tarantool.pid
wal_dir: /var/lib/tarantool
listen: 3301
replication:
- localhost:3301
- x:1
vinyl_dir: /var/lib/tarantool
memtx_dir: /var/lib/tarantool
...

2018-08-07 17:06:39.149 [1] main/101/tarantool-entrypoint.lua C> Tarantool 1.10.0-0-g42612ec04
2018-08-07 17:06:39.149 [1] main/101/tarantool-entrypoint.lua C> log level 5
2018-08-07 17:06:39.150 [1] main/101/tarantool-entrypoint.lua I> mapping 268435456 bytes for memtx tuple arena...
2018-08-07 17:06:39.150 [1] main/101/tarantool-entrypoint.lua I> mapping 134217728 bytes for vinyl tuple arena...
2018-08-07 17:06:39.151 [1] iproto/101/main I> binary: bound to 0.0.0.0:3301
2018-08-07 17:06:39.152 [1] main/104/applier/localhost:3301 I> remote master is 1.10.0 at 127.0.0.1:3301

2018-08-07 17:06:39.158 [1] main/105/applier/x:1 I> can't connect to master
2018-08-07 17:06:39.159 [1] main/105/applier/x:1 coio_task.c:407 !> SystemError getaddrinfo: Name does not resolve: I/O error
2018-08-07 17:06:39.159 [1] main/105/applier/x:1 I> will retry every 1.00 second
tt
Traceback (most recent call last):
  File "test.py", line 26, in <module>
    asyncio.run(main())
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/runners.py", line 43, in run
    return loop.run_until_complete(main)
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py", line 568, in run_until_complete
    return future.result()
  File "test.py", line 22, in main
    await c.connect()
  File "/.virtualenvs/venv-6AWFJD6r/lib/python3.7/site-packages/asynctnt/connection.py", line 289, in connect
    await self.__create_reconnect_coro(True)
  File "/.virtualenvs/venv-6AWFJD6r/lib/python3.7/site-packages/asynctnt/connection.py", line 259, in _connect
    raise e
  File "/.virtualenvs/venv-6AWFJD6r/lib/python3.7/site-packages/asynctnt/connection.py", line 235, in _connect
    await connected_fut
  File "asynctnt/iproto/db.pyx", line 43, in execute
  File "asynctnt/iproto/db.pyx", line 32, in asynctnt.iproto.protocol.Db.execute
asynctnt.exceptions.TarantoolDatabaseError: (36, "Space '281' does not exist")
commented

This might be a Tarantool bug. Need to check that.