Skip to content

Scanner uses too many connections #169

@wiz78

Description

@wiz78

It seems like it exceeds the connection limit and dies. There should be a configurable limit to the number of connections it's allowed to create, and it should close them as soon as they're not needed anymore. Here's an example stacktrace (db is postgresql) after scanning 239 files:

Traceback (most recent call last):
  File "/usr/local/bin/supysonic-cli", line 11, in <module>
    load_entry_point('supysonic==0.4.1', 'console_scripts', 'supysonic-cli')()
  File "/usr/local/lib/python3.6/dist-packages/supysonic/cli.py", line 408, in main
    cli = SupysonicCLI(config)
  File "/usr/local/lib/python3.6/dist-packages/supysonic/cli.py", line 91, in __init__
    self.__daemon = DaemonClient(config.DAEMON["socket"])
  File "/usr/local/lib/python3.6/dist-packages/supysonic/daemon/client.py", line 76, in __init__
    self.__key = get_secret_key("daemon_key")
  File "<string>", line 2, in get_secret_key
  File "/usr/local/lib/python3.6/dist-packages/pony/orm/core.py", line 528, in new_func
    result = func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/supysonic/utils.py", line 23, in get_secret_key
    key = b64decode(Meta[keyname].value)
  File "/usr/local/lib/python3.6/dist-packages/pony/orm/core.py", line 3939, in __getitem__
    return entity._find_one_(kwargs)
  File "/usr/local/lib/python3.6/dist-packages/pony/orm/core.py", line 4058, in _find_one_
    if obj is None: obj = entity._find_in_db_(avdict, unique, for_update, nowait, skip_locked)
  File "/usr/local/lib/python3.6/dist-packages/pony/orm/core.py", line 4117, in _find_in_db_
    cursor = database._exec_sql(sql, arguments)
  File "/usr/local/lib/python3.6/dist-packages/pony/orm/core.py", line 938, in _exec_sql
    connection = cache.prepare_connection_for_query_execution()
  File "/usr/local/lib/python3.6/dist-packages/pony/orm/core.py", line 1797, in prepare_connection_for_query_execution
    if connection is None: connection = cache.connect()
  File "/usr/local/lib/python3.6/dist-packages/pony/orm/core.py", line 1761, in connect
    connection, is_new_connection = provider.connect()
  File "<string>", line 2, in connect
  File "/usr/local/lib/python3.6/dist-packages/pony/orm/dbapiprovider.py", line 61, in wrap_dbapi_exceptions
    raise OperationalError(e)
pony.orm.dbapiprovider.OperationalError: FATALE:  i rimanenti slot di connessione sono riservati a connessioni di superutenti non di replica

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions